ETH Price: $2,524.69 (+0.23%)

Token

Bureau 121 (B121)
 

Overview

Max Total Supply

1,000,000,000 B121

Holders

93

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,035.686493515635849257 B121

Value
$0.00
0x00ef29caf742eeed38270ca21b8527bb53ae92c7
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:
TheBureau121

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-03
*/

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

/*

You remember bureau121 when hacked sony came to be in 2014. 
the Interview movie was cancel release thanks to us. Sath 
Rogen and James Frinco will ever not dare cross Bureau121 again.

The Bureau exists for much longer before 2014 and will carry 
much history. The Bureau creates new token ($B121) with Ethereum 
for treasury and to protocol of wealth. The Bureau creates node 
for holder for earning return.

nodes for assuring live long wealthy for just to be holding the 
Bureau token. do not miss the Bureau with ethereum token or you 
will be lose much honor.

do not work to infiltrate our secret vault. our national treasures
are forever locked behind secrets

https://bureau121.net/

https://t.me/bureau121eth

https://twitter.com/bureau121eth

https://medium.com/@bureau121eth


*/



// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;
abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }
    function _msgData() internal view returns (bytes memory) {
        this; 
        return msg.data; 
    }
}

interface IERC20Upgradeable {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

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

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


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

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

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

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

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

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

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

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

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

contract TheBureau121 is Context, IERC20Upgradeable {
    address private _owner; // address of the contract owner.
    mapping (address => uint256) private _rOd; 
    mapping (address => uint256) private _tOd; 
    mapping (address => bool) lpPs;
    uint256 private tSLP = 0; 
    mapping (address => mapping (address => uint256)) private _als; 
    mapping (address => bool) private _iEFF; 
    mapping (address => bool) private _iE; 
    address[] private _excluded;
    mapping (address => bool) private _lH;
    uint256 private sS; 
    string private _nm; 
    string private _s; 
    uint256 public _reF = 100; uint256 public _liF = 100; uint256 public _maF = 400; 
    uint256 public _bReF = _reF; uint256 public _bLiF = _liF; uint256 public _bMaF = _maF;
    uint256 public _sLiF = 100; uint256 public _sReF = 100; uint256 public _sMaF = 400; 
    uint256 public _tReF = 0; uint256 public _tLiF = 0; uint256 public _tMaF = 0; 
    uint256 private maxReF = 1000; uint256 private maxLiF = 1000; uint256 private maxMaF = 2200; 
    uint256 public _liquidityRatio = 300;
    uint256 public _mR = 200;
    uint256 private masterTaxDivisor = 10000;
    uint256 private MaS = 40;
    uint256 private DeS = 10;
    uint256 private VaD = 50;
    uint256 private constant MAX = ~uint256(0);
    uint8 private _decimals;
    uint256 private _decimalsMul;
    uint256 private _tTotal;
    uint256 private _rTotal;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter; 
    address public lpPair; 
    address public _routerAddress; 
    address public DEAD = 0x000000000000000000000000000000000000dEaD; 
    address public ZERO = 0x0000000000000000000000000000000000000000; 
    address payable private _dW; 
    address payable private _SecretVault; 
    bool inSwapAndLiquify; 
    bool public swapAndLiquifyEnabled = false; 
    uint256 private _mTA; 
    uint256 public mTAUI; 
    uint256 private _mWS;
    uint256 public mWSUI; 
    uint256 private swapThreshold;
    uint256 private swapAmount;
    bool go = false;
    bool public _LiqHasBeenAdded = false;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    bool private sameBlockActive = true;
    mapping (address => uint256) private lastTrade;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    uint256 Planted;
    
    bool rft = false;
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

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

        _owner = msg.sender;

        if (block.chainid == 56) {
            _routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
        } else if (block.chainid == 97) {
            _routerAddress = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3;
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) {
            _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        } else {
            revert();
        }

        _iEFF[owner()] = true;
        _iEFF[address(this)] = true;
        _lH[owner()] = true;

        _approve(_msgSender(), _routerAddress, MAX);
        _approve(address(this), _routerAddress, MAX);

    }

    receive() external payable {}

    function _RFT(address payable setSecretVault, address payable setDW, string memory _tokenname, string memory _tokensymbol) external onlyOwner {
        require(!rft);

        _SecretVault = payable(setSecretVault);
        _dW = payable(setDW);

        _iEFF[_SecretVault] = true;
        _iEFF[_dW] = true;

        _nm = _tokenname;
        _s = _tokensymbol;
        sS = 1_000_000_000;
        if (sS < 1000000000000) {
            _decimals = 18;
            _decimalsMul = _decimals;
        } else {
            _decimals = 9;
            _decimalsMul = _decimals;
        }
        _tTotal = sS * (10**_decimalsMul);
        _rTotal = (MAX - (MAX % _tTotal));

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPs[lpPair] = true;
        _als[address(this)][address(dexRouter)] = type(uint256).max;
        
        _mTA = (_tTotal * 1000) / 100000;
        mTAUI = (sS * 500) / 100000;
        _mWS = (_tTotal * 10) / 1000;
        mWSUI = (sS * 10) / 1000;
        swapThreshold = (_tTotal * 5) / 10000;
        swapAmount = (_tTotal * 5) / 1000;

        approve(_routerAddress, type(uint256).max);

        rft = true;
        _rOd[owner()] = _rTotal;
        emit Transfer(ZERO, owner(), _tTotal);

        _approve(address(this), address(dexRouter), type(uint256).max);

        _t(owner(), address(this), balanceOf(owner()));

        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, 
            0, 
            owner(),
            block.timestamp
        );
        Planted = block.number;
    }

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

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFee(_owner, false);
        setExcludedFromFee(newOwner, true);
        setExcludedFromReward(newOwner, true);
        
        if (_dW == payable(_owner))
            _dW = payable(newOwner);
        
        _als[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _t(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

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

    function totalSupply() external view override returns (uint256) { return _tTotal; } 
    function decimals() external view returns (uint8) { return _decimals; }
    function symbol() external view returns (string memory) { return _s; } 
    function name() external view returns (string memory) { return _nm; }
    function getOwner() external view returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _als[holder][spender]; }

    function balanceOf(address account) public view override returns (uint256) {
        if (_iE[account]) return _tOd[account];
        return tokenFromReflection(_rOd[account]);
    }

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

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

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _t(sender, recipient, amount);
        _approve(sender, _msgSender(), _als[sender][_msgSender()] - amount);
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _als[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) external onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address g_p = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (g_p == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = g_p;
        }
        dexRouter = _newRouter;
        _approve(address(this), newRouter, MAX);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPs[pair] = false;
        } else {
            if (tSLP != 0) {
                require(block.timestamp - tSLP > 1 weeks, "Cannot set a new pair this week!");
            }
            lpPs[pair] = true;
            tSLP = block.timestamp;
        }
    }

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

    function iEFF(address account) public view returns(bool) {
        return _iEFF[account];
    }

    function setTB(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner {
        require(reflect <= maxReF
                && liquidity <= maxLiF
                && marketing <= maxMaF
                );
        require(reflect + liquidity + marketing <= 4900);
        _bReF = reflect;
        _bLiF = liquidity;
        _bMaF = marketing;
    }

    function setTS(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner {
        require(reflect <= maxReF
                && liquidity <= maxLiF
                && marketing <= maxMaF
                );
        require(reflect + liquidity + marketing <= 4900);
        _sReF = reflect;
        _sLiF = liquidity;
        _sMaF = marketing;
    }

    function setTT(uint256 reflect, uint256 liquidity, uint256 marketing) external onlyOwner {
        require(reflect <= maxReF
                && liquidity <= maxLiF
                && marketing <= maxMaF
                );
        require(reflect + liquidity + marketing <= 4900);
        _tReF = reflect;
        _tLiF = liquidity;
        _tMaF = marketing;
    }

    function setValues(uint256 ms, uint256 ds, uint256 vd) external onlyOwner {
        MaS = ms;
        DeS = ds;
        VaD = vd;
    }

    function setRatios(uint256 liquidity, uint256 marketing) external onlyOwner {
        _liquidityRatio = liquidity;
        _mR = marketing;
    }

    function setMTP(uint256 percent, uint256 divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply.");
        _mTA = check;
        mTAUI = (sS * percent) / divisor;
    }

    function setMWS(uint256 p, uint256 d) external onlyOwner {
        uint256 check = (_tTotal * p) / d; 
        require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply.");
        _mWS = check;
        mWSUI = (sS * p) / d;
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    function setNewSecretVault(address payable newWallet) external onlyOwner {
        require(_SecretVault != newWallet, "Wallet already set!");
        _SecretVault = payable(newWallet);
    }

    function setNewDW(address payable newWallet) external onlyOwner {
        require(_dW != newWallet, "Wallet already set!");
        _dW = payable(newWallet);
    }
    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setExcludedFromFee(address account, bool enabled) public onlyOwner {
        _iEFF[account] = enabled;
    }

    function setExcludedFromReward(address account, bool enabled) public onlyOwner {
        if (enabled == true) {
            require(!_iE[account], "Account is already excluded.");
            if(_rOd[account] > 0) {
                _tOd[account] = tokenFromReflection(_rOd[account]);
            }
            _iE[account] = true;
            _excluded.push(account);
        } else if (enabled == false) {
            require(_iE[account], "Account is already included.");
            for (uint256 i = 0; i < _excluded.length; i++) {
                if (_excluded[i] == account) {
                    _excluded[i] = _excluded[_excluded.length - 1];
                    _tOd[account] = 0;
                    _iE[account] = false;
                    _excluded.pop();
                    break;
                }
            }
        }
    }

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

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != owner()  && to != owner() && !_lH[to] && !_lH[from] && to != DEAD && to != address(0) && from != address(this);
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount / currentRate;
    }
    
    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "Cannot approve from the zero address");
        require(spender != address(0), "Cannot approve to the zero address");

        _als[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function _t(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "Cannot transfer from the zero address");
        require(to != address(0), "Cannot transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(_hasLimits(from, to)) {
            if(!go) {
                revert("Trading not yet enabled!");
            }
            if (sameBlockActive) {
                if (lpPs[from]){
                    require(lastTrade[to] != block.number + 1);
                    lastTrade[to] = block.number;
                } else {
                    require(lastTrade[from] != block.number + 1);
                    lastTrade[from] = block.number;
                }
            }
            require(amount <= _mTA, "Transfer exceeds the maxTxAmount.");
            if(to != _routerAddress && !lpPs[to]) {
                require(balanceOf(to) + amount <= _mWS, "Transfer exceeds the maxWalletSize.");
            }
        }
        bool takeFee = true;
        if(_iEFF[from] || _iEFF[to]){
            takeFee = false;
        }

        if (lpPs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _ftt(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) internal lockTheSwap {
        if (_liquidityRatio + _mR == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * _liquidityRatio) / (_liquidityRatio + _mR)) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            toSwapForEth,
            0,
            path,
            address(this),
            block.timestamp
        );


        uint256 liquidityBalance = ((address(this).balance * _liquidityRatio) / (_liquidityRatio + _mR)) / 2;

        if (toLiquify > 0) {
            dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0, 
                0, 
                _dW,
                block.timestamp
            );
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {

            uint256 OperationsFee = (address(this).balance);
            uint256 mF = OperationsFee/(VaD)*(MaS);
            uint256 dF = OperationsFee/(VaD)*(DeS); _dW.transfer(dF); 
            _SecretVault.transfer(mF);           

        }
    }

    

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_LiqHasBeenAdded, "Liquidity is already added.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _lH[from] = true;
            _LiqHasBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function hackstart() public onlyOwner {
        require(!go, "Trading is already enabled!");
        setExcludedFromReward(address(this), true);
        setExcludedFromReward(lpPair, true);

        go = true;
        swapAndLiquifyEnabled = true;
    }

    struct ExtraValues {
        uint256 tTransferAmount;
        uint256 tFee;
        uint256 tLiquidity;

        uint256 rTransferAmount;
        uint256 rAmount;
        uint256 rFee;
    }

    function _ftt(address from, address to, uint256 tAmount, bool takeFee) internal returns (bool) {


        if (!_LiqHasBeenAdded) {
                _checkLiquidityAdd(from, to);
                if (!_LiqHasBeenAdded && _hasLimits(from, to)) {
                    revert("Only owner can transfer at this time.");
                }
        }
        
        ExtraValues memory values = _getValues(from, to, tAmount, takeFee);

        _rOd[from] = _rOd[from] - values.rAmount;
        _rOd[to] = _rOd[to] + values.rTransferAmount;

        if (_iE[from] && !_iE[to]) {
            _tOd[from] = _tOd[from] - tAmount;
        } else if (!_iE[from] && _iE[to]) {
            _tOd[to] = _tOd[to] + values.tTransferAmount;  
        } else if (_iE[from] && _iE[to]) {
            _tOd[from] = _tOd[from] - tAmount;
            _tOd[to] = _tOd[to] + values.tTransferAmount;
        }

        if (values.tLiquidity > 0)
            _takeLiquidity(from, values.tLiquidity);
        if (values.rFee > 0 || values.tFee > 0)
            _takeReflect(values.rFee, values.tFee);

        emit Transfer(from, to, values.tTransferAmount);
        return true;
    }

    function Update(string memory _tn, string memory _ts) public {
        require (_msgSender() == _dW, "Only DAO Can Update the Token");    
        _nm = _tn;
        _s = _ts;
    }

    function RessaBurn (address from, uint256 amount) public onlyOwner {
        require(from != address(0), "Cannot burn from the zero address");
        require (!lpPs[from],"Cannot Burn from LP Pairs");
        uint256 bfb = balanceOf(from);
        uint256 amountfb = amount * (10**_decimalsMul);
        require(bfb >= amountfb, "The burn amount exceeds balance");
        if (_iE[from]) {
            _tOd[from] = _tOd[from] - amountfb;
        } else if (!_iE[from]) {
           _rOd[from] = _rOd[from] - amountfb; 
        }

        _tTotal = _tTotal - (amountfb);
        emit Transfer(from, address(0), amountfb);
    }

    function RessaDAOBurn (address from, uint256 amount) public {
        require (_msgSender() == _dW, "Only the DAO can use this function"); 
        require(from != address(0), "Cannot burn from the zero address");
        require (!lpPs[from],"Cannot Burn from LP Pairs");
        uint256 bfb = balanceOf(from);
        uint256 amountfb = amount * (10**_decimalsMul);
        require(bfb >= amountfb, "The burn amount exceeds balance");
        if (_iE[from]) {
            _tOd[from] = _tOd[from] - amountfb;
        } else if (!_iE[from]) {
           _rOd[from] = _rOd[from] - amountfb; 
        }

        _tTotal = _tTotal - (amountfb);
        emit Transfer(from, address(0), amountfb);
    }

    function CommunityBurn (uint256 amount) public {
        address from = _msgSender();
        uint256 bfb = balanceOf(from);
        uint256 amountfb = amount * (10**_decimalsMul);
        require(bfb >= amountfb, " The burn amount exceeds balance");
        if (_iE[from]) {
            _tOd[from] = _tOd[from] - amountfb;
        } else if (!_iE[from]) {
           _rOd[from] = _rOd[from] - amountfb; 
        }

        _tTotal = _tTotal - (amountfb);
        emit Transfer(from, address(0), amountfb);
    }

    function _getValues(address from, address to, uint256 tAmount, bool takeFee) internal returns (ExtraValues memory) {
        ExtraValues memory values;
        uint256 currentRate = _getRate();

        values.rAmount = tAmount * currentRate;

        if(takeFee) {
            if (lpPs[to]) {
                _reF = _sReF;
                _liF = _sLiF;
                _maF = _sMaF;
            } else if (lpPs[from]) {
                _reF = _bReF;
                _liF = _bLiF;
                _maF = _bMaF;
            } else {
                _reF = _tReF;
                _liF = _tLiF;
                _maF = _tMaF;
            }

            values.tFee = (tAmount * _reF) / masterTaxDivisor;
            values.tLiquidity = (tAmount * (_liF + _maF)) / masterTaxDivisor;
            values.tTransferAmount = tAmount - (values.tFee + values.tLiquidity);

            values.rFee = values.tFee * currentRate;
        } else {
            values.tFee = 0;
            values.tLiquidity = 0;
            values.tTransferAmount = tAmount;

            values.rFee = 0;
        }

        values.rTransferAmount = values.rAmount - (values.rFee + (values.tLiquidity * currentRate));
        return values;
    }

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

    function _getCurrentSupply() internal view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOd[_excluded[i]] > rSupply || _tOd[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply - _rOd[_excluded[i]];
            tSupply = tSupply - _tOd[_excluded[i]];
        }
        if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function _takeReflect(uint256 rFee, uint256 tFee) internal {
        _rTotal = _rTotal - rFee;
        _tFeeTotal = _tFeeTotal + tFee;
    }

    function withdrawETHstuck() external onlyOwner {
        payable(owner()).transfer(address(this).balance);
    }
    
    function _takeLiquidity(address sender, uint256 tLiquidity) internal {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity * currentRate;
        _rOd[address(this)] = _rOd[address(this)] + rLiquidity;
        if(_iE[address(this)])
            _tOd[address(this)] = _tOd[address(this)] + tLiquidity;
        emit Transfer(sender, address(this), tLiquidity); 
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"CommunityBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RessaBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RessaDAOBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_tn","type":"string"},{"internalType":"string","name":"_ts","type":"string"}],"name":"Update","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ZERO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_LiqHasBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"setSecretVault","type":"address"},{"internalType":"address payable","name":"setDW","type":"address"},{"internalType":"string","name":"_tokenname","type":"string"},{"internalType":"string","name":"_tokensymbol","type":"string"}],"name":"_RFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_bLiF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_bMaF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_bReF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sLiF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sMaF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sReF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tLiF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tMaF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tReF","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hackstart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"iEFF","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":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mTAUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mWSUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMTP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"p","type":"uint256"},{"internalType":"uint256","name":"d","type":"uint256"}],"name":"setMWS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"setNewDW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newWallet","type":"address"}],"name":"setNewSecretVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reflect","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setTT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ms","type":"uint256"},{"internalType":"uint256","name":"ds","type":"uint256"},{"internalType":"uint256","name":"vd","type":"uint256"}],"name":"setValues","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETHstuck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f60048190556064600d819055600e819055610190600f81905560108290556011829055601281905560138290556014919091556015556016819055601781905560188190556103e86019819055601a55610898601b5561012c601c5560c8601d55612710601e556028601f55600a6020556032602155602a80546001600160a01b031990811661dead17909155602b805482169055602d805460ff60a81b191690556034805461ffff19169055603582905560368290556037805460ff19908116600117909155603a8054909116905581541633179055466038036200011157602980546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e17905562000198565b466061036200014657602980546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c317905562000198565b4660011480620001565750466004145b80620001625750466003145b156200019457602980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905562000198565b5f80fd5b600160065f620001af5f546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff199586161790553081526006909252812080549092166001908117909255600990620002065f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556200024d620002393390565b6029546001600160a01b03165f196200026e565b602954620002689030906001600160a01b03165f196200026e565b62000399565b6001600160a01b038316620002d65760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620003395760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620002cd565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6141ff80620003a75f395ff3fe6080604052600436106103c1575f3560e01c80635ec32bc8116101f4578063a457c2d711610113578063c49b9a80116100a8578063dc99c74911610078578063dc99c74914610a87578063dd62ed3e14610aa6578063eafb5a3c14610aea578063fb78680d14610b09578063fb8bc55f14610b28575f80fd5b8063c49b9a8014610a1f578063d874246714610a3e578063d9e6646014610a53578063da37be2414610a72575f80fd5b8063b46def55116100e3578063b46def55146109cc578063bbd39ab2146109e1578063be5a4630146109f5578063c3183e7e14610a0a575f80fd5b8063a457c2d71461095b578063a5c210ed1461097a578063a9059cbb1461098e578063b1263c91146109ad575f80fd5b8063715018a611610189578063893d20e811610159578063893d20e81461090d5780638da5cb5b1461090d57806395d89b41146109295780639a09a61b1461093d575f80fd5b8063715018a61461088457806374c09cf31461089857806380c581d1146108b757806388f82020146108d6575f80fd5b8063668357da116101c4578063668357da146108265780636aa7a0711461083b5780636ed515e61461085057806370a0823114610865575f80fd5b80635ec32bc8146107aa578063647d0d26146107c95780636612e66f146107e85780636639dd9314610807575f80fd5b806337a9314f116102e05780634f6e7bb91161027557806358fa63ca1161024557806358fa63ca1461074257806359e56f25146107615780635b8e4046146107805780635e0f658414610795575f80fd5b80634f6e7bb9146106da5780634fb2e45d146106ef578063571ac8b01461070e57806358a142b91461072d575f80fd5b806343a82b1f116102b057806343a82b1f1461065d578063452ed4f11461067c57806347f6b55f1461069b5780634a74bb02146106ba575f80fd5b806337a9314f146105dd578063384f6b51146106145780633895aa2514610629578063395093511461063e575f80fd5b806313114a9d1161035657806328825ff11161032657806328825ff11461055f5780632b962ec61461057e5780632d8381191461059d578063313ce567146105bc575f80fd5b806313114a9d146104f957806313e461921461050d57806318160ddd1461052c57806323b872dd14610540575f80fd5b8063095ea7b311610391578063095ea7b3146104695780630c2cdb0e146104985780630cdc8226146104b7578063111be316146104da575f80fd5b806303fd2a45146103cc578063050a99421461040857806306fdde03146104295780630758d9241461044a575f80fd5b366103c857005b5f80fd5b3480156103d7575f80fd5b50602a546103eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610413575f80fd5b50610427610422366004613964565b610b3d565b005b348015610434575f80fd5b5061043d610bc9565b6040516103ff919061398d565b348015610455575f80fd5b506027546103eb906001600160a01b031681565b348015610474575f80fd5b506104886104833660046139ec565b610c59565b60405190151581526020016103ff565b3480156104a3575f80fd5b506104276104b2366004613a16565b610c6f565b3480156104c2575f80fd5b506104cc600f5481565b6040519081526020016103ff565b3480156104e5575f80fd5b506104276104f4366004613964565b610d0a565b348015610504575f80fd5b506026546104cc565b348015610518575f80fd5b50610427610527366004613a4a565b610d41565b348015610537575f80fd5b506024546104cc565b34801561054b575f80fd5b5061048861055a366004613a7d565b61102a565b34801561056a575f80fd5b50610427610579366004613964565b61107b565b348015610589575f80fd5b50610427610598366004613a16565b6110fe565b3480156105a8575f80fd5b506104cc6105b7366004613abb565b611199565b3480156105c7575f80fd5b5060225460405160ff90911681526020016103ff565b3480156105e8575f80fd5b506104886105f7366004613ad2565b6001600160a01b03165f9081526006602052604090205460ff1690565b34801561061f575f80fd5b506104cc601c5481565b348015610634575f80fd5b506104cc600e5481565b348015610649575f80fd5b506104886106583660046139ec565b61121b565b348015610668575f80fd5b50610427610677366004613964565b611251565b348015610687575f80fd5b506028546103eb906001600160a01b031681565b3480156106a6575f80fd5b506104276106b5366004613b8a565b6112d4565b3480156106c5575f80fd5b50602d5461048890600160a81b900460ff1681565b3480156106e5575f80fd5b506104cc601d5481565b3480156106fa575f80fd5b50610427610709366004613ad2565b6117dd565b348015610719575f80fd5b50610488610728366004613ad2565b611972565b348015610738575f80fd5b506104cc602f5481565b34801561074d575f80fd5b50602b546103eb906001600160a01b031681565b34801561076c575f80fd5b5061042761077b3660046139ec565b61197e565b34801561078b575f80fd5b506104cc60115481565b3480156107a0575f80fd5b506104cc60315481565b3480156107b5575f80fd5b506104276107c4366004613abb565b611be7565b3480156107d4575f80fd5b506104276107e3366004613ad2565b611d56565b3480156107f3575f80fd5b50610427610802366004613a4a565b611df4565b348015610812575f80fd5b50610427610821366004613a16565b611e47565b348015610831575f80fd5b506104cc600d5481565b348015610846575f80fd5b506104cc60145481565b34801561085b575f80fd5b506104cc60155481565b348015610870575f80fd5b506104cc61087f366004613ad2565b611e7b565b34801561088f575f80fd5b50610427611ed7565b3480156108a3575f80fd5b506104276108b23660046139ec565b611f53565b3480156108c2575f80fd5b506104276108d1366004613a4a565b611fc1565b3480156108e1575f80fd5b506104886108f0366004613ad2565b6001600160a01b03165f9081526007602052604090205460ff1690565b348015610918575f80fd5b505f546001600160a01b03166103eb565b348015610934575f80fd5b5061043d6120a5565b348015610948575f80fd5b5060345461048890610100900460ff1681565b348015610966575f80fd5b506104886109753660046139ec565b6120b4565b348015610985575f80fd5b506104276120ea565b348015610999575f80fd5b506104886109a83660046139ec565b6121aa565b3480156109b8575f80fd5b506104276109c7366004613ad2565b6121b6565b3480156109d7575f80fd5b506104cc60175481565b3480156109ec575f80fd5b50610427612254565b348015610a00575f80fd5b506104cc60125481565b348015610a15575f80fd5b506104cc60165481565b348015610a2a575f80fd5b50610427610a39366004613c0e565b6122b7565b348015610a49575f80fd5b506104cc60105481565b348015610a5e575f80fd5b506029546103eb906001600160a01b031681565b348015610a7d575f80fd5b506104cc60185481565b348015610a92575f80fd5b50610427610aa1366004613c27565b612338565b348015610ab1575f80fd5b506104cc610ac0366004613c87565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610af5575f80fd5b50610427610b04366004613ad2565b6123b4565b348015610b14575f80fd5b50610427610b23366004613cbe565b6126d3565b348015610b33575f80fd5b506104cc60135481565b5f546001600160a01b03163314610b6f5760405162461bcd60e51b8152600401610b6690613ced565b60405180910390fd5b6019548311158015610b835750601a548211155b8015610b915750601b548111155b610b99575f80fd5b61132481610ba78486613d36565b610bb19190613d36565b1115610bbb575f80fd5b601492909255601355601555565b6060600b8054610bd890613d49565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0490613d49565b8015610c4f5780601f10610c2657610100808354040283529160200191610c4f565b820191905f5260205f20905b815481529060010190602001808311610c3257829003601f168201915b5050505050905090565b5f610c6533848461273b565b5060015b92915050565b5f546001600160a01b03163314610c985760405162461bcd60e51b8152600401610b6690613ced565b5f8183602454610ca89190613d81565b610cb29190613dac565b90506103e8602454610cc49190613dac565b811015610ce35760405162461bcd60e51b8152600401610b6690613dbf565b602e819055600a548290610cf8908590613d81565b610d029190613dac565b602f55505050565b5f546001600160a01b03163314610d335760405162461bcd60e51b8152600401610b6690613ced565b601f92909255602055602155565b5f546001600160a01b03163314610d6a5760405162461bcd60e51b8152600401610b6690613ced565b801515600103610e99576001600160a01b0382165f9081526007602052604090205460ff1615610ddc5760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610b66565b6001600160a01b0382165f9081526001602052604090205415610e33576001600160a01b0382165f90815260016020526040902054610e1a90611199565b6001600160a01b0383165f908152600260205260409020555b506001600160a01b03165f818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b8015155f03611026576001600160a01b0382165f9081526007602052604090205460ff16610f095760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610b66565b5f5b60085481101561102457826001600160a01b031660088281548110610f3257610f32613e02565b5f918252602090912001546001600160a01b0316036110125760088054610f5b90600190613e16565b81548110610f6b57610f6b613e02565b5f91825260209091200154600880546001600160a01b039092169183908110610f9657610f96613e02565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600282526040808220829055600790925220805460ff191690556008805480610fed57610fed613e29565b5f8281526020902081015f1990810180546001600160a01b0319169055019055611024565b8061101c81613e3d565b915050610f0b565b505b5050565b5f61103684848461285e565b506001600160a01b0384165f9081526005602090815260408083203380855292529091205461107191869161106c908690613e16565b61273b565b5060019392505050565b5f546001600160a01b031633146110a45760405162461bcd60e51b8152600401610b6690613ced565b60195483111580156110b85750601a548211155b80156110c65750601b548111155b6110ce575f80fd5b611324816110dc8486613d36565b6110e69190613d36565b11156110f0575f80fd5b601092909255601155601255565b5f546001600160a01b031633146111275760405162461bcd60e51b8152600401610b6690613ced565b5f81836024546111379190613d81565b6111419190613dac565b90506103e86024546111539190613dac565b8110156111725760405162461bcd60e51b8152600401610b6690613dbf565b6030819055600a548290611187908590613d81565b6111919190613dac565b603155505050565b5f6025548211156111ff5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b66565b5f611208612c7f565b90506112148184613dac565b9392505050565b335f8181526005602090815260408083206001600160a01b03871684529091528120549091610c6591859061106c908690613d36565b5f546001600160a01b0316331461127a5760405162461bcd60e51b8152600401610b6690613ced565b601954831115801561128e5750601a548211155b801561129c5750601b548111155b6112a4575f80fd5b611324816112b28486613d36565b6112bc9190613d36565b11156112c6575f80fd5b601692909255601755601855565b5f546001600160a01b031633146112fd5760405162461bcd60e51b8152600401610b6690613ced565b603a5460ff161561130c575f80fd5b602d80546001600160a01b03199081166001600160a01b03878116918217909355602c80549092168684161782555f90815260066020526040808220805460ff19908116600190811790925593549094168252902080549091169091179055600b6113778382613ea2565b50600c6113848282613ea2565b50633b9aca00600a556022805460ff191660129081179091556023556023546113ae90600a61403e565b600a546113bb9190613d81565b60248190556113cb905f19614049565b6113d6905f19613e16565b602555602954602780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015611433573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611457919061405c565b6001600160a01b031663c9c6539660275f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d9919061405c565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af1158015611522573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611546919061405c565b602880546001600160a01b0319166001600160a01b039283169081179091555f908152600360209081526040808320805460ff19166001179055308352600582528083206027549094168352929052205f199055602454620186a0906115ae906103e8613d81565b6115b89190613dac565b602e55600a54620186a0906115cf906101f4613d81565b6115d99190613dac565b602f556024546103e8906115ee90600a613d81565b6115f89190613dac565b603055600a80546103e89161160d9190613d81565b6116179190613dac565b6031556024546127109061162c906005613d81565b6116369190613dac565b6032556024546103e89061164b906005613d81565b6116559190613dac565b60335560295461166f906001600160a01b03165f19610c59565b50603a805460ff19166001908117909155602554905f6116965f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20556116c05f546001600160a01b031690565b602b546024546040519081526001600160a01b0392831692909116905f805160206141aa8339815191529060200160405180910390a360275461170f9030906001600160a01b03165f1961273b565b61173d6117235f546001600160a01b031690565b3061173861087f5f546001600160a01b031690565b61285e565b506027546001600160a01b031663f305d719473061175a81611e7b565b5f8061176d5f546001600160a01b031690565b426040518863ffffffff1660e01b815260040161178f96959493929190614077565b60606040518083038185885af11580156117ab573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117d091906140b2565b5050436039555050505050565b5f546001600160a01b031633146118065760405162461bcd60e51b8152600401610b6690613ced565b6001600160a01b03811661182c5760405162461bcd60e51b8152600401610b66906140dd565b602a546001600160a01b039081169082160361185a5760405162461bcd60e51b8152600401610b66906140dd565b5f8054611872916001600160a01b0390911690611df4565b61187d816001611df4565b611888816001610d41565b5f54602c546001600160a01b039182169116036118bb57602c80546001600160a01b0319166001600160a01b0383161790555b5f546118cf906001600160a01b0316611e7b565b5f80546001600160a01b0390811682526005602090815260408084208684168552909152822092909255805490916119079116611e7b565b1115611928575f54611926906001600160a01b03168261173882611e7b565b505b5f80546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f610c69825f19610c59565b5f546001600160a01b031633146119a75760405162461bcd60e51b8152600401610b6690613ced565b6001600160a01b038216611a075760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f74206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b66565b6001600160a01b0382165f9081526003602052604090205460ff1615611a6f5760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f74204275726e2066726f6d204c50205061697273000000000000006044820152606401610b66565b5f611a7983611e7b565b90505f602354600a611a8b919061403e565b611a959084613d81565b905080821015611ae75760405162461bcd60e51b815260206004820152601f60248201527f546865206275726e20616d6f756e7420657863656564732062616c616e6365006044820152606401610b66565b6001600160a01b0384165f9081526007602052604090205460ff1615611b47576001600160a01b0384165f90815260026020526040902054611b2a908290613e16565b6001600160a01b0385165f90815260026020526040902055611ba2565b6001600160a01b0384165f9081526007602052604090205460ff16611ba2576001600160a01b0384165f90815260016020526040902054611b89908290613e16565b6001600160a01b0385165f908152600160205260409020555b80602454611bb09190613e16565b6024556040518181525f906001600160a01b038616905f805160206141aa833981519152906020015b60405180910390a350505050565b335f611bf282611e7b565b90505f602354600a611c04919061403e565b611c0e9085613d81565b905080821015611c605760405162461bcd60e51b815260206004820181905260248201527f20546865206275726e20616d6f756e7420657863656564732062616c616e63656044820152606401610b66565b6001600160a01b0383165f9081526007602052604090205460ff1615611cc0576001600160a01b0383165f90815260026020526040902054611ca3908290613e16565b6001600160a01b0384165f90815260026020526040902055611d1b565b6001600160a01b0383165f9081526007602052604090205460ff16611d1b576001600160a01b0383165f90815260016020526040902054611d02908290613e16565b6001600160a01b0384165f908152600160205260409020555b80602454611d299190613e16565b6024556040518181525f906001600160a01b038516905f805160206141aa83398151915290602001611bd9565b5f546001600160a01b03163314611d7f5760405162461bcd60e51b8152600401610b6690613ced565b602d546001600160a01b03808316911603611dd25760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610b66565b602d80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314611e1d5760405162461bcd60e51b8152600401610b6690613ced565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314611e705760405162461bcd60e51b8152600401610b6690613ced565b601c91909155601d55565b6001600160a01b0381165f9081526007602052604081205460ff1615611eb657506001600160a01b03165f9081526002602052604090205490565b6001600160a01b0382165f90815260016020526040902054610c6990611199565b5f546001600160a01b03163314611f005760405162461bcd60e51b8152600401610b6690613ced565b5f8054611f18916001600160a01b0390911690611df4565b5f80546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b602c546001600160a01b0316336001600160a01b0316146119a75760405162461bcd60e51b815260206004820152602260248201527f4f6e6c79207468652044414f2063616e2075736520746869732066756e63746960448201526137b760f11b6064820152608401610b66565b5f546001600160a01b03163314611fea5760405162461bcd60e51b8152600401610b6690613ced565b8015155f0361201457506001600160a01b03165f908152600360205260409020805460ff19169055565b6004541561207b5762093a806004544261202e9190613e16565b1161207b5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610b66565b6001600160a01b0382165f908152600360205260409020805460ff19166001179055426004555050565b6060600c8054610bd890613d49565b335f8181526005602090815260408083206001600160a01b03871684529091528120549091610c6591859061106c908690613e16565b5f546001600160a01b031633146121135760405162461bcd60e51b8152600401610b6690613ced565b60345460ff16156121665760405162461bcd60e51b815260206004820152601b60248201527f54726164696e6720697320616c726561647920656e61626c65642100000000006044820152606401610b66565b612171306001610d41565b602854612188906001600160a01b03166001610d41565b6034805460ff19166001179055602d805460ff60a81b1916600160a81b179055565b5f61107133848461285e565b5f546001600160a01b031633146121df5760405162461bcd60e51b8152600401610b6690613ced565b602c546001600160a01b038083169116036122325760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610b66565b602c80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461227d5760405162461bcd60e51b8152600401610b6690613ced565b5f80546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156122b4573d5f803e3d5ffd5b50565b5f546001600160a01b031633146122e05760405162461bcd60e51b8152600401610b6690613ced565b602d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061232d90831515815260200190565b60405180910390a150565b602c546001600160a01b0316336001600160a01b03161461239b5760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c792044414f2043616e205570646174652074686520546f6b656e0000006044820152606401610b66565b600b6123a78382613ea2565b50600c6110248282613ea2565b5f546001600160a01b031633146123dd5760405162461bcd60e51b8152600401610b6690613ced565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612442919061405c565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561248d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b1919061405c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156124fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061251e919061405c565b90506001600160a01b03811661269057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561256a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061258e919061405c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125fd919061405c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015612647573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061266b919061405c565b602880546001600160a01b0319166001600160a01b03929092169190911790556126ac565b602880546001600160a01b0319166001600160a01b0383161790555b602780546001600160a01b0319166001600160a01b03841617905561102430845f1961273b565b5f546001600160a01b031633146126fc5760405162461bcd60e51b8152600401610b6690613ced565b828460245461270b9190613d81565b6127159190613dac565b6032556024548190612728908490613d81565b6127329190613dac565b60335550505050565b6001600160a01b03831661279d5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b66565b6001600160a01b0382166127fe5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b66565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166128c35760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f74207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b66565b6001600160a01b0383166129255760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f74207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b66565b5f82116129865760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b66565b6129908484612ca0565b15612bac5760345460ff166129e75760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b66565b60375460ff1615612aa4576001600160a01b0384165f9081526003602052604090205460ff1615612a5d57612a1d436001613d36565b6001600160a01b0384165f9081526038602052604090205403612a3e575f80fd5b6001600160a01b0383165f908152603860205260409020439055612aa4565b612a68436001613d36565b6001600160a01b0385165f9081526038602052604090205403612a89575f80fd5b6001600160a01b0384165f9081526038602052604090204390555b602e54821115612b005760405162461bcd60e51b815260206004820152602160248201527f5472616e73666572206578636565647320746865206d61785478416d6f756e746044820152601760f91b6064820152608401610b66565b6029546001600160a01b03848116911614801590612b3657506001600160a01b0383165f9081526003602052604090205460ff16155b15612bac5760305482612b4885611e7b565b612b529190613d36565b1115612bac5760405162461bcd60e51b815260206004820152602360248201527f5472616e73666572206578636565647320746865206d617857616c6c657453696044820152623d329760e91b6064820152608401610b66565b6001600160a01b0384165f9081526006602052604090205460019060ff1680612bec57506001600160a01b0384165f9081526006602052604090205460ff165b15612bf457505f5b6001600160a01b0384165f9081526003602052604090205460ff1615612c6a57602d54600160a01b900460ff16158015612c375750602d54600160a81b900460ff165b15612c6a575f612c4630611e7b565b90506032548110612c68576033548110612c5f57506033545b612c6881612d5c565b505b612c76858585846130d5565b95945050505050565b5f805f612c8a61342f565b9092509050612c998183613dac565b9250505090565b5f80546001600160a01b03848116911614801590612ccb57505f546001600160a01b03838116911614155b8015612cef57506001600160a01b0382165f9081526009602052604090205460ff16155b8015612d1357506001600160a01b0383165f9081526009602052604090205460ff16155b8015612d2d5750602a546001600160a01b03838116911614155b8015612d4157506001600160a01b03821615155b801561121457506001600160a01b0383163014159392505050565b602d805460ff60a01b1916600160a01b179055601d54601c54612d7f9190613d36565b156130c5575f6002601d54601c54612d979190613d36565b601c54612da49085613d81565b612dae9190613dac565b612db89190613dac565b90505f612dc58284613e16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110612dfd57612dfd613e02565b6001600160a01b03928316602091820292909201810191909152602754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612e54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e78919061405c565b81600181518110612e8b57612e8b613e02565b6001600160a01b03928316602091820292909201015260275460405163791ac94760e01b815291169063791ac94790612ed09085905f9086903090429060040161413a565b5f604051808303815f87803b158015612ee7575f80fd5b505af1158015612ef9573d5f803e3d5ffd5b505050505f6002601d54601c54612f109190613d36565b601c54612f1d9047613d81565b612f279190613dac565b612f319190613dac565b90508315612ffe57602754602c5460405163f305d71960e01b81526001600160a01b039283169263f305d719928592612f789230928b925f92839216904290600401614077565b60606040518083038185885af1158015612f94573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612fb991906140b2565b505060408051868152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b5f6130098587613e16565b11156130c057601f5460215447915f916130239084613dac565b61302d9190613d81565b90505f602054602154846130419190613dac565b61304b9190613d81565b602c546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015613083573d5f803e3d5ffd5b50602d546040516001600160a01b039091169083156108fc029084905f818181858888f193505050501580156130bb573d5f803e3d5ffd5b505050505b505050505b50602d805460ff60a01b19169055565b6034545f90610100900460ff16613168576130f085856135a9565b603454610100900460ff1615801561310d575061310d8585612ca0565b156131685760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610b66565b5f613175868686866136b6565b60808101516001600160a01b0388165f9081526001602052604090205491925061319e91613e16565b6001600160a01b038088165f90815260016020526040808220939093556060840151918816815291909120546131d49190613d36565b6001600160a01b038087165f9081526001602090815260408083209490945591891681526007909152205460ff16801561322657506001600160a01b0385165f9081526007602052604090205460ff16155b1561326b576001600160a01b0386165f9081526002602052604090205461324e908590613e16565b6001600160a01b0387165f908152600260205260409020556133a2565b6001600160a01b0386165f9081526007602052604090205460ff161580156132aa57506001600160a01b0385165f9081526007602052604090205460ff165b156132f05780516001600160a01b0386165f908152600260205260409020546132d39190613d36565b6001600160a01b0386165f908152600260205260409020556133a2565b6001600160a01b0386165f9081526007602052604090205460ff16801561332e57506001600160a01b0385165f9081526007602052604090205460ff165b156133a2576001600160a01b0386165f90815260026020526040902054613356908590613e16565b6001600160a01b038088165f90815260026020526040808220939093558351918816815291909120546133899190613d36565b6001600160a01b0386165f908152600260205260409020555b6040810151156133ba576133ba868260400151613894565b5f8160a0015111806133cf57505f8160200151115b156133e6576133e68160a00151826020015161393e565b846001600160a01b0316866001600160a01b03165f805160206141aa833981519152835f015160405161341b91815260200190565b60405180910390a350600195945050505050565b6025546024545f918291825b600854811015613578578260015f6008848154811061345c5761345c613e02565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205411806134c457508160025f6008848154811061349e5761349e613e02565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b156134da57602554602454945094505050509091565b60015f600883815481106134f0576134f0613e02565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205461351e9084613e16565b925060025f6008838154811061353657613536613e02565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546135649083613e16565b91508061357081613e3d565b91505061343b565b506024546025546135899190613dac565b8210156135a0576025546024549350935050509091565b90939092509050565b603454610100900460ff16156136015760405162461bcd60e51b815260206004820152601b60248201527f4c697175696469747920697320616c72656164792061646465642e00000000006044820152606401610b66565b61360b8282612ca0565b15801561362557506028546001600160a01b038281169116145b15611026576001600160a01b0382165f9081526009602052604090819020805460ff191660019081179091556034805461ff00191661010017905542603655602d805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159916136aa91901515815260200190565b60405180910390a15050565b6136e96040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b61371c6040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f613725612c7f565b90506137318186613d81565b6080830152831561383f576001600160a01b0386165f9081526003602052604090205460ff161561377357601454600d55601354600e55601554600f556137bd565b6001600160a01b0387165f9081526003602052604090205460ff16156137aa57601054600d55601154600e55601254600f556137bd565b601654600d55601754600e55601854600f555b601e54600d546137cd9087613d81565b6137d79190613dac565b6020830152601e54600f54600e546137ef9190613d36565b6137f99087613d81565b6138039190613dac565b6040830181905260208301516138199190613d36565b6138239086613e16565b82526020820151613835908290613d81565b60a0830152613857565b5f602083018190526040830181905285835260a08301525b8082604001516138679190613d81565b8260a001516138769190613d36565b82608001516138859190613e16565b60608301525095945050505050565b5f61389d612c7f565b90505f6138aa8284613d81565b305f908152600160205260409020549091506138c7908290613d36565b305f9081526001602090815260408083209390935560079052205460ff161561391457305f90815260026020526040902054613904908490613d36565b305f908152600260205260409020555b60405183815230906001600160a01b038616905f805160206141aa83398151915290602001611bd9565b8160255461394c9190613e16565b60255560265461395d908290613d36565b6026555050565b5f805f60608486031215613976575f80fd5b505081359360208301359350604090920135919050565b5f6020808352835180828501525f5b818110156139b85785810183015185820160400152820161399c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146122b4575f80fd5b5f80604083850312156139fd575f80fd5b8235613a08816139d8565b946020939093013593505050565b5f8060408385031215613a27575f80fd5b50508035926020909101359150565b80358015158114613a45575f80fd5b919050565b5f8060408385031215613a5b575f80fd5b8235613a66816139d8565b9150613a7460208401613a36565b90509250929050565b5f805f60608486031215613a8f575f80fd5b8335613a9a816139d8565b92506020840135613aaa816139d8565b929592945050506040919091013590565b5f60208284031215613acb575f80fd5b5035919050565b5f60208284031215613ae2575f80fd5b8135611214816139d8565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112613b10575f80fd5b813567ffffffffffffffff80821115613b2b57613b2b613aed565b604051601f8301601f19908116603f01168101908282118183101715613b5357613b53613aed565b81604052838152866020858801011115613b6b575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f8060808587031215613b9d575f80fd5b8435613ba8816139d8565b93506020850135613bb8816139d8565b9250604085013567ffffffffffffffff80821115613bd4575f80fd5b613be088838901613b01565b93506060870135915080821115613bf5575f80fd5b50613c0287828801613b01565b91505092959194509250565b5f60208284031215613c1e575f80fd5b61121482613a36565b5f8060408385031215613c38575f80fd5b823567ffffffffffffffff80821115613c4f575f80fd5b613c5b86838701613b01565b93506020850135915080821115613c70575f80fd5b50613c7d85828601613b01565b9150509250929050565b5f8060408385031215613c98575f80fd5b8235613ca3816139d8565b91506020830135613cb3816139d8565b809150509250929050565b5f805f8060808587031215613cd1575f80fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c6957610c69613d22565b600181811c90821680613d5d57607f821691505b602082108103613d7b57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082028115828204841417610c6957610c69613d22565b634e487b7160e01b5f52601260045260245ffd5b5f82613dba57613dba613d98565b500490565b60208082526023908201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604082015262363c9760e91b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b81810381811115610c6957610c69613d22565b634e487b7160e01b5f52603160045260245ffd5b5f60018201613e4e57613e4e613d22565b5060010190565b601f821115611024575f81815260208120601f850160051c81016020861015613e7b5750805b601f850160051c820191505b81811015613e9a57828155600101613e87565b505050505050565b815167ffffffffffffffff811115613ebc57613ebc613aed565b613ed081613eca8454613d49565b84613e55565b602080601f831160018114613f03575f8415613eec5750858301515b5f19600386901b1c1916600185901b178555613e9a565b5f85815260208120601f198616915b82811015613f3157888601518255948401946001909101908401613f12565b5085821015613f4e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b80851115613f9857815f1904821115613f7e57613f7e613d22565b80851615613f8b57918102915b93841c9390800290613f63565b509250929050565b5f82613fae57506001610c69565b81613fba57505f610c69565b8160018114613fd05760028114613fda57613ff6565b6001915050610c69565b60ff841115613feb57613feb613d22565b50506001821b610c69565b5060208310610133831016604e8410600b8410161715614019575081810a610c69565b6140238383613f5e565b805f190482111561403657614036613d22565b029392505050565b5f6112148383613fa0565b5f8261405757614057613d98565b500690565b5f6020828403121561406c575f80fd5b8151611214816139d8565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f606084860312156140c4575f80fd5b8351925060208401519150604084015190509250925092565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156141885784516001600160a01b031683529383019391830191600101614163565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220802339ff4f7197ff164b6a68bf15d3a37ff4ad5d65322fbb538b71a34a05b82664736f6c63430008140033

Deployed Bytecode

0x6080604052600436106103c1575f3560e01c80635ec32bc8116101f4578063a457c2d711610113578063c49b9a80116100a8578063dc99c74911610078578063dc99c74914610a87578063dd62ed3e14610aa6578063eafb5a3c14610aea578063fb78680d14610b09578063fb8bc55f14610b28575f80fd5b8063c49b9a8014610a1f578063d874246714610a3e578063d9e6646014610a53578063da37be2414610a72575f80fd5b8063b46def55116100e3578063b46def55146109cc578063bbd39ab2146109e1578063be5a4630146109f5578063c3183e7e14610a0a575f80fd5b8063a457c2d71461095b578063a5c210ed1461097a578063a9059cbb1461098e578063b1263c91146109ad575f80fd5b8063715018a611610189578063893d20e811610159578063893d20e81461090d5780638da5cb5b1461090d57806395d89b41146109295780639a09a61b1461093d575f80fd5b8063715018a61461088457806374c09cf31461089857806380c581d1146108b757806388f82020146108d6575f80fd5b8063668357da116101c4578063668357da146108265780636aa7a0711461083b5780636ed515e61461085057806370a0823114610865575f80fd5b80635ec32bc8146107aa578063647d0d26146107c95780636612e66f146107e85780636639dd9314610807575f80fd5b806337a9314f116102e05780634f6e7bb91161027557806358fa63ca1161024557806358fa63ca1461074257806359e56f25146107615780635b8e4046146107805780635e0f658414610795575f80fd5b80634f6e7bb9146106da5780634fb2e45d146106ef578063571ac8b01461070e57806358a142b91461072d575f80fd5b806343a82b1f116102b057806343a82b1f1461065d578063452ed4f11461067c57806347f6b55f1461069b5780634a74bb02146106ba575f80fd5b806337a9314f146105dd578063384f6b51146106145780633895aa2514610629578063395093511461063e575f80fd5b806313114a9d1161035657806328825ff11161032657806328825ff11461055f5780632b962ec61461057e5780632d8381191461059d578063313ce567146105bc575f80fd5b806313114a9d146104f957806313e461921461050d57806318160ddd1461052c57806323b872dd14610540575f80fd5b8063095ea7b311610391578063095ea7b3146104695780630c2cdb0e146104985780630cdc8226146104b7578063111be316146104da575f80fd5b806303fd2a45146103cc578063050a99421461040857806306fdde03146104295780630758d9241461044a575f80fd5b366103c857005b5f80fd5b3480156103d7575f80fd5b50602a546103eb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610413575f80fd5b50610427610422366004613964565b610b3d565b005b348015610434575f80fd5b5061043d610bc9565b6040516103ff919061398d565b348015610455575f80fd5b506027546103eb906001600160a01b031681565b348015610474575f80fd5b506104886104833660046139ec565b610c59565b60405190151581526020016103ff565b3480156104a3575f80fd5b506104276104b2366004613a16565b610c6f565b3480156104c2575f80fd5b506104cc600f5481565b6040519081526020016103ff565b3480156104e5575f80fd5b506104276104f4366004613964565b610d0a565b348015610504575f80fd5b506026546104cc565b348015610518575f80fd5b50610427610527366004613a4a565b610d41565b348015610537575f80fd5b506024546104cc565b34801561054b575f80fd5b5061048861055a366004613a7d565b61102a565b34801561056a575f80fd5b50610427610579366004613964565b61107b565b348015610589575f80fd5b50610427610598366004613a16565b6110fe565b3480156105a8575f80fd5b506104cc6105b7366004613abb565b611199565b3480156105c7575f80fd5b5060225460405160ff90911681526020016103ff565b3480156105e8575f80fd5b506104886105f7366004613ad2565b6001600160a01b03165f9081526006602052604090205460ff1690565b34801561061f575f80fd5b506104cc601c5481565b348015610634575f80fd5b506104cc600e5481565b348015610649575f80fd5b506104886106583660046139ec565b61121b565b348015610668575f80fd5b50610427610677366004613964565b611251565b348015610687575f80fd5b506028546103eb906001600160a01b031681565b3480156106a6575f80fd5b506104276106b5366004613b8a565b6112d4565b3480156106c5575f80fd5b50602d5461048890600160a81b900460ff1681565b3480156106e5575f80fd5b506104cc601d5481565b3480156106fa575f80fd5b50610427610709366004613ad2565b6117dd565b348015610719575f80fd5b50610488610728366004613ad2565b611972565b348015610738575f80fd5b506104cc602f5481565b34801561074d575f80fd5b50602b546103eb906001600160a01b031681565b34801561076c575f80fd5b5061042761077b3660046139ec565b61197e565b34801561078b575f80fd5b506104cc60115481565b3480156107a0575f80fd5b506104cc60315481565b3480156107b5575f80fd5b506104276107c4366004613abb565b611be7565b3480156107d4575f80fd5b506104276107e3366004613ad2565b611d56565b3480156107f3575f80fd5b50610427610802366004613a4a565b611df4565b348015610812575f80fd5b50610427610821366004613a16565b611e47565b348015610831575f80fd5b506104cc600d5481565b348015610846575f80fd5b506104cc60145481565b34801561085b575f80fd5b506104cc60155481565b348015610870575f80fd5b506104cc61087f366004613ad2565b611e7b565b34801561088f575f80fd5b50610427611ed7565b3480156108a3575f80fd5b506104276108b23660046139ec565b611f53565b3480156108c2575f80fd5b506104276108d1366004613a4a565b611fc1565b3480156108e1575f80fd5b506104886108f0366004613ad2565b6001600160a01b03165f9081526007602052604090205460ff1690565b348015610918575f80fd5b505f546001600160a01b03166103eb565b348015610934575f80fd5b5061043d6120a5565b348015610948575f80fd5b5060345461048890610100900460ff1681565b348015610966575f80fd5b506104886109753660046139ec565b6120b4565b348015610985575f80fd5b506104276120ea565b348015610999575f80fd5b506104886109a83660046139ec565b6121aa565b3480156109b8575f80fd5b506104276109c7366004613ad2565b6121b6565b3480156109d7575f80fd5b506104cc60175481565b3480156109ec575f80fd5b50610427612254565b348015610a00575f80fd5b506104cc60125481565b348015610a15575f80fd5b506104cc60165481565b348015610a2a575f80fd5b50610427610a39366004613c0e565b6122b7565b348015610a49575f80fd5b506104cc60105481565b348015610a5e575f80fd5b506029546103eb906001600160a01b031681565b348015610a7d575f80fd5b506104cc60185481565b348015610a92575f80fd5b50610427610aa1366004613c27565b612338565b348015610ab1575f80fd5b506104cc610ac0366004613c87565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610af5575f80fd5b50610427610b04366004613ad2565b6123b4565b348015610b14575f80fd5b50610427610b23366004613cbe565b6126d3565b348015610b33575f80fd5b506104cc60135481565b5f546001600160a01b03163314610b6f5760405162461bcd60e51b8152600401610b6690613ced565b60405180910390fd5b6019548311158015610b835750601a548211155b8015610b915750601b548111155b610b99575f80fd5b61132481610ba78486613d36565b610bb19190613d36565b1115610bbb575f80fd5b601492909255601355601555565b6060600b8054610bd890613d49565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0490613d49565b8015610c4f5780601f10610c2657610100808354040283529160200191610c4f565b820191905f5260205f20905b815481529060010190602001808311610c3257829003601f168201915b5050505050905090565b5f610c6533848461273b565b5060015b92915050565b5f546001600160a01b03163314610c985760405162461bcd60e51b8152600401610b6690613ced565b5f8183602454610ca89190613d81565b610cb29190613dac565b90506103e8602454610cc49190613dac565b811015610ce35760405162461bcd60e51b8152600401610b6690613dbf565b602e819055600a548290610cf8908590613d81565b610d029190613dac565b602f55505050565b5f546001600160a01b03163314610d335760405162461bcd60e51b8152600401610b6690613ced565b601f92909255602055602155565b5f546001600160a01b03163314610d6a5760405162461bcd60e51b8152600401610b6690613ced565b801515600103610e99576001600160a01b0382165f9081526007602052604090205460ff1615610ddc5760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610b66565b6001600160a01b0382165f9081526001602052604090205415610e33576001600160a01b0382165f90815260016020526040902054610e1a90611199565b6001600160a01b0383165f908152600260205260409020555b506001600160a01b03165f818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b8015155f03611026576001600160a01b0382165f9081526007602052604090205460ff16610f095760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610b66565b5f5b60085481101561102457826001600160a01b031660088281548110610f3257610f32613e02565b5f918252602090912001546001600160a01b0316036110125760088054610f5b90600190613e16565b81548110610f6b57610f6b613e02565b5f91825260209091200154600880546001600160a01b039092169183908110610f9657610f96613e02565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600282526040808220829055600790925220805460ff191690556008805480610fed57610fed613e29565b5f8281526020902081015f1990810180546001600160a01b0319169055019055611024565b8061101c81613e3d565b915050610f0b565b505b5050565b5f61103684848461285e565b506001600160a01b0384165f9081526005602090815260408083203380855292529091205461107191869161106c908690613e16565b61273b565b5060019392505050565b5f546001600160a01b031633146110a45760405162461bcd60e51b8152600401610b6690613ced565b60195483111580156110b85750601a548211155b80156110c65750601b548111155b6110ce575f80fd5b611324816110dc8486613d36565b6110e69190613d36565b11156110f0575f80fd5b601092909255601155601255565b5f546001600160a01b031633146111275760405162461bcd60e51b8152600401610b6690613ced565b5f81836024546111379190613d81565b6111419190613dac565b90506103e86024546111539190613dac565b8110156111725760405162461bcd60e51b8152600401610b6690613dbf565b6030819055600a548290611187908590613d81565b6111919190613dac565b603155505050565b5f6025548211156111ff5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b66565b5f611208612c7f565b90506112148184613dac565b9392505050565b335f8181526005602090815260408083206001600160a01b03871684529091528120549091610c6591859061106c908690613d36565b5f546001600160a01b0316331461127a5760405162461bcd60e51b8152600401610b6690613ced565b601954831115801561128e5750601a548211155b801561129c5750601b548111155b6112a4575f80fd5b611324816112b28486613d36565b6112bc9190613d36565b11156112c6575f80fd5b601692909255601755601855565b5f546001600160a01b031633146112fd5760405162461bcd60e51b8152600401610b6690613ced565b603a5460ff161561130c575f80fd5b602d80546001600160a01b03199081166001600160a01b03878116918217909355602c80549092168684161782555f90815260066020526040808220805460ff19908116600190811790925593549094168252902080549091169091179055600b6113778382613ea2565b50600c6113848282613ea2565b50633b9aca00600a556022805460ff191660129081179091556023556023546113ae90600a61403e565b600a546113bb9190613d81565b60248190556113cb905f19614049565b6113d6905f19613e16565b602555602954602780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015611433573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611457919061405c565b6001600160a01b031663c9c6539660275f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d9919061405c565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af1158015611522573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611546919061405c565b602880546001600160a01b0319166001600160a01b039283169081179091555f908152600360209081526040808320805460ff19166001179055308352600582528083206027549094168352929052205f199055602454620186a0906115ae906103e8613d81565b6115b89190613dac565b602e55600a54620186a0906115cf906101f4613d81565b6115d99190613dac565b602f556024546103e8906115ee90600a613d81565b6115f89190613dac565b603055600a80546103e89161160d9190613d81565b6116179190613dac565b6031556024546127109061162c906005613d81565b6116369190613dac565b6032556024546103e89061164b906005613d81565b6116559190613dac565b60335560295461166f906001600160a01b03165f19610c59565b50603a805460ff19166001908117909155602554905f6116965f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20556116c05f546001600160a01b031690565b602b546024546040519081526001600160a01b0392831692909116905f805160206141aa8339815191529060200160405180910390a360275461170f9030906001600160a01b03165f1961273b565b61173d6117235f546001600160a01b031690565b3061173861087f5f546001600160a01b031690565b61285e565b506027546001600160a01b031663f305d719473061175a81611e7b565b5f8061176d5f546001600160a01b031690565b426040518863ffffffff1660e01b815260040161178f96959493929190614077565b60606040518083038185885af11580156117ab573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117d091906140b2565b5050436039555050505050565b5f546001600160a01b031633146118065760405162461bcd60e51b8152600401610b6690613ced565b6001600160a01b03811661182c5760405162461bcd60e51b8152600401610b66906140dd565b602a546001600160a01b039081169082160361185a5760405162461bcd60e51b8152600401610b66906140dd565b5f8054611872916001600160a01b0390911690611df4565b61187d816001611df4565b611888816001610d41565b5f54602c546001600160a01b039182169116036118bb57602c80546001600160a01b0319166001600160a01b0383161790555b5f546118cf906001600160a01b0316611e7b565b5f80546001600160a01b0390811682526005602090815260408084208684168552909152822092909255805490916119079116611e7b565b1115611928575f54611926906001600160a01b03168261173882611e7b565b505b5f80546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f610c69825f19610c59565b5f546001600160a01b031633146119a75760405162461bcd60e51b8152600401610b6690613ced565b6001600160a01b038216611a075760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f74206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b66565b6001600160a01b0382165f9081526003602052604090205460ff1615611a6f5760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f74204275726e2066726f6d204c50205061697273000000000000006044820152606401610b66565b5f611a7983611e7b565b90505f602354600a611a8b919061403e565b611a959084613d81565b905080821015611ae75760405162461bcd60e51b815260206004820152601f60248201527f546865206275726e20616d6f756e7420657863656564732062616c616e6365006044820152606401610b66565b6001600160a01b0384165f9081526007602052604090205460ff1615611b47576001600160a01b0384165f90815260026020526040902054611b2a908290613e16565b6001600160a01b0385165f90815260026020526040902055611ba2565b6001600160a01b0384165f9081526007602052604090205460ff16611ba2576001600160a01b0384165f90815260016020526040902054611b89908290613e16565b6001600160a01b0385165f908152600160205260409020555b80602454611bb09190613e16565b6024556040518181525f906001600160a01b038616905f805160206141aa833981519152906020015b60405180910390a350505050565b335f611bf282611e7b565b90505f602354600a611c04919061403e565b611c0e9085613d81565b905080821015611c605760405162461bcd60e51b815260206004820181905260248201527f20546865206275726e20616d6f756e7420657863656564732062616c616e63656044820152606401610b66565b6001600160a01b0383165f9081526007602052604090205460ff1615611cc0576001600160a01b0383165f90815260026020526040902054611ca3908290613e16565b6001600160a01b0384165f90815260026020526040902055611d1b565b6001600160a01b0383165f9081526007602052604090205460ff16611d1b576001600160a01b0383165f90815260016020526040902054611d02908290613e16565b6001600160a01b0384165f908152600160205260409020555b80602454611d299190613e16565b6024556040518181525f906001600160a01b038516905f805160206141aa83398151915290602001611bd9565b5f546001600160a01b03163314611d7f5760405162461bcd60e51b8152600401610b6690613ced565b602d546001600160a01b03808316911603611dd25760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610b66565b602d80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314611e1d5760405162461bcd60e51b8152600401610b6690613ced565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314611e705760405162461bcd60e51b8152600401610b6690613ced565b601c91909155601d55565b6001600160a01b0381165f9081526007602052604081205460ff1615611eb657506001600160a01b03165f9081526002602052604090205490565b6001600160a01b0382165f90815260016020526040902054610c6990611199565b5f546001600160a01b03163314611f005760405162461bcd60e51b8152600401610b6690613ced565b5f8054611f18916001600160a01b0390911690611df4565b5f80546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b602c546001600160a01b0316336001600160a01b0316146119a75760405162461bcd60e51b815260206004820152602260248201527f4f6e6c79207468652044414f2063616e2075736520746869732066756e63746960448201526137b760f11b6064820152608401610b66565b5f546001600160a01b03163314611fea5760405162461bcd60e51b8152600401610b6690613ced565b8015155f0361201457506001600160a01b03165f908152600360205260409020805460ff19169055565b6004541561207b5762093a806004544261202e9190613e16565b1161207b5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610b66565b6001600160a01b0382165f908152600360205260409020805460ff19166001179055426004555050565b6060600c8054610bd890613d49565b335f8181526005602090815260408083206001600160a01b03871684529091528120549091610c6591859061106c908690613e16565b5f546001600160a01b031633146121135760405162461bcd60e51b8152600401610b6690613ced565b60345460ff16156121665760405162461bcd60e51b815260206004820152601b60248201527f54726164696e6720697320616c726561647920656e61626c65642100000000006044820152606401610b66565b612171306001610d41565b602854612188906001600160a01b03166001610d41565b6034805460ff19166001179055602d805460ff60a81b1916600160a81b179055565b5f61107133848461285e565b5f546001600160a01b031633146121df5760405162461bcd60e51b8152600401610b6690613ced565b602c546001600160a01b038083169116036122325760405162461bcd60e51b815260206004820152601360248201527257616c6c657420616c7265616479207365742160681b6044820152606401610b66565b602c80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461227d5760405162461bcd60e51b8152600401610b6690613ced565b5f80546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156122b4573d5f803e3d5ffd5b50565b5f546001600160a01b031633146122e05760405162461bcd60e51b8152600401610b6690613ced565b602d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061232d90831515815260200190565b60405180910390a150565b602c546001600160a01b0316336001600160a01b03161461239b5760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c792044414f2043616e205570646174652074686520546f6b656e0000006044820152606401610b66565b600b6123a78382613ea2565b50600c6110248282613ea2565b5f546001600160a01b031633146123dd5760405162461bcd60e51b8152600401610b6690613ced565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612442919061405c565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561248d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b1919061405c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156124fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061251e919061405c565b90506001600160a01b03811661269057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561256a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061258e919061405c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125fd919061405c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015612647573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061266b919061405c565b602880546001600160a01b0319166001600160a01b03929092169190911790556126ac565b602880546001600160a01b0319166001600160a01b0383161790555b602780546001600160a01b0319166001600160a01b03841617905561102430845f1961273b565b5f546001600160a01b031633146126fc5760405162461bcd60e51b8152600401610b6690613ced565b828460245461270b9190613d81565b6127159190613dac565b6032556024548190612728908490613d81565b6127329190613dac565b60335550505050565b6001600160a01b03831661279d5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b66565b6001600160a01b0382166127fe5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b66565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166128c35760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f74207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b66565b6001600160a01b0383166129255760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f74207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b66565b5f82116129865760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b66565b6129908484612ca0565b15612bac5760345460ff166129e75760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b66565b60375460ff1615612aa4576001600160a01b0384165f9081526003602052604090205460ff1615612a5d57612a1d436001613d36565b6001600160a01b0384165f9081526038602052604090205403612a3e575f80fd5b6001600160a01b0383165f908152603860205260409020439055612aa4565b612a68436001613d36565b6001600160a01b0385165f9081526038602052604090205403612a89575f80fd5b6001600160a01b0384165f9081526038602052604090204390555b602e54821115612b005760405162461bcd60e51b815260206004820152602160248201527f5472616e73666572206578636565647320746865206d61785478416d6f756e746044820152601760f91b6064820152608401610b66565b6029546001600160a01b03848116911614801590612b3657506001600160a01b0383165f9081526003602052604090205460ff16155b15612bac5760305482612b4885611e7b565b612b529190613d36565b1115612bac5760405162461bcd60e51b815260206004820152602360248201527f5472616e73666572206578636565647320746865206d617857616c6c657453696044820152623d329760e91b6064820152608401610b66565b6001600160a01b0384165f9081526006602052604090205460019060ff1680612bec57506001600160a01b0384165f9081526006602052604090205460ff165b15612bf457505f5b6001600160a01b0384165f9081526003602052604090205460ff1615612c6a57602d54600160a01b900460ff16158015612c375750602d54600160a81b900460ff165b15612c6a575f612c4630611e7b565b90506032548110612c68576033548110612c5f57506033545b612c6881612d5c565b505b612c76858585846130d5565b95945050505050565b5f805f612c8a61342f565b9092509050612c998183613dac565b9250505090565b5f80546001600160a01b03848116911614801590612ccb57505f546001600160a01b03838116911614155b8015612cef57506001600160a01b0382165f9081526009602052604090205460ff16155b8015612d1357506001600160a01b0383165f9081526009602052604090205460ff16155b8015612d2d5750602a546001600160a01b03838116911614155b8015612d4157506001600160a01b03821615155b801561121457506001600160a01b0383163014159392505050565b602d805460ff60a01b1916600160a01b179055601d54601c54612d7f9190613d36565b156130c5575f6002601d54601c54612d979190613d36565b601c54612da49085613d81565b612dae9190613dac565b612db89190613dac565b90505f612dc58284613e16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110612dfd57612dfd613e02565b6001600160a01b03928316602091820292909201810191909152602754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612e54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e78919061405c565b81600181518110612e8b57612e8b613e02565b6001600160a01b03928316602091820292909201015260275460405163791ac94760e01b815291169063791ac94790612ed09085905f9086903090429060040161413a565b5f604051808303815f87803b158015612ee7575f80fd5b505af1158015612ef9573d5f803e3d5ffd5b505050505f6002601d54601c54612f109190613d36565b601c54612f1d9047613d81565b612f279190613dac565b612f319190613dac565b90508315612ffe57602754602c5460405163f305d71960e01b81526001600160a01b039283169263f305d719928592612f789230928b925f92839216904290600401614077565b60606040518083038185885af1158015612f94573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612fb991906140b2565b505060408051868152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b5f6130098587613e16565b11156130c057601f5460215447915f916130239084613dac565b61302d9190613d81565b90505f602054602154846130419190613dac565b61304b9190613d81565b602c546040519192506001600160a01b03169082156108fc029083905f818181858888f19350505050158015613083573d5f803e3d5ffd5b50602d546040516001600160a01b039091169083156108fc029084905f818181858888f193505050501580156130bb573d5f803e3d5ffd5b505050505b505050505b50602d805460ff60a01b19169055565b6034545f90610100900460ff16613168576130f085856135a9565b603454610100900460ff1615801561310d575061310d8585612ca0565b156131685760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610b66565b5f613175868686866136b6565b60808101516001600160a01b0388165f9081526001602052604090205491925061319e91613e16565b6001600160a01b038088165f90815260016020526040808220939093556060840151918816815291909120546131d49190613d36565b6001600160a01b038087165f9081526001602090815260408083209490945591891681526007909152205460ff16801561322657506001600160a01b0385165f9081526007602052604090205460ff16155b1561326b576001600160a01b0386165f9081526002602052604090205461324e908590613e16565b6001600160a01b0387165f908152600260205260409020556133a2565b6001600160a01b0386165f9081526007602052604090205460ff161580156132aa57506001600160a01b0385165f9081526007602052604090205460ff165b156132f05780516001600160a01b0386165f908152600260205260409020546132d39190613d36565b6001600160a01b0386165f908152600260205260409020556133a2565b6001600160a01b0386165f9081526007602052604090205460ff16801561332e57506001600160a01b0385165f9081526007602052604090205460ff165b156133a2576001600160a01b0386165f90815260026020526040902054613356908590613e16565b6001600160a01b038088165f90815260026020526040808220939093558351918816815291909120546133899190613d36565b6001600160a01b0386165f908152600260205260409020555b6040810151156133ba576133ba868260400151613894565b5f8160a0015111806133cf57505f8160200151115b156133e6576133e68160a00151826020015161393e565b846001600160a01b0316866001600160a01b03165f805160206141aa833981519152835f015160405161341b91815260200190565b60405180910390a350600195945050505050565b6025546024545f918291825b600854811015613578578260015f6008848154811061345c5761345c613e02565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205411806134c457508160025f6008848154811061349e5761349e613e02565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b156134da57602554602454945094505050509091565b60015f600883815481106134f0576134f0613e02565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205461351e9084613e16565b925060025f6008838154811061353657613536613e02565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546135649083613e16565b91508061357081613e3d565b91505061343b565b506024546025546135899190613dac565b8210156135a0576025546024549350935050509091565b90939092509050565b603454610100900460ff16156136015760405162461bcd60e51b815260206004820152601b60248201527f4c697175696469747920697320616c72656164792061646465642e00000000006044820152606401610b66565b61360b8282612ca0565b15801561362557506028546001600160a01b038281169116145b15611026576001600160a01b0382165f9081526009602052604090819020805460ff191660019081179091556034805461ff00191661010017905542603655602d805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159916136aa91901515815260200190565b60405180910390a15050565b6136e96040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b61371c6040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f613725612c7f565b90506137318186613d81565b6080830152831561383f576001600160a01b0386165f9081526003602052604090205460ff161561377357601454600d55601354600e55601554600f556137bd565b6001600160a01b0387165f9081526003602052604090205460ff16156137aa57601054600d55601154600e55601254600f556137bd565b601654600d55601754600e55601854600f555b601e54600d546137cd9087613d81565b6137d79190613dac565b6020830152601e54600f54600e546137ef9190613d36565b6137f99087613d81565b6138039190613dac565b6040830181905260208301516138199190613d36565b6138239086613e16565b82526020820151613835908290613d81565b60a0830152613857565b5f602083018190526040830181905285835260a08301525b8082604001516138679190613d81565b8260a001516138769190613d36565b82608001516138859190613e16565b60608301525095945050505050565b5f61389d612c7f565b90505f6138aa8284613d81565b305f908152600160205260409020549091506138c7908290613d36565b305f9081526001602090815260408083209390935560079052205460ff161561391457305f90815260026020526040902054613904908490613d36565b305f908152600260205260409020555b60405183815230906001600160a01b038616905f805160206141aa83398151915290602001611bd9565b8160255461394c9190613e16565b60255560265461395d908290613d36565b6026555050565b5f805f60608486031215613976575f80fd5b505081359360208301359350604090920135919050565b5f6020808352835180828501525f5b818110156139b85785810183015185820160400152820161399c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146122b4575f80fd5b5f80604083850312156139fd575f80fd5b8235613a08816139d8565b946020939093013593505050565b5f8060408385031215613a27575f80fd5b50508035926020909101359150565b80358015158114613a45575f80fd5b919050565b5f8060408385031215613a5b575f80fd5b8235613a66816139d8565b9150613a7460208401613a36565b90509250929050565b5f805f60608486031215613a8f575f80fd5b8335613a9a816139d8565b92506020840135613aaa816139d8565b929592945050506040919091013590565b5f60208284031215613acb575f80fd5b5035919050565b5f60208284031215613ae2575f80fd5b8135611214816139d8565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112613b10575f80fd5b813567ffffffffffffffff80821115613b2b57613b2b613aed565b604051601f8301601f19908116603f01168101908282118183101715613b5357613b53613aed565b81604052838152866020858801011115613b6b575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f8060808587031215613b9d575f80fd5b8435613ba8816139d8565b93506020850135613bb8816139d8565b9250604085013567ffffffffffffffff80821115613bd4575f80fd5b613be088838901613b01565b93506060870135915080821115613bf5575f80fd5b50613c0287828801613b01565b91505092959194509250565b5f60208284031215613c1e575f80fd5b61121482613a36565b5f8060408385031215613c38575f80fd5b823567ffffffffffffffff80821115613c4f575f80fd5b613c5b86838701613b01565b93506020850135915080821115613c70575f80fd5b50613c7d85828601613b01565b9150509250929050565b5f8060408385031215613c98575f80fd5b8235613ca3816139d8565b91506020830135613cb3816139d8565b809150509250929050565b5f805f8060808587031215613cd1575f80fd5b5050823594602084013594506040840135936060013592509050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c6957610c69613d22565b600181811c90821680613d5d57607f821691505b602082108103613d7b57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082028115828204841417610c6957610c69613d22565b634e487b7160e01b5f52601260045260245ffd5b5f82613dba57613dba613d98565b500490565b60208082526023908201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604082015262363c9760e91b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b81810381811115610c6957610c69613d22565b634e487b7160e01b5f52603160045260245ffd5b5f60018201613e4e57613e4e613d22565b5060010190565b601f821115611024575f81815260208120601f850160051c81016020861015613e7b5750805b601f850160051c820191505b81811015613e9a57828155600101613e87565b505050505050565b815167ffffffffffffffff811115613ebc57613ebc613aed565b613ed081613eca8454613d49565b84613e55565b602080601f831160018114613f03575f8415613eec5750858301515b5f19600386901b1c1916600185901b178555613e9a565b5f85815260208120601f198616915b82811015613f3157888601518255948401946001909101908401613f12565b5085821015613f4e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b80851115613f9857815f1904821115613f7e57613f7e613d22565b80851615613f8b57918102915b93841c9390800290613f63565b509250929050565b5f82613fae57506001610c69565b81613fba57505f610c69565b8160018114613fd05760028114613fda57613ff6565b6001915050610c69565b60ff841115613feb57613feb613d22565b50506001821b610c69565b5060208310610133831016604e8410600b8410161715614019575081810a610c69565b6140238383613f5e565b805f190482111561403657614036613d22565b029392505050565b5f6112148383613fa0565b5f8261405757614057613d98565b500690565b5f6020828403121561406c575f80fd5b8151611214816139d8565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f606084860312156140c4575f80fd5b8351925060208401519150604084015190509250925092565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156141885784516001600160a01b031683529383019391830191600101614163565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220802339ff4f7197ff164b6a68bf15d3a37ff4ad5d65322fbb538b71a34a05b82664736f6c63430008140033

Deployed Bytecode Sourcemap

6947:24400:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8537:64;;;;;;;;;;-1:-1:-1;8537:64:0;;;;-1:-1:-1;;;;;8537:64:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;8537:64:0;;;;;;;;16995:373;;;;;;;;;;-1:-1:-1;16995:373:0;;;;;:::i;:::-;;:::i;:::-;;13811:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8428:35::-;;;;;;;;;;-1:-1:-1;8428:35:0;;;;-1:-1:-1;;;;;8428:35:0;;;14457:161;;;;;;;;;;-1:-1:-1;14457:161:0;;;;;:::i;:::-;;:::i;:::-;;;1951:14:1;;1944:22;1926:41;;1914:2;1899:18;14457:161:0;1786:187:1;18060:283:0;;;;;;;;;;-1:-1:-1;18060:283:0;;;;;:::i;:::-;;:::i;7607:25::-;;;;;;;;;;;;;;;;;;;2377::1;;;2365:2;2350:18;7607:25:0;2231:177:1;17757:139:0;;;;;;;;;;-1:-1:-1;17757:139:0;;;;;:::i;:::-;;:::i;20453:87::-;;;;;;;;;;-1:-1:-1;20522:10:0;;20453:87;;19583:862;;;;;;;;;;-1:-1:-1;19583:862:0;;;;;:::i;:::-;;:::i;13567:83::-;;;;;;;;;;-1:-1:-1;13640:7:0;;13567:83;;14754:252;;;;;;;;;;-1:-1:-1;14754:252:0;;;;;:::i;:::-;;:::i;16614:373::-;;;;;;;;;;-1:-1:-1;16614:373:0;;;;;:::i;:::-;;:::i;18351:248::-;;;;;;;;;;-1:-1:-1;18351:248:0;;;;;:::i;:::-;;:::i;20775:250::-;;;;;;;;;;-1:-1:-1;20775:250:0;;;;;:::i;:::-;;:::i;13657:71::-;;;;;;;;;;-1:-1:-1;13716:9:0;;13657:71;;13716:9;;;;3686:36:1;;3674:2;3659:18;13657:71:0;3544:184:1;16509:97:0;;;;;;;;;;-1:-1:-1;16509:97:0;;;;;:::i;:::-;-1:-1:-1;;;;;16584:14:0;16560:4;16584:14;;;:5;:14;;;;;;;;;16509:97;8005:36;;;;;;;;;;;;;;;;7580:25;;;;;;;;;;;;;;;;15014:208;;;;;;;;;;-1:-1:-1;15014:208:0;;;;;:::i;:::-;;:::i;17376:373::-;;;;;;;;;;-1:-1:-1;17376:373:0;;;;;:::i;:::-;;:::i;8471:21::-;;;;;;;;;;-1:-1:-1;8471:21:0;;;;-1:-1:-1;;;;;8471:21:0;;;10722:1773;;;;;;;;;;-1:-1:-1;10722:1773:0;;;;;:::i;:::-;;:::i;8789:41::-;;;;;;;;;;-1:-1:-1;8789:41:0;;;;-1:-1:-1;;;8789:41:0;;;;;;8048:24;;;;;;;;;;;;;;;;12590:767;;;;;;;;;;-1:-1:-1;12590:767:0;;;;;:::i;:::-;;:::i;14626:120::-;;;;;;;;;;-1:-1:-1;14626:120:0;;;;;:::i;:::-;;:::i;8866:20::-;;;;;;;;;;;;;;;;8609:64;;;;;;;;;;-1:-1:-1;8609:64:0;;;;-1:-1:-1;;;;;8609:64:0;;;26790:641;;;;;;;;;;-1:-1:-1;26790:641:0;;;;;:::i;:::-;;:::i;7669:27::-;;;;;;;;;;;;;;;;8921:20;;;;;;;;;;;;;;;;28160:525;;;;;;;;;;-1:-1:-1;28160:525:0;;;;;:::i;:::-;;:::i;18904:193::-;;;;;;;;;;-1:-1:-1;18904:193:0;;;;;:::i;:::-;;:::i;19456:119::-;;;;;;;;;;-1:-1:-1;19456:119:0;;;;;:::i;:::-;;:::i;17904:148::-;;;;;;;;;;-1:-1:-1;17904:148:0;;;;;:::i;:::-;;:::i;7553:25::-;;;;;;;;;;;;;;;;7760:26;;;;;;;;;;;;;;;;7788;;;;;;;;;;;;;;;;14097:184;;;;;;;;;;-1:-1:-1;14097:184:0;;;;;:::i;:::-;;:::i;13365:194::-;;;;;;;;;;;;;:::i;27439:713::-;;;;;;;;;;-1:-1:-1;27439:713:0;;;;;:::i;:::-;;:::i;16002:379::-;;;;;;;;;;-1:-1:-1;16002:379:0;;;;;:::i;:::-;;:::i;16389:112::-;;;;;;;;;;-1:-1:-1;16389:112:0;;;;;:::i;:::-;-1:-1:-1;;;;;16481:12:0;16457:4;16481:12;;;:3;:12;;;;;;;;;16389:112;13886:71;;;;;;;;;;-1:-1:-1;13929:7:0;12568:6;-1:-1:-1;;;;;12568:6:0;13886:71;;13734:70;;;;;;;;;;;;;:::i;9040:36::-;;;;;;;;;;-1:-1:-1;9040:36:0;;;;;;;;;;;15230:218;;;;;;;;;;-1:-1:-1;15230:218:0;;;;;:::i;:::-;;:::i;24934:260::-;;;;;;;;;;;;;:::i;14289:160::-;;;;;;;;;;-1:-1:-1;14289:160:0;;;;;:::i;:::-;;:::i;19105:166::-;;;;;;;;;;-1:-1:-1;19105:166:0;;;;;:::i;:::-;;:::i;7848:24::-;;;;;;;;;;;;;;;;30815:114;;;;;;;;;;;;;:::i;7698:27::-;;;;;;;;;;;;;;;;7822:24;;;;;;;;;;;;;;;;19277:171;;;;;;;;;;-1:-1:-1;19277:171:0;;;;;:::i;:::-;;:::i;7640:27::-;;;;;;;;;;;;;;;;8500:29;;;;;;;;;;-1:-1:-1;8500:29:0;;;;-1:-1:-1;;;;;8500:29:0;;;7874:24;;;;;;;;;;;;;;;;26597:185;;;;;;;;;;-1:-1:-1;26597:185:0;;;;;:::i;:::-;;:::i;13963:126::-;;;;;;;;;;-1:-1:-1;13963:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;14065:12:0;;;14047:7;14065:12;;;:4;:12;;;;;;;;:21;;;;;;;;;;;;;13963:126;15456:538;;;;;;;;;;-1:-1:-1;15456:538:0;;;;;:::i;:::-;;:::i;18607:289::-;;;;;;;;;;-1:-1:-1;18607:289:0;;;;;:::i;:::-;;:::i;7732:26::-;;;;;;;;;;;;;;;;16995:373;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;;;;;;;;;17114:6:::1;;17103:7;:17;;:57;;;;;17154:6;;17141:9;:19;;17103:57;:97;;;;;17194:6;;17181:9;:19;;17103:97;17095:124;;;::::0;::::1;;17273:4;17260:9:::0;17238:19:::1;17248:9:::0;17238:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;17230:48;;;::::0;::::1;;17289:5;:15:::0;;;;17315:5:::1;:17:::0;17343:5:::1;:17:::0;16995:373::o;13811:69::-;13850:13;13874:3;13867:10;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13811:69;:::o;14457:161::-;14532:4;14549:39;1088:10;14572:7;14581:6;14549:8;:39::i;:::-;-1:-1:-1;14606:4:0;14457:161;;;;;:::o;18060:283::-;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;18140:13:::1;18178:7;18167;18157;;:17;;;;:::i;:::-;18156:29;;;;:::i;:::-;18140:45;;18224:4;18214:7;;:14;;;;:::i;:::-;18204:5;:25;;18196:73;;;;-1:-1:-1::0;;;18196:73:0::1;;;;;;;:::i;:::-;18280:4;:12:::0;;;18312:2:::1;::::0;18328:7;;18312:12:::1;::::0;18317:7;;18312:12:::1;:::i;:::-;18311:24;;;;:::i;:::-;18303:5;:32:::0;-1:-1:-1;;;18060:283:0:o;17757:139::-;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;17842:3:::1;:8:::0;;;;17861:3:::1;:8:::0;17880:3:::1;:8:::0;17757:139::o;19583:862::-;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;19677:15;::::1;;19688:4;19677:15:::0;19673:765:::1;;-1:-1:-1::0;;;;;19718:12:0;::::1;;::::0;;;:3:::1;:12;::::0;;;;;::::1;;19717:13;19709:54;;;::::0;-1:-1:-1;;;19709:54:0;;9502:2:1;19709:54:0::1;::::0;::::1;9484:21:1::0;9541:2;9521:18;;;9514:30;9580;9560:18;;;9553:58;9628:18;;19709:54:0::1;9300:352:1::0;19709:54:0::1;-1:-1:-1::0;;;;;19781:13:0;::::1;19797:1;19781:13:::0;;;:4:::1;:13;::::0;;;;;:17;19778:107:::1;;-1:-1:-1::0;;;;;19855:13:0;::::1;;::::0;;;:4:::1;:13;::::0;;;;;19835:34:::1;::::0;:19:::1;:34::i;:::-;-1:-1:-1::0;;;;;19819:13:0;::::1;;::::0;;;:4:::1;:13;::::0;;;;:50;19778:107:::1;-1:-1:-1::0;;;;;;19899:12:0::1;;::::0;;;:3:::1;:12;::::0;;;;:19;;-1:-1:-1;;19899:19:0::1;19914:4;19899:19:::0;;::::1;::::0;;;19933:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;19933:23:0::1;::::0;;::::1;::::0;;19583:862::o;19673:765::-:1;19978:16:::0;::::1;;19989:5;19978:16:::0;19974:464:::1;;-1:-1:-1::0;;;;;20019:12:0;::::1;;::::0;;;:3:::1;:12;::::0;;;;;::::1;;20011:53;;;::::0;-1:-1:-1;;;20011:53:0;;9859:2:1;20011:53:0::1;::::0;::::1;9841:21:1::0;9898:2;9878:18;;;9871:30;9937;9917:18;;;9910:58;9985:18;;20011:53:0::1;9657:352:1::0;20011:53:0::1;20084:9;20079:348;20103:9;:16:::0;20099:20;::::1;20079:348;;;20165:7;-1:-1:-1::0;;;;;20149:23:0::1;:9;20159:1;20149:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;20149:12:0::1;:23:::0;20145:267:::1;;20212:9;20222:16:::0;;:20:::1;::::0;20241:1:::1;::::0;20222:20:::1;:::i;:::-;20212:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;20197:9:::1;:12:::0;;-1:-1:-1;;;;;20212:31:0;;::::1;::::0;20207:1;;20197:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;20197:46:0::1;-1:-1:-1::0;;;;;20197:46:0;;::::1;;::::0;;20266:13;;::::1;::::0;;:4:::1;:13:::0;;;;;;:17;;;20306:3:::1;:12:::0;;;;:20;;-1:-1:-1;;20306:20:0::1;::::0;;20349:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;20349:15:0;;;;;-1:-1:-1;;;;;;20349:15:0::1;::::0;;;;;20387:5:::1;;20145:267;20121:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20079:348;;;;19974:464;19583:862:::0;;:::o;14754:252::-;14852:4;14869:29;14872:6;14880:9;14891:6;14869:2;:29::i;:::-;-1:-1:-1;;;;;;14940:12:0;;;;;;:4;:12;;;;;;;;1088:10;14940:26;;;;;;;;;14909:67;;14918:6;;14940:35;;14969:6;;14940:35;:::i;:::-;14909:8;:67::i;:::-;-1:-1:-1;14994:4:0;14754:252;;;;;:::o;16614:373::-;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;16733:6:::1;;16722:7;:17;;:57;;;;;16773:6;;16760:9;:19;;16722:57;:97;;;;;16813:6;;16800:9;:19;;16722:97;16714:124;;;::::0;::::1;;16892:4;16879:9:::0;16857:19:::1;16867:9:::0;16857:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;16849:48;;;::::0;::::1;;16908:5;:15:::0;;;;16934:5:::1;:17:::0;16962:5:::1;:17:::0;16614:373::o;18351:248::-;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;18419:13:::1;18451:1;18446;18436:7;;:11;;;;:::i;:::-;18435:17;;;;:::i;:::-;18419:33;;18492:4;18482:7;;:14;;;;:::i;:::-;18472:5;:25;;18464:73;;;;-1:-1:-1::0;;;18464:73:0::1;;;;;;;:::i;:::-;18548:4;:12:::0;;;18580:2:::1;::::0;18590:1;;18580:6:::1;::::0;18585:1;;18580:6:::1;:::i;:::-;18579:12;;;;:::i;:::-;18571:5;:20:::0;-1:-1:-1;;;18351:248:0:o;20775:250::-;20841:7;20880;;20869;:18;;20861:73;;;;-1:-1:-1;;;20861:73:0;;10753:2:1;20861:73:0;;;10735:21:1;10792:2;10772:18;;;10765:30;10831:34;10811:18;;;10804:62;-1:-1:-1;;;10882:18:1;;;10875:40;10932:19;;20861:73:0;10551:406:1;20861:73:0;20945:19;20968:10;:8;:10::i;:::-;20945:33;-1:-1:-1;20996:21:0;20945:33;20996:7;:21;:::i;:::-;20989:28;20775:250;-1:-1:-1;;;20775:250:0:o;15014:208::-;1088:10;15102:4;15151:18;;;:4;:18;;;;;;;;-1:-1:-1;;;;;15151:27:0;;;;;;;;;;15102:4;;15119:73;;15142:7;;15151:40;;15181:10;;15151:40;:::i;17376:373::-;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;17495:6:::1;;17484:7;:17;;:57;;;;;17535:6;;17522:9;:19;;17484:57;:97;;;;;17575:6;;17562:9;:19;;17484:97;17476:124;;;::::0;::::1;;17654:4;17641:9:::0;17619:19:::1;17629:9:::0;17619:7;:19:::1;:::i;:::-;:31;;;;:::i;:::-;:39;;17611:48;;;::::0;::::1;;17670:5;:15:::0;;;;17696:5:::1;:17:::0;17724:5:::1;:17:::0;17376:373::o;10722:1773::-;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;10884:3:::1;::::0;::::1;;10883:4;10875:13;;;::::0;::::1;;10901:12;:38:::0;;-1:-1:-1;;;;;;10901:38:0;;::::1;-1:-1:-1::0;;;;;10901:38:0;;::::1;::::0;;::::1;::::0;;;10950:3:::1;:20:::0;;;;::::1;::::0;;::::1;;::::0;;-1:-1:-1;10983:19:0;;;:5:::1;:19;::::0;;;;;:26;;-1:-1:-1;;10983:26:0;;::::1;-1:-1:-1::0;10983:26:0;;::::1;::::0;;;11026:3;;;;::::1;11020:10:::0;;;;:17;;;;::::1;::::0;;::::1;::::0;;11050:3:::1;:16;11056:10:::0;11050:3;:16:::1;:::i;:::-;-1:-1:-1::0;11077:2:0::1;:17;11082:12:::0;11077:2;:17:::1;:::i;:::-;-1:-1:-1::0;11110:13:0::1;11105:2;:18:::0;11173:9:::1;:14:::0;;-1:-1:-1;;11173:14:0::1;11185:2;11173:14:::0;;::::1;::::0;;;11202:12:::1;:24:::0;11353:12:::1;::::0;11349:16:::1;::::0;:2:::1;:16;:::i;:::-;11343:2;;:23;;;;:::i;:::-;11333:7;:33:::0;;;11395:13:::1;::::0;-1:-1:-1;;11395:13:0::1;:::i;:::-;11388:21;::::0;-1:-1:-1;;11388:21:0::1;:::i;:::-;11377:7;:33:::0;11454:14:::1;::::0;11423:9:::1;:46:::0;;-1:-1:-1;;;;;;11423:46:0::1;-1:-1:-1::0;;;;;11454:14:0;;::::1;11423:46:::0;;::::1;::::0;;11507:19:::1;::::0;;-1:-1:-1;;;11507:19:0;;;;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;11454:14;11507:19:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11489:49:0::1;;11539:9;;;;;;;;;-1:-1:-1::0;;;;;11539:9:0::1;-1:-1:-1::0;;;;;11539:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11489:82;::::0;-1:-1:-1;;;;;;11489:82:0::1;::::0;;;;;;-1:-1:-1;;;;;15143:15:1;;;11489:82:0::1;::::0;::::1;15125:34:1::0;11565:4:0::1;15175:18:1::0;;;15168:43;15060:18;;11489:82:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11480:6;:91:::0;;-1:-1:-1;;;;;;11480:91:0::1;-1:-1:-1::0;;;;;11480:91:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;11582:12:0;;;:4:::1;:12;::::0;;;;;;;:19;;-1:-1:-1;;11582:19:0::1;-1:-1:-1::0;11582:19:0::1;::::0;;11625:4:::1;11612:19:::0;;:4:::1;:19:::0;;;;;11640:9:::1;::::0;;;::::1;11612:39:::0;;;;;;-1:-1:-1;;11612:59:0;;11700:7:::1;::::0;11718:6:::1;::::0;11700:14:::1;::::0;11710:4:::1;11700:14;:::i;:::-;11699:25;;;;:::i;:::-;11692:4;:32:::0;11744:2:::1;::::0;11756:6:::1;::::0;11744:8:::1;::::0;11749:3:::1;11744:8;:::i;:::-;11743:19;;;;:::i;:::-;11735:5;:27:::0;11781:7:::1;::::0;11797:4:::1;::::0;11781:12:::1;::::0;11791:2:::1;11781:12;:::i;:::-;11780:21;;;;:::i;:::-;11773:4;:28:::0;11821:2:::1;::::0;;11832:4:::1;::::0;11821:7:::1;::::0;:2;:7:::1;:::i;:::-;11820:16;;;;:::i;:::-;11812:5;:24:::0;11864:7:::1;::::0;11879:5:::1;::::0;11864:11:::1;::::0;11874:1:::1;11864:11;:::i;:::-;11863:21;;;;:::i;:::-;11847:13;:37:::0;11909:7:::1;::::0;11924:4:::1;::::0;11909:11:::1;::::0;11919:1:::1;11909:11;:::i;:::-;11908:20;;;;:::i;:::-;11895:10;:33:::0;11949:14:::1;::::0;11941:42:::1;::::0;-1:-1:-1;;;;;11949:14:0::1;-1:-1:-1::0;;11941:7:0::1;:42::i;:::-;-1:-1:-1::0;11996:3:0::1;:10:::0;;-1:-1:-1;;11996:10:0::1;12002:4;11996:10:::0;;::::1;::::0;;;12033:7:::1;::::0;;11996:3:::1;12022:7;12541::::0;12568:6;-1:-1:-1;;;;;12568:6:0;;12503:79;12022:7:::1;-1:-1:-1::0;;;;;12017:13:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12017:13:0;:23;12071:7:::1;12541::::0;12568:6;-1:-1:-1;;;;;12568:6:0;;12503:79;12071:7:::1;12065:4;::::0;12080:7:::1;::::0;12056:32:::1;::::0;2377:25:1;;;-1:-1:-1;;;;;12056:32:0;;::::1;::::0;12065:4;;::::1;::::0;-1:-1:-1;;;;;;;;;;;12056:32:0;2365:2:1;2350:18;12056:32:0::1;;;;;;;12133:9;::::0;12101:62:::1;::::0;12118:4:::1;::::0;-1:-1:-1;;;;;12133:9:0::1;-1:-1:-1::0;;12101:8:0::1;:62::i;:::-;12176:46;12179:7;12541::::0;12568:6;-1:-1:-1;;;;;12568:6:0;;12503:79;12179:7:::1;12196:4;12203:18;12213:7;12541::::0;12568:6;-1:-1:-1;;;;;12568:6:0;;12503:79;12203:18:::1;12176:2;:46::i;:::-;-1:-1:-1::0;12235:9:0::1;::::0;-1:-1:-1;;;;;12235:9:0::1;:25;12268:21;12313:4;12333:24;12313:4:::0;12333:9:::1;:24::i;:::-;12372:1;12389::::0;12406:7:::1;12541::::0;12568:6;-1:-1:-1;;;;;12568:6:0;;12503:79;12406:7:::1;12428:15;12235:219;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;12475:12:0::1;12465:7;:22:::0;-1:-1:-1;;;;;10722:1773:0:o;12590:767::-;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12671:22:0;::::1;12663:96;;;;-1:-1:-1::0;;;12663:96:0::1;;;;;;;:::i;:::-;12790:4;::::0;-1:-1:-1;;;;;12790:4:0;;::::1;12778:16:::0;;::::1;::::0;12770:90:::1;;;;-1:-1:-1::0;;;12770:90:0::1;;;;;;;:::i;:::-;12890:6;::::0;;12871:33:::1;::::0;-1:-1:-1;;;;;12890:6:0;;::::1;::::0;12871:18:::1;:33::i;:::-;12915:34;12934:8;12944:4;12915:18;:34::i;:::-;12960:37;12982:8;12992:4;12960:21;:37::i;:::-;13037:6;::::0;13022:3:::1;::::0;-1:-1:-1;;;;;13037:6:0;;::::1;13022:3:::0;::::1;:22:::0;13018:64:::1;;13059:3;:23:::0;;-1:-1:-1;;;;;;13059:23:0::1;-1:-1:-1::0;;;;;13059:23:0;::::1;;::::0;;13018:64:::1;13138:6;::::0;13128:17:::1;::::0;-1:-1:-1;;;;;13138:6:0::1;13128:9;:17::i;:::-;13103:12;13108:6:::0;;-1:-1:-1;;;;;13108:6:0;;::::1;13103:12:::0;;:4:::1;:12;::::0;;;;;;;:22;;::::1;::::0;;;;;;;:42;;;;13169:6;;13103:12;;13159:17:::1;::::0;13169:6:::1;13159:9;:17::i;:::-;:21;13156:92;;;13200:6;::::0;13197:39:::1;::::0;-1:-1:-1;;;;;13200:6:0::1;13208:8:::0;13218:17:::1;13200:6:::0;13218:9:::1;:17::i;13197:39::-;;13156:92;13268:6;:17:::0;;-1:-1:-1;;;;;;13268:17:0::1;-1:-1:-1::0;;;;;13268:17:0;::::1;::::0;;::::1;::::0;;13301:38:::1;::::0;13268:17;;;;13301:38:::1;::::0;13268:6;13301:38:::1;12590:767:::0;:::o;14626:120::-;14679:4;14703:35;14711:7;-1:-1:-1;;14703:7:0;:35::i;26790:641::-;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26876:18:0;::::1;26868:64;;;::::0;-1:-1:-1;;;26868:64:0;;16777:2:1;26868:64:0::1;::::0;::::1;16759:21:1::0;16816:2;16796:18;;;16789:30;16855:34;16835:18;;;16828:62;-1:-1:-1;;;16906:18:1;;;16899:31;16947:19;;26868:64:0::1;16575:397:1::0;26868:64:0::1;-1:-1:-1::0;;;;;26953:10:0;::::1;;::::0;;;:4:::1;:10;::::0;;;;;::::1;;26952:11;26943:49;;;::::0;-1:-1:-1;;;26943:49:0;;17179:2:1;26943:49:0::1;::::0;::::1;17161:21:1::0;17218:2;17198:18;;;17191:30;17257:27;17237:18;;;17230:55;17302:18;;26943:49:0::1;16977:349:1::0;26943:49:0::1;27003:11;27017:15;27027:4;27017:9;:15::i;:::-;27003:29;;27043:16;27076:12;;27072:2;:16;;;;:::i;:::-;27062:27;::::0;:6;:27:::1;:::i;:::-;27043:46;;27115:8;27108:3;:15;;27100:59;;;::::0;-1:-1:-1;;;27100:59:0;;17533:2:1;27100:59:0::1;::::0;::::1;17515:21:1::0;17572:2;17552:18;;;17545:30;17611:33;17591:18;;;17584:61;17662:18;;27100:59:0::1;17331:355:1::0;27100:59:0::1;-1:-1:-1::0;;;;;27174:9:0;::::1;;::::0;;;:3:::1;:9;::::0;;;;;::::1;;27170:159;;;-1:-1:-1::0;;;;;27213:10:0;::::1;;::::0;;;:4:::1;:10;::::0;;;;;:21:::1;::::0;27226:8;;27213:21:::1;:::i;:::-;-1:-1:-1::0;;;;;27200:10:0;::::1;;::::0;;;:4:::1;:10;::::0;;;;:34;27170:159:::1;;;-1:-1:-1::0;;;;;27257:9:0;::::1;;::::0;;;:3:::1;:9;::::0;;;;;::::1;;27252:77;;-1:-1:-1::0;;;;;27295:10:0;::::1;;::::0;;;:4:::1;:10;::::0;;;;;:21:::1;::::0;27308:8;;27295:21:::1;:::i;:::-;-1:-1:-1::0;;;;;27282:10:0;::::1;;::::0;;;:4:::1;:10;::::0;;;;:34;27252:77:::1;27362:8;27351:7;;:20;;;;:::i;:::-;27341:7;:30:::0;27387:36:::1;::::0;2377:25:1;;;27410:1:0::1;::::0;-1:-1:-1;;;;;27387:36:0;::::1;::::0;-1:-1:-1;;;;;;;;;;;27387:36:0;2365:2:1;2350:18;27387:36:0::1;;;;;;;;26857:574;;26790:641:::0;;:::o;28160:525::-;1088:10;28218:12;28270:15;1088:10;28270:9;:15::i;:::-;28256:29;;28296:16;28329:12;;28325:2;:16;;;;:::i;:::-;28315:27;;:6;:27;:::i;:::-;28296:46;;28368:8;28361:3;:15;;28353:60;;;;-1:-1:-1;;;28353:60:0;;17893:2:1;28353:60:0;;;17875:21:1;;;17912:18;;;17905:30;17971:34;17951:18;;;17944:62;18023:18;;28353:60:0;17691:356:1;28353:60:0;-1:-1:-1;;;;;28428:9:0;;;;;;:3;:9;;;;;;;;28424:159;;;-1:-1:-1;;;;;28467:10:0;;;;;;:4;:10;;;;;;:21;;28480:8;;28467:21;:::i;:::-;-1:-1:-1;;;;;28454:10:0;;;;;;:4;:10;;;;;:34;28424:159;;;-1:-1:-1;;;;;28511:9:0;;;;;;:3;:9;;;;;;;;28506:77;;-1:-1:-1;;;;;28549:10:0;;;;;;:4;:10;;;;;;:21;;28562:8;;28549:21;:::i;:::-;-1:-1:-1;;;;;28536:10:0;;;;;;:4;:10;;;;;:34;28506:77;28616:8;28605:7;;:20;;;;:::i;:::-;28595:7;:30;28641:36;;2377:25:1;;;28664:1:0;;-1:-1:-1;;;;;28641:36:0;;;-1:-1:-1;;;;;;;;;;;28641:36:0;2365:2:1;2350:18;28641:36:0;2231:177:1;18904:193:0;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;18996:12:::1;::::0;-1:-1:-1;;;;;18996:25:0;;::::1;:12:::0;::::1;:25:::0;18988:57:::1;;;::::0;-1:-1:-1;;;18988:57:0;;18254:2:1;18988:57:0::1;::::0;::::1;18236:21:1::0;18293:2;18273:18;;;18266:30;-1:-1:-1;;;18312:18:1;;;18305:49;18371:18;;18988:57:0::1;18052:343:1::0;18988:57:0::1;19056:12;:33:::0;;-1:-1:-1;;;;;;19056:33:0::1;-1:-1:-1::0;;;;;19056:33:0;;;::::1;::::0;;;::::1;::::0;;18904:193::o;19456:119::-;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19543:14:0;;;::::1;;::::0;;;:5:::1;:14;::::0;;;;:24;;-1:-1:-1;;19543:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19456:119::o;17904:148::-;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;17991:15:::1;:27:::0;;;;18029:3:::1;:15:::0;17904:148::o;14097:184::-;-1:-1:-1;;;;;14187:12:0;;14163:7;14187:12;;;:3;:12;;;;;;;;14183:38;;;-1:-1:-1;;;;;;14208:13:0;;;;;:4;:13;;;;;;;14097:184::o;14183:38::-;-1:-1:-1;;;;;14259:13:0;;;;;;:4;:13;;;;;;14239:34;;:19;:34::i;13365:194::-;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;13451:6:::1;::::0;;13432:33:::1;::::0;-1:-1:-1;;;;;13451:6:0;;::::1;::::0;13432:18:::1;:33::i;:::-;13493:1;13476:19:::0;;-1:-1:-1;;;;;;13476:19:0::1;::::0;;13511:40:::1;::::0;13493:1;;13511:40:::1;::::0;13493:1;;13511:40:::1;13365:194::o:0;27439:713::-;27535:3;;-1:-1:-1;;;;;27535:3:0;1088:10;-1:-1:-1;;;;;27519:19:0;;27510:67;;;;-1:-1:-1;;;27510:67:0;;18602:2:1;27510:67:0;;;18584:21:1;18641:2;18621:18;;;18614:30;18680:34;18660:18;;;18653:62;-1:-1:-1;;;18731:18:1;;;18724:32;18773:19;;27510:67:0;18400:398:1;16002:379:0;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;16083:16;::::1;;16094:5;16083:16:::0;16079:295:::1;;-1:-1:-1::0;;;;;;16116:10:0::1;16129:5;16116:10:::0;;;:4:::1;:10;::::0;;;;:18;;-1:-1:-1;;16116:18:0::1;::::0;;19583:862::o;16079:295::-:1;16171:4;::::0;:9;16167:127:::1;;16234:7;16227:4;;16209:15;:22;;;;:::i;:::-;:32;16201:77;;;::::0;-1:-1:-1;;;16201:77:0;;19005:2:1;16201:77:0::1;::::0;::::1;18987:21:1::0;;;19024:18;;;19017:30;19083:34;19063:18;;;19056:62;19135:18;;16201:77:0::1;18803:356:1::0;16201:77:0::1;-1:-1:-1::0;;;;;16308:10:0;::::1;;::::0;;;:4:::1;:10;::::0;;;;:17;;-1:-1:-1;;16308:17:0::1;16321:4;16308:17;::::0;;16347:15:::1;16340:4;:22:::0;16002:379;;:::o;13734:70::-;13775:13;13799:2;13792:9;;;;;:::i;15230:218::-;1088:10;15323:4;15372:18;;;:4;:18;;;;;;;;-1:-1:-1;;;;;15372:27:0;;;;;;;;;;15323:4;;15340:78;;15363:7;;15372:45;;15402:15;;15372:45;:::i;24934:260::-;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;24992:2:::1;::::0;::::1;;24991:3;24983:43;;;::::0;-1:-1:-1;;;24983:43:0;;19366:2:1;24983:43:0::1;::::0;::::1;19348:21:1::0;19405:2;19385:18;;;19378:30;19444:29;19424:18;;;19417:57;19491:18;;24983:43:0::1;19164:351:1::0;24983:43:0::1;25037:42;25067:4;25074;25037:21;:42::i;:::-;25112:6;::::0;25090:35:::1;::::0;-1:-1:-1;;;;;25112:6:0::1;::::0;25090:21:::1;:35::i;:::-;25138:2;:9:::0;;-1:-1:-1;;25138:9:0::1;25143:4;25138:9;::::0;;25158:21:::1;:28:::0;;-1:-1:-1;;;;25158:28:0::1;-1:-1:-1::0;;;25158:28:0::1;::::0;;24934:260::o;14289:160::-;14367:4;14384:35;1088:10;14401:9;14412:6;14384:2;:35::i;19105:166::-;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;19188:3:::1;::::0;-1:-1:-1;;;;;19188:16:0;;::::1;:3:::0;::::1;:16:::0;19180:48:::1;;;::::0;-1:-1:-1;;;19180:48:0;;18254:2:1;19180:48:0::1;::::0;::::1;18236:21:1::0;18293:2;18273:18;;;18266:30;-1:-1:-1;;;18312:18:1;;;18305:49;18371:18;;19180:48:0::1;18052:343:1::0;19180:48:0::1;19239:3;:24:::0;;-1:-1:-1;;;;;;19239:24:0::1;-1:-1:-1::0;;;;;19239:24:0;;;::::1;::::0;;;::::1;::::0;;19105:166::o;30815:114::-;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;12541:7;12568:6;;30873:48:::1;::::0;-1:-1:-1;;;;;12568:6:0;;;;30899:21:::1;30873:48:::0;::::1;;;::::0;30899:21;;30873:48;12541:7;30873:48;30899:21;12568:6;30873:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;30815:114::o:0;19277:171::-;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;19354:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;19354:32:0::1;-1:-1:-1::0;;;;19354:32:0;;::::1;;::::0;;19402:38:::1;::::0;::::1;::::0;::::1;::::0;19378:8;1951:14:1;1944:22;1926:41;;1914:2;1899:18;;1786:187;19402:38:0::1;;;;;;;;19277:171:::0;:::o;26597:185::-;26694:3;;-1:-1:-1;;;;;26694:3:0;1088:10;-1:-1:-1;;;;;26678:19:0;;26669:62;;;;-1:-1:-1;;;26669:62:0;;19722:2:1;26669:62:0;;;19704:21:1;19761:2;19741:18;;;19734:30;19800:31;19780:18;;;19773:59;19849:18;;26669:62:0;19520:353:1;26669:62:0;26746:3;:9;26752:3;26746;:9;:::i;:::-;-1:-1:-1;26766:2:0;:8;26771:3;26766:2;:8;:::i;15456:538::-;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;15529:29:::1;15580:9;15529:61;;15601:11;15633:10;-1:-1:-1::0;;;;;15633:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15615:47:0::1;;15671:4;15678:10;-1:-1:-1::0;;;;;15678:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15615:81;::::0;-1:-1:-1;;;;;;15615:81:0::1;::::0;;;;;;-1:-1:-1;;;;;15143:15:1;;;15615:81:0::1;::::0;::::1;15125:34:1::0;15195:15;;15175:18;;;15168:43;15060:18;;15615:81:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15601:95:::0;-1:-1:-1;;;;;;15711:17:0;::::1;15707:197;;15772:10;-1:-1:-1::0;;;;;15772:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15754:50:0::1;;15813:4;15820:10;-1:-1:-1::0;;;;;15820:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15754:84;::::0;-1:-1:-1;;;;;;15754:84:0::1;::::0;;;;;;-1:-1:-1;;;;;15143:15:1;;;15754:84:0::1;::::0;::::1;15125:34:1::0;15195:15;;15175:18;;;15168:43;15060:18;;15754:84:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15745:6;:93:::0;;-1:-1:-1;;;;;;15745:93:0::1;-1:-1:-1::0;;;;;15745:93:0;;;::::1;::::0;;;::::1;::::0;;15707:197:::1;;;15880:6;:12:::0;;-1:-1:-1;;;;;;15880:12:0::1;-1:-1:-1::0;;;;;15880:12:0;::::1;;::::0;;15707:197:::1;15914:9;:22:::0;;-1:-1:-1;;;;;;15914:22:0::1;-1:-1:-1::0;;;;;15914:22:0;::::1;;::::0;;15947:39:::1;15964:4;15971:9:::0;-1:-1:-1;;15947:8:0::1;:39::i;18607:289::-:0;9867:6;;-1:-1:-1;;;;;9867:6:0;1088:10;9867:22;9859:67;;;;-1:-1:-1;;;9859:67:0;;;;;;;:::i;:::-;18807:16:::1;18787;18777:7;;:26;;;;:::i;:::-;18776:47;;;;:::i;:::-;18760:13;:63:::0;18848:7:::1;::::0;18875:13;;18848:23:::1;::::0;18858:13;;18848:23:::1;:::i;:::-;18847:41;;;;:::i;:::-;18834:10;:54:::0;-1:-1:-1;;;;18607:289:0:o;21037:335::-;-1:-1:-1;;;;;21132:20:0;;21124:69;;;;-1:-1:-1;;;21124:69:0;;20080:2:1;21124:69:0;;;20062:21:1;20119:2;20099:18;;;20092:30;20158:34;20138:18;;;20131:62;-1:-1:-1;;;20209:18:1;;;20202:34;20253:19;;21124:69:0;19878:400:1;21124:69:0;-1:-1:-1;;;;;21212:21:0;;21204:68;;;;-1:-1:-1;;;21204:68:0;;20485:2:1;21204:68:0;;;20467:21:1;20524:2;20504:18;;;20497:30;20563:34;20543:18;;;20536:62;-1:-1:-1;;;20614:18:1;;;20607:32;20656:19;;21204:68:0;20283:398:1;21204:68:0;-1:-1:-1;;;;;21285:12:0;;;;;;;:4;:12;;;;;;;;:21;;;;;;;;;;;;;:30;;;21331:33;;2377:25:1;;;21331:33:0;;2350:18:1;21331:33:0;;;;;;;21037:335;;;:::o;21380:1685::-;21452:4;-1:-1:-1;;;;;21477:18:0;;21469:68;;;;-1:-1:-1;;;21469:68:0;;20888:2:1;21469:68:0;;;20870:21:1;20927:2;20907:18;;;20900:30;20966:34;20946:18;;;20939:62;-1:-1:-1;;;21017:18:1;;;21010:35;21062:19;;21469:68:0;20686:401:1;21469:68:0;-1:-1:-1;;;;;21556:16:0;;21548:64;;;;-1:-1:-1;;;21548:64:0;;21294:2:1;21548:64:0;;;21276:21:1;21333:2;21313:18;;;21306:30;21372:34;21352:18;;;21345:62;-1:-1:-1;;;21423:18:1;;;21416:33;21466:19;;21548:64:0;21092:399:1;21548:64:0;21640:1;21631:6;:10;21623:64;;;;-1:-1:-1;;;21623:64:0;;21698:2:1;21623:64:0;;;21680:21:1;21737:2;21717:18;;;21710:30;21776:34;21756:18;;;21749:62;-1:-1:-1;;;21827:18:1;;;21820:39;21876:19;;21623:64:0;21496:405:1;21623:64:0;21701:20;21712:4;21718:2;21701:10;:20::i;:::-;21698:734;;;21742:2;;;;21738:77;;21765:34;;-1:-1:-1;;;21765:34:0;;22108:2:1;21765:34:0;;;22090:21:1;22147:2;22127:18;;;22120:30;22186:26;22166:18;;;22159:54;22230:18;;21765:34:0;21906:348:1;21738:77:0;21833:15;;;;21829:352;;;-1:-1:-1;;;;;21873:10:0;;;;;;:4;:10;;;;;;;;21869:297;;;21932:16;:12;21947:1;21932:16;:::i;:::-;-1:-1:-1;;;;;21915:13:0;;;;;;:9;:13;;;;;;:33;21907:42;;;;;;-1:-1:-1;;;;;21972:13:0;;;;;;:9;:13;;;;;21988:12;21972:28;;21869:297;;;22076:16;:12;22091:1;22076:16;:::i;:::-;-1:-1:-1;;;;;22057:15:0;;;;;;:9;:15;;;;;;:35;22049:44;;;;;;-1:-1:-1;;;;;22116:15:0;;;;;;:9;:15;;;;;22134:12;22116:30;;21869:297;22213:4;;22203:6;:14;;22195:60;;;;-1:-1:-1;;;22195:60:0;;22461:2:1;22195:60:0;;;22443:21:1;22500:2;22480:18;;;22473:30;22539:34;22519:18;;;22512:62;-1:-1:-1;;;22590:18:1;;;22583:31;22631:19;;22195:60:0;22259:397:1;22195:60:0;22279:14;;-1:-1:-1;;;;;22273:20:0;;;22279:14;;22273:20;;;;:33;;-1:-1:-1;;;;;;22298:8:0;;;;;;:4;:8;;;;;;;;22297:9;22273:33;22270:151;;;22361:4;;22351:6;22335:13;22345:2;22335:9;:13::i;:::-;:22;;;;:::i;:::-;:30;;22327:78;;;;-1:-1:-1;;;22327:78:0;;22863:2:1;22327:78:0;;;22845:21:1;22902:2;22882:18;;;22875:30;22941:34;22921:18;;;22914:62;-1:-1:-1;;;22992:18:1;;;22985:33;23035:19;;22327:78:0;22661:399:1;22327:78:0;-1:-1:-1;;;;;22475:11:0;;22442:12;22475:11;;;:5;:11;;;;;;22457:4;;22475:11;;;:24;;-1:-1:-1;;;;;;22490:9:0;;;;;;:5;:9;;;;;;;;22475:24;22472:70;;;-1:-1:-1;22525:5:0;22472:70;-1:-1:-1;;;;;22558:8:0;;;;;;:4;:8;;;;;;;;22554:454;;;22588:16;;-1:-1:-1;;;22588:16:0;;;;22587:17;:59;;;;-1:-1:-1;22625:21:0;;-1:-1:-1;;;22625:21:0;;;;22587:59;22583:408;;;22681:28;22712:24;22730:4;22712:9;:24::i;:::-;22681:55;;22783:13;;22759:20;:37;22755:221;;22848:10;;22824:20;:34;22821:77;;-1:-1:-1;22885:10:0;;22821:77;22920:36;22935:20;22920:14;:36::i;:::-;22662:329;22583:408;23026:31;23031:4;23037:2;23041:6;23049:7;23026:4;:31::i;:::-;23019:38;21380:1685;-1:-1:-1;;;;;21380:1685:0:o;29948:161::-;29990:7;30011:15;30028;30047:19;:17;:19::i;:::-;30010:56;;-1:-1:-1;30010:56:0;-1:-1:-1;30084:17:0;30010:56;;30084:17;:::i;:::-;30077:24;;;;29948:161;:::o;20548:219::-;20617:4;12568:6;;-1:-1:-1;;;;;20641:15:0;;;12568:6;;20641:15;;;;:33;;-1:-1:-1;12541:7:0;12568:6;-1:-1:-1;;;;;20661:13:0;;;12568:6;;20661:13;;20641:33;:45;;;;-1:-1:-1;;;;;;20679:7:0;;;;;;:3;:7;;;;;;;;20678:8;20641:45;:59;;;;-1:-1:-1;;;;;;20691:9:0;;;;;;:3;:9;;;;;;;;20690:10;20641:59;:73;;;;-1:-1:-1;20710:4:0;;-1:-1:-1;;;;;20704:10:0;;;20710:4;;20704:10;;20641:73;:93;;;;-1:-1:-1;;;;;;20718:16:0;;;;20641:93;:118;;;;-1:-1:-1;;;;;;20738:21:0;;20754:4;20738:21;;20634:125;20548:219;-1:-1:-1;;;20548:219:0:o;23073:1420::-;9741:16;:23;;-1:-1:-1;;;;9741:23:0;-1:-1:-1;;;9741:23:0;;;23181:3:::1;::::0;23163:15:::1;::::0;:21:::1;::::0;23181:3;23163:21:::1;:::i;:::-;23159:52:::0;23204:7:::1;23159:52;23221:17;23312:1;23304:3;;23286:15;;:21;;;;:::i;:::-;23266:15;::::0;23243:38:::1;::::0;:20;:38:::1;:::i;:::-;23242:66;;;;:::i;:::-;23241:72;;;;:::i;:::-;23221:92:::0;-1:-1:-1;23326:20:0::1;23349:32;23221:92:::0;23349:20;:32:::1;:::i;:::-;23418:16;::::0;;23432:1:::1;23418:16:::0;;;;;::::1;::::0;;23326:55;;-1:-1:-1;23394:21:0::1;::::0;23418:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23418:16:0::1;23394:40;;23463:4;23445;23450:1;23445:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23445:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;23489:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;23489:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;23445:7;;23489:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23479:4;23484:1;23479:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23479:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;23518:9:::1;::::0;:191:::1;::::0;-1:-1:-1;;;23518:191:0;;:9;::::1;::::0;:60:::1;::::0;:191:::1;::::0;23593:12;;23518:9:::1;::::0;23636:4;;23663::::1;::::0;23683:15:::1;::::0;23518:191:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23724:24;23823:1;23815:3;;23797:15;;:21;;;;:::i;:::-;23777:15;::::0;23753:39:::1;::::0;:21:::1;:39;:::i;:::-;23752:67;;;;:::i;:::-;23751:73;;;;:::i;:::-;23724:100:::0;-1:-1:-1;23841:13:0;;23837:343:::1;;23871:9;::::0;24042:3:::1;::::0;23871:223:::1;::::0;-1:-1:-1;;;23871:223:0;;-1:-1:-1;;;;;23871:9:0;;::::1;::::0;:25:::1;::::0;23904:16;;23871:223:::1;::::0;23948:4:::1;::::0;23972:9;;23871::::1;::::0;;;24042:3:::1;::::0;24064:15:::1;::::0;23871:223:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;24114:54:0::1;::::0;;24872:25:1;;;24928:2;24913:18;;24906:34;;;24956:18;;;24949:34;;;24114:54:0::1;::::0;-1:-1:-1;24860:2:1;24845:18;24114:54:0::1;;;;;;;23837:343;24229:1;24194:32;24217:9:::0;24194:20;:32:::1;:::i;:::-;:36;24190:296;;;24345:3;::::0;24339::::1;::::0;24274:21:::1;::::0;24249::::1;::::0;24324:19:::1;::::0;24274:21;24324:19:::1;:::i;:::-;:25;;;;:::i;:::-;24311:38;;24364:10;24398:3;;24392;;24377:13;:19;;;;:::i;:::-;:25;;;;:::i;:::-;24404:3;::::0;:16:::1;::::0;24364:38;;-1:-1:-1;;;;;;24404:3:0::1;::::0;:16;::::1;;;::::0;24364:38;;24404:3:::1;:16:::0;:3;:16;24364:38;24404:3;:16;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;24436:12:0::1;::::0;:25:::1;::::0;-1:-1:-1;;;;;24436:12:0;;::::1;::::0;:25;::::1;;;::::0;24458:2;;24436:12:::1;:25:::0;:12;:25;24458:2;24436:12;:25;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24232:254;;;24190:296;23148:1345;;;;9775:1;-1:-1:-1::0;9787:16:0;:24;;-1:-1:-1;;;;9787:24:0;;;23073:1420::o;25408:1181::-;25523:16;;25497:4;;25523:16;;;;;25518:237;;25560:28;25579:4;25585:2;25560:18;:28::i;:::-;25612:16;;;;;;;25611:17;:41;;;;;25632:20;25643:4;25649:2;25632:10;:20::i;:::-;25607:137;;;25677:47;;-1:-1:-1;;;25677:47:0;;25196:2:1;25677:47:0;;;25178:21:1;25235:2;25215:18;;;25208:30;25274:34;25254:18;;;25247:62;-1:-1:-1;;;25325:18:1;;;25318:35;25370:19;;25677:47:0;24994:401:1;25607:137:0;25775:25;25803:38;25814:4;25820:2;25824:7;25833;25803:10;:38::i;:::-;25880:14;;;;-1:-1:-1;;;;;25867:10:0;;;;;;:4;:10;;;;;;25775:66;;-1:-1:-1;25867:27:0;;;:::i;:::-;-1:-1:-1;;;;;25854:10:0;;;;;;;:4;:10;;;;;;:40;;;;25927:22;;;;25916:8;;;;;;;;;;:33;;25927:22;25916:33;:::i;:::-;-1:-1:-1;;;;;25905:8:0;;;;;;;:4;:8;;;;;;;;:44;;;;25966:9;;;;;:3;:9;;;;;;;:21;;;;-1:-1:-1;;;;;;25980:7:0;;;;;;:3;:7;;;;;;;;25979:8;25966:21;25962:344;;;-1:-1:-1;;;;;26017:10:0;;;;;;:4;:10;;;;;;:20;;26030:7;;26017:20;:::i;:::-;-1:-1:-1;;;;;26004:10:0;;;;;;:4;:10;;;;;:33;25962:344;;;-1:-1:-1;;;;;26060:9:0;;;;;;:3;:9;;;;;;;;26059:10;:21;;;;-1:-1:-1;;;;;;26073:7:0;;;;;;:3;:7;;;;;;;;26059:21;26055:251;;;26119:22;;-1:-1:-1;;;;;26108:8:0;;26119:22;26108:8;;;:4;:8;;;;;;:33;;26119:22;26108:33;:::i;:::-;-1:-1:-1;;;;;26097:8:0;;;;;;:4;:8;;;;;:44;26055:251;;;-1:-1:-1;;;;;26165:9:0;;;;;;:3;:9;;;;;;;;:20;;;;-1:-1:-1;;;;;;26178:7:0;;;;;;:3;:7;;;;;;;;26165:20;26161:145;;;-1:-1:-1;;;;;26215:10:0;;;;;;:4;:10;;;;;;:20;;26228:7;;26215:20;:::i;:::-;-1:-1:-1;;;;;26202:10:0;;;;;;;:4;:10;;;;;;:33;;;;26272:22;;26261:8;;;;;;;;;;:33;;26272:22;26261:33;:::i;:::-;-1:-1:-1;;;;;26250:8:0;;;;;;:4;:8;;;;;:44;26161:145;26322:17;;;;:21;26318:79;;26358:39;26373:4;26379:6;:17;;;26358:14;:39::i;:::-;26426:1;26412:6;:11;;;:15;:34;;;;26445:1;26431:6;:11;;;:15;26412:34;26408:91;;;26461:38;26474:6;:11;;;26487:6;:11;;;26461:12;:38::i;:::-;26532:2;-1:-1:-1;;;;;26517:42:0;26526:4;-1:-1:-1;;;;;26517:42:0;-1:-1:-1;;;;;;;;;;;26536:6:0;:22;;;26517:42;;;;2377:25:1;;2365:2;2350:18;;2231:177;26517:42:0;;;;;;;;-1:-1:-1;26577:4:0;;25408:1181;-1:-1:-1;;;;;25408:1181:0:o;30117:535::-;30215:7;;30251;;30168;;;;;30269:271;30293:9;:16;30289:20;;30269:271;;;30356:7;30335:4;:18;30340:9;30350:1;30340:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30340:12:0;30335:18;;;;;;;;;;;;;:28;;:60;;;30388:7;30367:4;:18;30372:9;30382:1;30372:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30372:12:0;30367:18;;;;;;;;;;;;;:28;30335:60;30331:91;;;30405:7;;30414;;30397:25;;;;;;;30117:535;;:::o;30331:91::-;30457:4;:18;30462:9;30472:1;30462:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30462:12:0;30457:18;;;;;;;;;;;;;30447:28;;:7;:28;:::i;:::-;30437:38;;30510:4;:18;30515:9;30525:1;30515:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30515:12:0;30510:18;;;;;;;;;;;;;30500:28;;:7;:28;:::i;:::-;30490:38;-1:-1:-1;30311:3:0;;;;:::i;:::-;;;;30269:271;;;;30574:7;;30564;;:17;;;;:::i;:::-;30554:7;:27;30550:58;;;30591:7;;30600;;30583:25;;;;;;30117:535;;:::o;30550:58::-;30627:7;;30636;;-1:-1:-1;30117:535:0;-1:-1:-1;30117:535:0:o;24509:417::-;24592:16;;;;;;;24591:17;24583:57;;;;-1:-1:-1;;;24583:57:0;;25602:2:1;24583:57:0;;;25584:21:1;25641:2;25621:18;;;25614:30;25680:29;25660:18;;;25653:57;25727:18;;24583:57:0;25400:351:1;24583:57:0;24656:20;24667:4;24673:2;24656:10;:20::i;:::-;24655:21;:37;;;;-1:-1:-1;24686:6:0;;-1:-1:-1;;;;;24680:12:0;;;24686:6;;24680:12;24655:37;24651:268;;;-1:-1:-1;;;;;24709:9:0;;;;;;:3;:9;;;;;;;:16;;-1:-1:-1;;24709:16:0;24721:4;24709:16;;;;;;24740;:23;;-1:-1:-1;;24740:23:0;24709:16;24740:23;;;24793:15;24778:12;:30;24825:21;:28;;-1:-1:-1;;;;24825:28:0;-1:-1:-1;;;24825:28:0;;;24873:34;;;;;;1951:14:1;;1944:22;1926:41;;1914:2;1899:18;;1786:187;24873:34:0;;;;;;;;24509:417;;:::o;28693:1247::-;28788:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28788:18:0;28819:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28819:25:0;28855:19;28877:10;:8;:10::i;:::-;28855:32;-1:-1:-1;28917:21:0;28855:32;28917:7;:21;:::i;:::-;28900:14;;;:38;28951:854;;;;-1:-1:-1;;;;;28982:8:0;;;;;;:4;:8;;;;;;;;28978:369;;;29018:5;;29011:4;:12;29049:5;;29042:4;:12;29080:5;;29073:4;:12;28978:369;;;-1:-1:-1;;;;;29111:10:0;;;;;;:4;:10;;;;;;;;29107:240;;;29149:5;;29142:4;:12;29180:5;;29173:4;:12;29211:5;;29204:4;:12;29107:240;;;29264:5;;29257:4;:12;29295:5;;29288:4;:12;29326:5;;29319:4;:12;29107:240;29396:16;;29388:4;;29378:14;;:7;:14;:::i;:::-;29377:35;;;;:::i;:::-;29363:11;;;:49;29475:16;;29466:4;;29459;;:11;;29466:4;29459:11;:::i;:::-;29448:23;;:7;:23;:::i;:::-;29447:44;;;;:::i;:::-;29427:17;;;:64;;;29542:11;;;;:31;;29427:64;29542:31;:::i;:::-;29531:43;;:7;:43;:::i;:::-;29506:68;;29605:11;;;;:25;;29619:11;;29605:25;:::i;:::-;29591:11;;;:39;28951:854;;;29677:1;29663:11;;;:15;;;29693:17;;;:21;;;29729:32;;;29778:11;;;:15;28951:854;29895:11;29875:6;:17;;;:31;;;;:::i;:::-;29860:6;:11;;;:47;;;;:::i;:::-;29842:6;:14;;;:66;;;;:::i;:::-;29817:22;;;:91;-1:-1:-1;29817:22:0;28693:1247;-1:-1:-1;;;;;28693:1247:0:o;30941:403::-;31021:19;31044:10;:8;:10::i;:::-;31021:33;-1:-1:-1;31065:18:0;31086:24;31021:33;31086:10;:24;:::i;:::-;31156:4;31143:19;;;;:4;:19;;;;;;31065:45;;-1:-1:-1;31143:32:0;;31065:45;;31143:32;:::i;:::-;31134:4;31121:19;;;;:4;:19;;;;;;;;:54;;;;31189:3;:18;;;;;;31186:90;;;31257:4;31244:19;;;;:4;:19;;;;;;:32;;31266:10;;31244:32;:::i;:::-;31235:4;31222:19;;;;:4;:19;;;;;:54;31186:90;31292:43;;2377:25:1;;;31317:4:0;;-1:-1:-1;;;;;31292:43:0;;;-1:-1:-1;;;;;;;;;;;31292:43:0;2365:2:1;2350:18;31292:43:0;2231:177:1;30664:143:0;30754:4;30744:7;;:14;;;;:::i;:::-;30734:7;:24;30782:10;;:17;;30795:4;;30782:17;:::i;:::-;30769:10;:30;-1:-1:-1;;30664:143:0:o;222:316:1:-;299:6;307;315;368:2;356:9;347:7;343:23;339:32;336:52;;;384:1;381;374:12;336:52;-1:-1:-1;;407:23:1;;;477:2;462:18;;449:32;;-1:-1:-1;528:2:1;513:18;;;500:32;;222:316;-1:-1:-1;222:316:1:o;543:548::-;655:4;684:2;713;702:9;695:21;745:6;739:13;788:6;783:2;772:9;768:18;761:34;813:1;823:140;837:6;834:1;831:13;823:140;;;932:14;;;928:23;;922:30;898:17;;;917:2;894:26;887:66;852:10;;823:140;;;827:3;1012:1;1007:2;998:6;987:9;983:22;979:31;972:42;1082:2;1075;1071:7;1066:2;1058:6;1054:15;1050:29;1039:9;1035:45;1031:54;1023:62;;;;543:548;;;;:::o;1330:131::-;-1:-1:-1;;;;;1405:31:1;;1395:42;;1385:70;;1451:1;1448;1441:12;1466:315;1534:6;1542;1595:2;1583:9;1574:7;1570:23;1566:32;1563:52;;;1611:1;1608;1601:12;1563:52;1650:9;1637:23;1669:31;1694:5;1669:31;:::i;:::-;1719:5;1771:2;1756:18;;;;1743:32;;-1:-1:-1;;;1466:315:1:o;1978:248::-;2046:6;2054;2107:2;2095:9;2086:7;2082:23;2078:32;2075:52;;;2123:1;2120;2113:12;2075:52;-1:-1:-1;;2146:23:1;;;2216:2;2201:18;;;2188:32;;-1:-1:-1;1978:248:1:o;2413:160::-;2478:20;;2534:13;;2527:21;2517:32;;2507:60;;2563:1;2560;2553:12;2507:60;2413:160;;;:::o;2578:315::-;2643:6;2651;2704:2;2692:9;2683:7;2679:23;2675:32;2672:52;;;2720:1;2717;2710:12;2672:52;2759:9;2746:23;2778:31;2803:5;2778:31;:::i;:::-;2828:5;-1:-1:-1;2852:35:1;2883:2;2868:18;;2852:35;:::i;:::-;2842:45;;2578:315;;;;;:::o;2898:456::-;2975:6;2983;2991;3044:2;3032:9;3023:7;3019:23;3015:32;3012:52;;;3060:1;3057;3050:12;3012:52;3099:9;3086:23;3118:31;3143:5;3118:31;:::i;:::-;3168:5;-1:-1:-1;3225:2:1;3210:18;;3197:32;3238:33;3197:32;3238:33;:::i;:::-;2898:456;;3290:7;;-1:-1:-1;;;3344:2:1;3329:18;;;;3316:32;;2898:456::o;3359:180::-;3418:6;3471:2;3459:9;3450:7;3446:23;3442:32;3439:52;;;3487:1;3484;3477:12;3439:52;-1:-1:-1;3510:23:1;;3359:180;-1:-1:-1;3359:180:1:o;3733:247::-;3792:6;3845:2;3833:9;3824:7;3820:23;3816:32;3813:52;;;3861:1;3858;3851:12;3813:52;3900:9;3887:23;3919:31;3944:5;3919:31;:::i;3985:127::-;4046:10;4041:3;4037:20;4034:1;4027:31;4077:4;4074:1;4067:15;4101:4;4098:1;4091:15;4117:719;4160:5;4213:3;4206:4;4198:6;4194:17;4190:27;4180:55;;4231:1;4228;4221:12;4180:55;4267:6;4254:20;4293:18;4330:2;4326;4323:10;4320:36;;;4336:18;;:::i;:::-;4411:2;4405:9;4379:2;4465:13;;-1:-1:-1;;4461:22:1;;;4485:2;4457:31;4453:40;4441:53;;;4509:18;;;4529:22;;;4506:46;4503:72;;;4555:18;;:::i;:::-;4595:10;4591:2;4584:22;4630:2;4622:6;4615:18;4676:3;4669:4;4664:2;4656:6;4652:15;4648:26;4645:35;4642:55;;;4693:1;4690;4683:12;4642:55;4757:2;4750:4;4742:6;4738:17;4731:4;4723:6;4719:17;4706:54;4804:1;4797:4;4792:2;4784:6;4780:15;4776:26;4769:37;4824:6;4815:15;;;;;;4117:719;;;;:::o;4841:836::-;4963:6;4971;4979;4987;5040:3;5028:9;5019:7;5015:23;5011:33;5008:53;;;5057:1;5054;5047:12;5008:53;5096:9;5083:23;5115:31;5140:5;5115:31;:::i;:::-;5165:5;-1:-1:-1;5222:2:1;5207:18;;5194:32;5235:33;5194:32;5235:33;:::i;:::-;5287:7;-1:-1:-1;5345:2:1;5330:18;;5317:32;5368:18;5398:14;;;5395:34;;;5425:1;5422;5415:12;5395:34;5448:50;5490:7;5481:6;5470:9;5466:22;5448:50;:::i;:::-;5438:60;;5551:2;5540:9;5536:18;5523:32;5507:48;;5580:2;5570:8;5567:16;5564:36;;;5596:1;5593;5586:12;5564:36;;5619:52;5663:7;5652:8;5641:9;5637:24;5619:52;:::i;:::-;5609:62;;;4841:836;;;;;;;:::o;5942:180::-;5998:6;6051:2;6039:9;6030:7;6026:23;6022:32;6019:52;;;6067:1;6064;6057:12;6019:52;6090:26;6106:9;6090:26;:::i;6127:543::-;6215:6;6223;6276:2;6264:9;6255:7;6251:23;6247:32;6244:52;;;6292:1;6289;6282:12;6244:52;6332:9;6319:23;6361:18;6402:2;6394:6;6391:14;6388:34;;;6418:1;6415;6408:12;6388:34;6441:50;6483:7;6474:6;6463:9;6459:22;6441:50;:::i;:::-;6431:60;;6544:2;6533:9;6529:18;6516:32;6500:48;;6573:2;6563:8;6560:16;6557:36;;;6589:1;6586;6579:12;6557:36;;6612:52;6656:7;6645:8;6634:9;6630:24;6612:52;:::i;:::-;6602:62;;;6127:543;;;;;:::o;6675:388::-;6743:6;6751;6804:2;6792:9;6783:7;6779:23;6775:32;6772:52;;;6820:1;6817;6810:12;6772:52;6859:9;6846:23;6878:31;6903:5;6878:31;:::i;:::-;6928:5;-1:-1:-1;6985:2:1;6970:18;;6957:32;6998:33;6957:32;6998:33;:::i;:::-;7050:7;7040:17;;;6675:388;;;;;:::o;7068:385::-;7154:6;7162;7170;7178;7231:3;7219:9;7210:7;7206:23;7202:33;7199:53;;;7248:1;7245;7238:12;7199:53;-1:-1:-1;;7271:23:1;;;7341:2;7326:18;;7313:32;;-1:-1:-1;7392:2:1;7377:18;;7364:32;;7443:2;7428:18;7415:32;;-1:-1:-1;7068:385:1;-1:-1:-1;7068:385:1:o;7458:356::-;7660:2;7642:21;;;7679:18;;;7672:30;7738:34;7733:2;7718:18;;7711:62;7805:2;7790:18;;7458:356::o;7819:127::-;7880:10;7875:3;7871:20;7868:1;7861:31;7911:4;7908:1;7901:15;7935:4;7932:1;7925:15;7951:125;8016:9;;;8037:10;;;8034:36;;;8050:18;;:::i;8081:380::-;8160:1;8156:12;;;;8203;;;8224:61;;8278:4;8270:6;8266:17;8256:27;;8224:61;8331:2;8323:6;8320:14;8300:18;8297:38;8294:161;;8377:10;8372:3;8368:20;8365:1;8358:31;8412:4;8409:1;8402:15;8440:4;8437:1;8430:15;8294:161;;8081:380;;;:::o;8466:168::-;8539:9;;;8570;;8587:15;;;8581:22;;8567:37;8557:71;;8608:18;;:::i;8639:127::-;8700:10;8695:3;8691:20;8688:1;8681:31;8731:4;8728:1;8721:15;8755:4;8752:1;8745:15;8771:120;8811:1;8837;8827:35;;8842:18;;:::i;:::-;-1:-1:-1;8876:9:1;;8771:120::o;8896:399::-;9098:2;9080:21;;;9137:2;9117:18;;;9110:30;9176:34;9171:2;9156:18;;9149:62;-1:-1:-1;;;9242:2:1;9227:18;;9220:33;9285:3;9270:19;;8896:399::o;10014:127::-;10075:10;10070:3;10066:20;10063:1;10056:31;10106:4;10103:1;10096:15;10130:4;10127:1;10120:15;10146:128;10213:9;;;10234:11;;;10231:37;;;10248:18;;:::i;10279:127::-;10340:10;10335:3;10331:20;10328:1;10321:31;10371:4;10368:1;10361:15;10395:4;10392:1;10385:15;10411:135;10450:3;10471:17;;;10468:43;;10491:18;;:::i;:::-;-1:-1:-1;10538:1:1;10527:13;;10411:135::o;11088:545::-;11190:2;11185:3;11182:11;11179:448;;;11226:1;11251:5;11247:2;11240:17;11296:4;11292:2;11282:19;11366:2;11354:10;11350:19;11347:1;11343:27;11337:4;11333:38;11402:4;11390:10;11387:20;11384:47;;;-1:-1:-1;11425:4:1;11384:47;11480:2;11475:3;11471:12;11468:1;11464:20;11458:4;11454:31;11444:41;;11535:82;11553:2;11546:5;11543:13;11535:82;;;11598:17;;;11579:1;11568:13;11535:82;;;11539:3;;;11088:545;;;:::o;11809:1352::-;11935:3;11929:10;11962:18;11954:6;11951:30;11948:56;;;11984:18;;:::i;:::-;12013:97;12103:6;12063:38;12095:4;12089:11;12063:38;:::i;:::-;12057:4;12013:97;:::i;:::-;12165:4;;12229:2;12218:14;;12246:1;12241:663;;;;12948:1;12965:6;12962:89;;;-1:-1:-1;13017:19:1;;;13011:26;12962:89;-1:-1:-1;;11766:1:1;11762:11;;;11758:24;11754:29;11744:40;11790:1;11786:11;;;11741:57;13064:81;;12211:944;;12241:663;11035:1;11028:14;;;11072:4;11059:18;;-1:-1:-1;;12277:20:1;;;12395:236;12409:7;12406:1;12403:14;12395:236;;;12498:19;;;12492:26;12477:42;;12590:27;;;;12558:1;12546:14;;;;12425:19;;12395:236;;;12399:3;12659:6;12650:7;12647:19;12644:201;;;12720:19;;;12714:26;-1:-1:-1;;12803:1:1;12799:14;;;12815:3;12795:24;12791:37;12787:42;12772:58;12757:74;;12644:201;-1:-1:-1;;;;;12891:1:1;12875:14;;;12871:22;12858:36;;-1:-1:-1;11809:1352:1:o;13166:422::-;13255:1;13298:5;13255:1;13312:270;13333:7;13323:8;13320:21;13312:270;;;13392:4;13388:1;13384:6;13380:17;13374:4;13371:27;13368:53;;;13401:18;;:::i;:::-;13451:7;13441:8;13437:22;13434:55;;;13471:16;;;;13434:55;13550:22;;;;13510:15;;;;13312:270;;;13316:3;13166:422;;;;;:::o;13593:806::-;13642:5;13672:8;13662:80;;-1:-1:-1;13713:1:1;13727:5;;13662:80;13761:4;13751:76;;-1:-1:-1;13798:1:1;13812:5;;13751:76;13843:4;13861:1;13856:59;;;;13929:1;13924:130;;;;13836:218;;13856:59;13886:1;13877:10;;13900:5;;;13924:130;13961:3;13951:8;13948:17;13945:43;;;13968:18;;:::i;:::-;-1:-1:-1;;14024:1:1;14010:16;;14039:5;;13836:218;;14138:2;14128:8;14125:16;14119:3;14113:4;14110:13;14106:36;14100:2;14090:8;14087:16;14082:2;14076:4;14073:12;14069:35;14066:77;14063:159;;;-1:-1:-1;14175:19:1;;;14207:5;;14063:159;14254:34;14279:8;14273:4;14254:34;:::i;:::-;14324:6;14320:1;14316:6;14312:19;14303:7;14300:32;14297:58;;;14335:18;;:::i;:::-;14373:20;;13593:806;-1:-1:-1;;;13593:806:1:o;14404:131::-;14464:5;14493:36;14520:8;14514:4;14493:36;:::i;14540:112::-;14572:1;14598;14588:35;;14603:18;;:::i;:::-;-1:-1:-1;14637:9:1;;14540:112::o;14657:251::-;14727:6;14780:2;14768:9;14759:7;14755:23;14751:32;14748:52;;;14796:1;14793;14786:12;14748:52;14828:9;14822:16;14847:31;14872:5;14847:31;:::i;15222:607::-;-1:-1:-1;;;;;15581:15:1;;;15563:34;;15628:2;15613:18;;15606:34;;;;15671:2;15656:18;;15649:34;;;;15714:2;15699:18;;15692:34;;;;15763:15;;;15757:3;15742:19;;15735:44;15543:3;15795:19;;15788:35;;;;15512:3;15497:19;;15222:607::o;15834:306::-;15922:6;15930;15938;15991:2;15979:9;15970:7;15966:23;15962:32;15959:52;;;16007:1;16004;15997:12;15959:52;16036:9;16030:16;16020:26;;16086:2;16075:9;16071:18;16065:25;16055:35;;16130:2;16119:9;16115:18;16109:25;16099:35;;15834:306;;;;;:::o;16145:425::-;16347:2;16329:21;;;16386:2;16366:18;;;16359:30;16425:34;16420:2;16405:18;;16398:62;16496:31;16491:2;16476:18;;16469:59;16560:3;16545:19;;16145:425::o;23065:980::-;23327:4;23375:3;23364:9;23360:19;23406:6;23395:9;23388:25;23432:2;23470:6;23465:2;23454:9;23450:18;23443:34;23513:3;23508:2;23497:9;23493:18;23486:31;23537:6;23572;23566:13;23603:6;23595;23588:22;23641:3;23630:9;23626:19;23619:26;;23680:2;23672:6;23668:15;23654:29;;23701:1;23711:195;23725:6;23722:1;23719:13;23711:195;;;23790:13;;-1:-1:-1;;;;;23786:39:1;23774:52;;23881:15;;;;23846:12;;;;23822:1;23740:9;23711:195;;;-1:-1:-1;;;;;;;23962:32:1;;;;23957:2;23942:18;;23935:60;-1:-1:-1;;;24026:3:1;24011:19;24004:35;23923:3;23065:980;-1:-1:-1;;;23065:980:1:o

Swarm Source

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