ETH Price: $3,065.66 (+2.49%)
Gas: 4 Gwei

Token

AFFIRMATION (AFFIRM)
 

Overview

Max Total Supply

1,618,034,448 AFFIRM

Holders

196

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
337,561.356355980086661419 AFFIRM

Value
$0.00
0xf1d57557c1bb872bfd2d968b2479f801f2f087d1
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:
AFFIRMATION

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-20
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IFactoryV2 {
    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 IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
}

interface Cashier {
    function setRewardsProperties(uint256 _minPeriod, uint256 _minReflection) external;
    function tally(address user, uint256 amount) external;
    function load() external payable;
    function cashout(uint256 gas) external;
    function giveMeWelfarePlease(address hobo) external;
    function getTotalDistributed() external view returns(uint256);
    function getUserInfo(address user) external view returns(string memory, string memory, string memory, string memory);
    function getUserRealizedRewards(address user) external view returns (uint256);
    function getPendingRewards(address user) external view returns (uint256);
    function initialize() external;
    function getCurrentReward() external view returns (address);
}

contract AFFIRMATION is IERC20 {
    mapping (address => uint256) _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private _isExcludedFromDividends;
    mapping (address => bool) private _liquidityHolders;

    uint256 constant private startingSupply = 1_618_034_448;
    string constant private _name = "AFFIRMATION";
    string constant private _symbol = "AFFIRM";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * (10 ** _decimals);

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    struct Ratios {
        uint16 rewards;
        uint16 liquidity;
        uint16 marketing;
        uint16 total;
    }

    Fees public _taxRates = Fees({
        buyFee: 500,
        sellFee: 500,
        transferFee: 0
    });

    Ratios public _ratios = Ratios({
        rewards: 25,
        liquidity: 100,
        marketing: 375,
        total: 500
    });

    uint256 constant public maxBuyTaxes = 500;
    uint256 constant public maxSellTaxes = 500;
    uint256 constant public maxTransferTaxes = 500;
    uint256 constant masterTaxDivisor = 10000;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    // USDC MAINNET TOKEN CONTRACT ADDRESS
    address public USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant private ZERO = 0x0000000000000000000000000000000000000000;
    address payable public marketingWallet = payable(0xD1d759f04FaDE90De0113f78B677CA187c45F644);
    uint256 private _maxTxAmount = (_tTotal * 100) / 100;
    uint256 private _maxWalletSize = (_tTotal * 16) / 1000;

    Cashier cashier;
    uint256 cashierGas = 300000;

    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    bool public processReflect = false;
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;

    modifier inSwapFlag() {
        inSwap = true;
        _;
        inSwap = false;
    }

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountBNB, uint256 amount);

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        _tOwned[_owner] = _tTotal;
        emit Transfer(ZERO, _owner, _tTotal);
        emit OwnershipTransferred(address(0), _owner);

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _isExcludedFromDividends[_owner] = true;
        _isExcludedFromDividends[address(this)] = true;
        _isExcludedFromDividends[DEAD] = true;
        _isExcludedFromDividends[ZERO] = true;

        // Exclude common lockers from dividends and fees.
        _isExcludedFromDividends[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromDividends[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromDividends[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.

    address private _owner;

    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    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.");
        _isExcludedFromFees[_owner] = false;
        _isExcludedFromDividends[_owner] = false;
        _isExcludedFromFees[newOwner] = true;
        _isExcludedFromDividends[newOwner] = true;
        
        if (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

    function renounceOwnership() external onlyOwner {
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    receive() external payable {}
    function totalSupply() external pure override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function approveContractContingency() public onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    function setNewRouter(address newRouter) external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
        IRouter02 _newRouter = IRouter02(newRouter);
        lpPairs[lpPair] = false;
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _isExcludedFromDividends[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (!enabled) {
            lpPairs[pair] = false;
            _isExcludedFromDividends[pair] = true;
            initializer.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.");
            }
            require(!lpPairs[pair], "Pair already added to list.");
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            initializer.setLpPair(pair, true);
        }
    }

    function setInitializers(address aInit, address cInit) public onlyOwner {
        require(!tradingEnabled);
        require(cInit != address(this) && aInit != address(this) && cInit != aInit);
        cashier = Cashier(cInit);
        initializer = Initializer(aInit);
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[lpPair] = true; 
            _approve(_owner, address(dexRouter), type(uint256).max);
            _approve(address(this), address(dexRouter), type(uint256).max);
            _isExcludedFromDividends[lpPair] = true;
        } catch { revert(); }
    }

    function isExcludedFromFees(address account) external view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function isExcludedFromDividends(address account) external view returns(bool) {
        return _isExcludedFromDividends[account];
    }

    function isExcludedFromProtection(address account) external view returns (bool) {
        return _isExcludedFromProtection[account];
    }

    function isExcludedFromLimits(address account) external view returns (bool) {
        return _isExcludedFromLimits[account];
    }

    function setExcludedFromLimits(address account, bool enabled) external onlyOwner {
        _isExcludedFromLimits[account] = enabled;
    }

    function setDividendExcluded(address account, bool enabled) public onlyOwner {
        require(account != address(this) 
                && account != lpPair
                && account != DEAD);
        _isExcludedFromDividends[account] = enabled;
        if (enabled) {
            try cashier.tally(account, 0) {} catch {}
        } else {
            try cashier.tally(account, _tOwned[account]) {} catch {}
        }
    }

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

    function setExcludedFromProtection(address account, bool enabled) external onlyOwner {
        _isExcludedFromProtection[account] = enabled;
    }

    function lockTaxes() external onlyOwner {
        // This will lock taxes at their current value forever, do not call this unless you're sure.
        taxesAreLocked = true;
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(!taxesAreLocked, "Taxes are locked.");
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setWallets(address payable marketing) external onlyOwner {
        require(marketing != address(0), "Cannot be zero address.");
        marketingWallet = payable(marketing);
    }

    function setRatios(uint16 rewards, uint16 liquidity, uint16 marketing) external onlyOwner {
        _ratios.rewards = rewards;
        _ratios.liquidity = liquidity;
        _ratios.marketing = marketing;
        _ratios.total = rewards + liquidity + marketing;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.total <= total, "Cannot exceed sum of buy and sell fees.");
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal * 5 / 1000), "Max Transaction amt must be above 0.5% of total supply.");
        _maxTxAmount = (_tTotal * percent) / divisor;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 100), "Max Wallet amt must be above 1% of total supply.");
        _maxWalletSize = (_tTotal * percent) / divisor;
    }

    function getMaxTX() public view returns (uint256) {
        return _maxTxAmount / (10**_decimals);
    }

    function getMaxWallet() public view returns (uint256) {
        return _maxWalletSize / (10**_decimals);
    }

    function getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) {
        return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor);
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
        require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI.");
        require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
    }

    function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner {
        require(priceImpactSwapPercent <= 150, "Cannot set above 1.5%.");
        piSwapPercent = priceImpactSwapPercent;
    }

    function setContractSwapEnabled(bool swapEnabled, bool processReflectEnabled, bool priceImpactSwapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        processReflect = processReflectEnabled;
        piContractSwapsEnabled = priceImpactSwapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

    function setRewardsProperties(uint256 _minPeriod, uint256 _minReflection, uint256 minReflectionMultiplier) external onlyOwner {
        _minReflection = _minReflection * 10**minReflectionMultiplier;
        cashier.setRewardsProperties(_minPeriod, _minReflection);
    }

    function setReflectorSettings(uint256 gas) external onlyOwner {
        require(gas < 750000);
        cashierGas = gas;
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this)
            && from != address(initializer)
            && to != address(initializer);
    }

    function _basicTransfer(address from, address to, uint256 amount) internal returns (bool) {
        _tOwned[from] -= amount;
        _tOwned[to] += amount;
        emit Transfer(from, to, amount);
        return true;
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if (_hasLimits(from, to)) {
            if(!tradingEnabled) {
                if (!other) {
                    revert("Trading not yet enabled!");
                } else if (!_isExcludedFromProtection[from] && !_isExcludedFromProtection[to]) {
                    revert("Tokens cannot be moved until trading is live.");
                }
            }
            if (buy || sell){
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                }
            }
            if (to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        } 
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        Ratios memory ratios = _ratios;
        if (ratios.total == 0) {
            return;
        }
        
        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / (ratios.total)) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;

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

        try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapAmt,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

        uint256 amtBalance = address(this).balance;
        uint256 liquidityBalance = (amtBalance * toLiquify) / swapAmt;

        if (toLiquify > 0) {
            try dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                DEAD,
                block.timestamp
            ) {
                emit AutoLiquify(liquidityBalance, toLiquify);
            } catch {
                return;
            }
        }

        amtBalance -= liquidityBalance;
        ratios.total -= ratios.liquidity;
        bool success;
        uint256 rewardsBalance = (amtBalance * ratios.rewards) / ratios.total;
        uint256 marketingBalance = amtBalance - (rewardsBalance);

        if (ratios.rewards > 0) {
            try cashier.load{value: rewardsBalance}() {} catch {}
        }
        (success,) = marketingWallet.call{value: address(this).balance, gas: 55000}("");
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            if (address(initializer) == address(0)) {
                initializer = Initializer(address(this));
            }
            if (address(cashier) ==  address(0)) {
                cashier = Cashier(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(initializer) == address(0)){
            initializer = Initializer(address(this));
        }
        try initializer.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try initializer.getInits(balanceOf(lpPair)) returns (uint256 initThreshold, uint256 initSwapAmount) {
            swapThreshold = initThreshold;
            swapAmount = initSwapAmount;
        } catch {}
        try cashier.initialize() {} catch {}
        tradingEnabled = true;
        processReflect = true;
    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = amount;
        if (takeFee) {
            amountReceived = takeTaxes(from, amount, buy, sell);
        }
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        processRewards(from, to);
        
        return true;
    }

    function processRewards(address from, address to) internal {
        if (!_isExcludedFromDividends[from]) {
            try cashier.tally(from, _tOwned[from]) {} catch {}
        }
        if (!_isExcludedFromDividends[to]) {
            try cashier.tally(to, _tOwned[to]) {} catch {}
        }
        if (processReflect) {
            try cashier.cashout(cashierGas) {} catch {}
        }
    }

    function manualProcess(uint256 manualGas) external {
        try cashier.cashout(manualGas) {} catch {}
    }

    function takeTaxes(address from, uint256 amount, bool buy, bool sell) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (address(initializer) == address(this)
            && block.chainid != 97) { currentFee = 4500; }
        if (currentFee == 0) { return amount; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint16 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]*10**_decimals, "Not enough tokens.");
            finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, true);
        }
    }

    function manualDeposit(uint256 amount, uint256 multiplier) external onlyOwner {
        try cashier.load{value: amount * 10**multiplier}() {} catch {}
    }

    function sweepContingency() external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(_owner).transfer(address(this).balance);
    }

    function sweepExternalTokens(address token) external onlyOwner {
        if (_hasLiqBeenAdded) {
            require(token != address(this), "Cannot sweep native tokens.");
        }
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }

    function claimPendingRewards() external {
        cashier.giveMeWelfarePlease(msg.sender);
    }

    function getTotalReflected() external view returns (uint256) {
        return cashier.getTotalDistributed();
    }

    function getUserInfo(address user) external view returns (string memory, string memory, string memory, string memory) {
        return cashier.getUserInfo(user);
    }

    function getUserRealizedGains(address user) external view returns (uint256) {
        return cashier.getUserRealizedRewards(user);
    }

    function getUserUnpaidEarnings(address user) external view returns (uint256) {
        return cashier.getPendingRewards(user);
    }

    function getCurrentReward() external view returns (address) {
        return cashier.getCurrentReward();
    }
}

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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"rewards","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"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":[],"name":"approveContractContingency","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":"claimPendingRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentReward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalReflected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserInfo","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserRealizedGains","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromDividends","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"multiplier","type":"uint256"}],"name":"manualDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"manualGas","type":"uint256"}],"name":"manualProcess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processReflect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"processReflectEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setDividendExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"aInit","type":"address"},{"internalType":"address","name":"cInit","type":"address"}],"name":"setInitializers","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":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"rewards","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setReflectorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minReflection","type":"uint256"},{"internalType":"uint256","name":"minReflectionMultiplier","type":"uint256"}],"name":"setRewardsProperties","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":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600060028190556101f4608081905260a081905260c0919091526009805465ffffffffffff19166301f401f4179055610160604052601960e05260646101008190526101776101205261014091909152600a80546701f40177006400196001600160401b0319909116178155600d80546001600160a01b031990811673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817909155600e805490911673d1d759f04fade90de0113f78b677ca187c45f644179055620000c19060129062000535565b620000d1906360713f106200054d565b620000de9060646200054d565b620000ea919062000567565b600f556103e8620000fe6012600a62000535565b6200010e906360713f106200054d565b6200011b9060106200054d565b62000127919062000567565b601055620493e060129081556013805461ff0019169055600a60178190556018805462ffffff19169055601980546001600160a01b031916331790556200016f919062000535565b6200017f906360713f106200054d565b601980546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001d36012600a62000535565b620001e3906360713f106200054d565b60405190815260200160405180910390a36019546040516001600160a01b03909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3601980546001600160a01b0390811660009081526005602081815260408084208054600160ff1991821681179092553080875283872080548316841790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805483168417905597549096168552600783528185208054871682179055958452832080548516861790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548516861790557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df80548516861790557f369570fab114047d6931f481fe65511f6f30128550291df97f26a8b12fbb064780548516861790557f76e04a725e11e15e15ab8a12e133522d6ebb6e4ce8401eb7fccaa3f298dfd6e580548516861790557fa41ba8ce755a9610529fb4698883547ff2835b475c582169085f2e8c39e304f78054851686179055527f7e99e1e5c40ec22aa71ab68cea1ae3bb6f232576acb26d0b4e86f2583f2d4e3c80548316841790557f3b88920f3cdb6a2d8f52fb772e91e6e89cd00cd610f4b9dfb804ff1eafb41e59805483168417905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527f5ded1e7b8c25e3df69e401c18bf55e92f7343717ed383d2e5c8e4004d4de223f805490911690911790556200058a565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004775781600019048211156200045b576200045b62000420565b808516156200046957918102915b93841c93908002906200043b565b509250929050565b60008262000490575060016200052f565b816200049f575060006200052f565b8160018114620004b85760028114620004c357620004e3565b60019150506200052f565b60ff841115620004d757620004d762000420565b50506001821b6200052f565b5060208310610133831016604e8410600b841016171562000508575081810a6200052f565b62000514838362000436565b80600019048211156200052b576200052b62000420565b0290505b92915050565b60006200054660ff8416836200047f565b9392505050565b80820281158282048414176200052f576200052f62000420565b6000826200058557634e487b7160e01b600052601260045260246000fd5b500490565b614ded806200059a6000396000f3fe6080604052600436106103fe5760003560e01c80636ebd007811610213578063ab5cb5a611610123578063eafb5a3c116100ab578063f18567bf1161007a578063f18567bf14610cb0578063f7c245ea14610cd0578063fb78680d14610ce5578063fdb78c0e14610d05578063feadde9c14610d2457600080fd5b8063eafb5a3c14610c41578063eb50e70e14610c61578063ee5d9c2d14610c81578063efe7dc9014610c9657600080fd5b8063b7df8b36116100f2578063b7df8b3614610b1d578063c705c56914610b37578063cf84770614610b70578063d0b1449d14610bdb578063dd62ed3e14610bfb57600080fd5b8063ab5cb5a614610add578063b1b08f711461065e578063b3d514fb1461065e578063b421626c14610afd57600080fd5b80638a63bd9b116101a657806395d89b411161017557806395d89b4114610a2e578063a53f8ba114610a5d578063a9059cbb14610a7d578063aa22b17214610a9d578063ab558e4d14610abd57600080fd5b80638a63bd9b146109da5780638a8c523c146109ef5780638aec854214610a0457806392bd7b2c14610a1957600080fd5b806378648edf116101e257806378648edf1461096757806380c581d11461097c578063893d20e81461099c57806389a30271146109ba57600080fd5b80636ebd0078146108e757806370a08231146108fc578063715018a61461093257806375f0a8741461094757600080fd5b8063313ce5671161030e5780634fb2e45d116102a15780635cce86cd116102705780635cce86cd1461081e5780636372c68f146108575780636386c1c7146108775780636505079a146108a75780636b639a25146108c757600080fd5b80634fb2e45d146107855780634fbee193146107a557806350a8e016146107de578063590ffdce146107fe57600080fd5b8063452ed4f1116102dd578063452ed4f1146107065780634ada218b146107265780634bbb93eb146107455780634e718e481461076557600080fd5b8063313ce5671461068a57806332cde664146106a657806336fddb04146106c65780633f3cf56c146106e657600080fd5b80630fa604e411610391578063260039571161036057806326003957146106085780632610eaca1461062857806328577751146106485780632b28fc7a1461065e5780632e8fa8211461067457600080fd5b80630fa604e41461059c57806318160ddd146105b1578063218950bc146105c657806323b872dd146105e857600080fd5b80630758d924116103cd5780630758d924146104f457806307dd79e014610519578063095ea7b3146105435780630dcbcf1c1461056357600080fd5b806303fd2a451461040a5780630445b6671461043d578063069d955f1461046157806306fdde03146104b757600080fd5b3661040557005b600080fd5b34801561041657600080fd5b5061042061dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561044957600080fd5b5061045360145481565b604051908152602001610434565b34801561046d57600080fd5b506009546104929061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610434565b3480156104c357600080fd5b5060408051808201909152600b81526a20a32324a926a0aa24a7a760a91b60208201525b604051610434919061450f565b34801561050057600080fd5b50600b546104209061010090046001600160a01b031681565b34801561052557600080fd5b50600b546105339060ff1681565b6040519015158152602001610434565b34801561054f57600080fd5b5061053361055e366004614537565b610d44565b34801561056f57600080fd5b5061053361057e366004614563565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105a857600080fd5b50610453610d5b565b3480156105bd57600080fd5b50610453610d7b565b3480156105d257600080fd5b506105e66105e1366004614580565b610d97565b005b3480156105f457600080fd5b506105336106033660046145b9565b610fb2565b34801561061457600080fd5b506105e66106233660046145fa565b61102a565b34801561063457600080fd5b506105e66106433660046146f2565b611173565b34801561065457600080fd5b5061045360175481565b34801561066a57600080fd5b506104536101f481565b34801561068057600080fd5b5061045360155481565b34801561069657600080fd5b5060405160128152602001610434565b3480156106b257600080fd5b506105e66106c13660046147cb565b611328565b3480156106d257600080fd5b506105e66106e136600461481c565b61147c565b3480156106f257600080fd5b506105e66107013660046145fa565b6114ef565b34801561071257600080fd5b50600c54610420906001600160a01b031681565b34801561073257600080fd5b5060185461053390610100900460ff1681565b34801561075157600080fd5b5061045361076036600461484a565b611644565b34801561077157600080fd5b506105e661078036600461484a565b611678565b34801561079157600080fd5b506105e66107a0366004614563565b611716565b3480156107b157600080fd5b506105336107c0366004614563565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156107ea57600080fd5b506018546105339062010000900460ff1681565b34801561080a57600080fd5b506105e661081936600461481c565b611950565b34801561082a57600080fd5b50610533610839366004614563565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561086357600080fd5b50610453610872366004614563565b6119c3565b34801561088357600080fd5b50610897610892366004614563565b611a33565b6040516104349493929190614863565b3480156108b357600080fd5b506105e66108c23660046148b0565b611abb565b3480156108d357600080fd5b506105e66108e236600461481c565b611b72565b3480156108f357600080fd5b50610453611ce0565b34801561090857600080fd5b50610453610917366004614563565b6001600160a01b031660009081526020819052604090205490565b34801561093e57600080fd5b506105e6611cfb565b34801561095357600080fd5b50600e54610420906001600160a01b031681565b34801561097357600080fd5b506105e6611e25565b34801561098857600080fd5b506105e661099736600461481c565b611e7c565b3480156109a857600080fd5b506019546001600160a01b0316610420565b3480156109c657600080fd5b50600d54610420906001600160a01b031681565b3480156109e657600080fd5b5061053361209c565b3480156109fb57600080fd5b506105e661210c565b348015610a1057600080fd5b506104206123c1565b348015610a2557600080fd5b506105e661242f565b348015610a3a57600080fd5b5060408051808201909152600681526541464649524d60d01b60208201526104e7565b348015610a6957600080fd5b506105e6610a783660046145fa565b61248e565b348015610a8957600080fd5b50610533610a98366004614537565b61253a565b348015610aa957600080fd5b506105e6610ab83660046147cb565b61254e565b348015610ac957600080fd5b506105e6610ad8366004614563565b612693565b348015610ae957600080fd5b50610453610af8366004614563565b61282e565b348015610b0957600080fd5b506105e6610b183660046148fb565b612861565b348015610b2957600080fd5b506016546105339060ff1681565b348015610b4357600080fd5b50610533610b52366004614563565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610b7c57600080fd5b50600a54610bad9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff95861681529385166020850152918416918301919091529091166060820152608001610434565b348015610be757600080fd5b506105e6610bf636600461484a565b612929565b348015610c0757600080fd5b50610453610c16366004614580565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610c4d57600080fd5b506105e6610c5c366004614563565b612985565b348015610c6d57600080fd5b506105e6610c7c366004614563565b612d9e565b348015610c8d57600080fd5b506105e6612e5e565b348015610ca257600080fd5b506018546105339060ff1681565b348015610cbc57600080fd5b506105e6610ccb36600461484a565b612f3b565b348015610cdc57600080fd5b50610453612f9a565b348015610cf157600080fd5b506105e6610d00366004614927565b613008565b348015610d1157600080fd5b5060135461053390610100900460ff1681565b348015610d3057600080fd5b506105e6610d3f36600461481c565b6132c4565b6000610d51338484613337565b5060015b92915050565b6000610d696012600a614a53565b601054610d769190614a62565b905090565b6000610d896012600a614a53565b610d76906360713f10614a84565b6019546001600160a01b03163314610de45760405162461bcd60e51b81526020600482015260116024820152600080516020614d9883398151915260448201526064015b60405180910390fd5b601854610100900460ff1615610df957600080fd5b6001600160a01b0381163014801590610e1b57506001600160a01b0382163014155b8015610e395750816001600160a01b0316816001600160a01b031614155b610e4257600080fd5b601180546001600160a01b0319166001600160a01b0383811691909117909155601880546301000000600160b81b031916630100000085841681029190911791829055604080516330fe427560e21b81528151929093049093169263c3f909d4926004808201939182900301816000875af1925050508015610ee1575060408051601f3d908101601f19168201909252610ede91810190614a9b565b60015b610eea57600080fd5b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff191690911790556019549254610f679383169291900416600019613337565b600b54610f8690309061010090046001600160a01b0316600019613337565b5050600c546001600160a01b03166000908152600760205260409020805460ff191660011790555b5050565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914611017576001600160a01b038416600090815260036020908152604080832033845290915281208054849290611011908490614aca565b90915550505b61102284848461345b565b949350505050565b6019546001600160a01b031633146110725760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b60646110806012600a614a53565b61108e906360713f10614a84565b6110989190614a62565b81836110a66012600a614a53565b6110b4906360713f10614a84565b6110be9190614a84565b6110c89190614a62565b101561113c5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610ddb565b808261114a6012600a614a53565b611158906360713f10614a84565b6111629190614a84565b61116c9190614a62565b6010555050565b6019546001600160a01b031633146111bb5760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b805182511461120c5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610ddb565b60005b82518161ffff161015611323576112286012600a614a53565b828261ffff168151811061123e5761123e614add565b60200260200101516112509190614a84565b3360009081526020819052604090205410156112ae5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610ddb565b61131033848361ffff16815181106112c8576112c8614add565b60200260200101516012600a6112de9190614a53565b858561ffff16815181106112f4576112f4614add565b60200260200101516113069190614a84565b600080600161392d565b508061131b81614af3565b91505061120f565b505050565b6019546001600160a01b031633146113705760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b600b5460ff16156113c35760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610ddb565b6101f48361ffff16111580156113df57506101f48261ffff1611155b80156113f157506101f48161ffff1611155b61143d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ddb565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6019546001600160a01b031633146114c45760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6019546001600160a01b031633146115375760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6103e86115466012600a614a53565b611554906360713f10614a84565b61155f906005614a84565b6115699190614a62565b81836115776012600a614a53565b611585906360713f10614a84565b61158f9190614a84565b6115999190614a62565b101561160d5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ddb565b808261161b6012600a614a53565b611629906360713f10614a84565b6116339190614a84565b61163d9190614a62565b600f555050565b600c546001600160a01b03166000908152602081905260408120546127109061166e908490614a84565b610d559190614a62565b6019546001600160a01b031633146116c05760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b60968111156117115760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610ddb565b601755565b6019546001600160a01b0316331461175e5760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6001600160a01b0381166117da5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ddb565b61deac196001600160a01b0382160161185b5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ddb565b601980546001600160a01b039081166000908152600560208181526040808420805460ff199081169091558654861685526007808452828620805483169055888716865293835281852080548216600190811790915593835281852080549091169093179092559354909216815291829052902054156118fe576019546001600160a01b03166000818152602081905260409020546118fc91908390611306565b505b601980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6019546001600160a01b031633146119985760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b601154604051631ebbee0360e31b81526001600160a01b038381166004830152600092169063f5df7018906024015b602060405180830381865afa158015611a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d559190614b14565b601154604051636386c1c760e01b81526001600160a01b0383811660048301526060928392839283921690636386c1c790602401600060405180830381865afa158015611a84573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aac9190810190614b91565b93509350935093509193509193565b6019546001600160a01b03163314611b035760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6013805461ff001916610100851515908102919091179091556018805460ff1990811685151517909155601680549091168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a1505050565b6019546001600160a01b03163314611bba5760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6001600160a01b0382163014801590611be15750600c546001600160a01b03838116911614155b8015611bf857506001600160a01b03821661dead14155b611c0157600080fd5b6001600160a01b0382166000908152600760205260409020805460ff19168215801591909117909155611c9757601154604051636f823f4f60e11b81526001600160a01b038481166004830152600060248301529091169063df047e9e906044015b600060405180830381600087803b158015611c7d57600080fd5b505af1925050508015611c8e575060015b15610fae575050565b6011546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401611c63565b6000611cee6012600a614a53565b600f54610d769190614a62565b6019546001600160a01b03163314611d435760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b601854610100900460ff16611dc05760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610ddb565b601954611dd7906001600160a01b03166000611950565b601980546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6019546001600160a01b03163314611e6d5760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b600b805460ff19166001179055565b6019546001600160a01b03163314611ec45760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b80611f6c576001600160a01b038281166000818152600160208181526040808420805460ff1990811690915560079092528084208054909216909217905560185490516380c581d160e01b81526004810193909352602483019190915263010000009004909116906380c581d1906044015b600060405180830381600087803b158015611f5057600080fd5b505af1158015611f64573d6000803e3d6000fd5b505050505050565b60025415611fd3576203f48060025442611f869190614aca565b11611fd35760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610ddb565b6001600160a01b03821660009081526001602052604090205460ff161561203c5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610ddb565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560185491516380c581d160e01b81526004810193909352602483015263010000009004909116906380c581d190604401611f36565b6019546000906001600160a01b031633146120e75760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b600b5461210690309061010090046001600160a01b0316600019613337565b50600190565b6019546001600160a01b031633146121545760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b601854610100900460ff16156121ac5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ddb565b60185462010000900460ff166122045760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ddb565b601854630100000090046001600160a01b031661223757601880546301000000600160b81b031916306301000000021790555b601854600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff421660448201526012606482015263010000009092041690636c115c3490608401600060405180830381600087803b1580156122aa57600080fd5b505af19250505080156122bb575060015b50601854600c546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b81526004810191909152630100000090920416906325a71cae9060240160408051808303816000875af192505050801561233f575060408051601f3d908101601f1916820190925261233c91810190614c3e565b60015b1561234e576014919091556015555b601160009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561239e57600080fd5b505af19250505080156123af575060015b506018805461ffff1916610101179055565b6011546040805163457642a160e11b815290516000926001600160a01b031691638aec85429160048083019260209291908290030181865afa15801561240b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d769190614c62565b601154604051632e6f0efd60e01b81523360048201526001600160a01b0390911690632e6f0efd90602401600060405180830381600087803b15801561247457600080fd5b505af1158015612488573d6000803e3d6000fd5b50505050565b6019546001600160a01b031633146124d65760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6011546001600160a01b03166386d5c4be6124f283600a614c7f565b6124fc9085614a84565b6040518263ffffffff1660e01b81526004016000604051808303818588803b15801561252757600080fd5b505af193505050508015611c8e57505050565b600061254733848461345b565b9392505050565b6019546001600160a01b031633146125965760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b600a805461ffff8381166401000000000265ffff0000000019868316620100000263ffffffff19909416928816929092179290921716179055806125da8385614c8b565b6125e49190614c8b565b600a805467ffff0000000000001916660100000000000061ffff9384160217905560095460009161261e9162010000810482169116614c8b565b600a5461ffff918216925066010000000000009004168110156124885760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610ddb565b6019546001600160a01b031633146126db5760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b60185462010000900460ff161561274457306001600160a01b038216036127445760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610ddb565b6019546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa15801561279b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bf9190614b14565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561280a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113239190614cad565b60115460405163f6ed201760e01b81526001600160a01b038381166004830152600092169063f6ed2017906024016119f2565b6019546001600160a01b031633146128a95760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6128b481600a614c7f565b6128be9083614a84565b6011546040516302ab5aa360e31b815260048101869052602481018390529193506001600160a01b03169063155ad51890604401600060405180830381600087803b15801561290c57600080fd5b505af1158015612920573d6000803e3d6000fd5b50505050505050565b6019546001600160a01b031633146129715760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b620b71b0811061298057600080fd5b601255565b6019546001600160a01b031633146129cd5760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b60185462010000900460ff1615612a265760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610ddb565b600c546001600160a01b039081166000908152600160209081526040808320805460ff19169055805163c45a015560e01b81529051859485169263c45a015592600480820193918290030181865afa158015612a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aaa9190614c62565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1b9190614c62565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8a9190614c62565b90506001600160a01b038116612d0357816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfc9190614c62565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6d9190614c62565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cde9190614c62565b600c80546001600160a01b0319166001600160a01b0392909216919091179055612d1f565b600c80546001600160a01b0319166001600160a01b0383161790555b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c805483166000908152600160208181526040808420805460ff199081168517909155945487168452600790915290912080549092161790559154611323923092910416600019613337565b6019546001600160a01b03163314612de65760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6001600160a01b038116612e3c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610ddb565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6019546001600160a01b03163314612ea65760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b60185462010000900460ff1615612eff5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ddb565b6019546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612f38573d6000803e3d6000fd5b50565b60115460405163a9e732bb60e01b8152600481018390526001600160a01b039091169063a9e732bb90602401600060405180830381600087803b158015612f8157600080fd5b505af1925050508015612f92575060015b15612f385750565b60115460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa158015612fe4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d769190614b14565b6019546001600160a01b031633146130505760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b828461305e6012600a614a53565b61306c906360713f10614a84565b6130769190614a84565b6130809190614a62565b60145580826130916012600a614a53565b61309f906360713f10614a84565b6130a99190614a84565b6130b39190614a62565b601581905560145411156131135760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610ddb565b600c546001600160a01b03166000908152602081905260409020546127109061313d906096614a84565b6131479190614a62565b60155411156131a45760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610ddb565b620f42406131b46012600a614a53565b6131c2906360713f10614a84565b6131cc9190614a62565b60155410156132345760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ddb565b620f42406132446012600a614a53565b613252906360713f10614a84565b61325c9190614a62565b60145410156124885760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ddb565b6019546001600160a01b0316331461330c5760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6001600160a01b0383166133995760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ddb565b6001600160a01b0382166133fa5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ddb565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166134c15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ddb565b6001600160a01b0383166135235760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ddb565b600082116135855760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ddb565b6001600160a01b0384166000908152600160205260408120548190819060ff16156135b357600192506135e1565b6001600160a01b03861660009081526001602052604090205460ff16156135dd57600191506135e1565b5060015b6135eb8787613b35565b1561387d57601854610100900460ff166136f1578061364c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ddb565b6001600160a01b03871660009081526004602052604090205460ff1615801561368e57506001600160a01b03861660009081526004602052604090205460ff16155b156136f15760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610ddb565b82806136fa5750815b156137a9576001600160a01b03871660009081526006602052604090205460ff1615801561374157506001600160a01b03861660009081526006602052604090205460ff16155b156137a957600f548511156137a95760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ddb565b600b546001600160a01b0387811661010090920416148015906137ca575081155b1561387d576001600160a01b03861660009081526006602052604090205460ff1661387d5760105485613812886001600160a01b031660009081526020819052604090205490565b61381c9190614cca565b111561387d5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610ddb565b81156139145760135460ff1661391457601354610100900460ff1615613914573060009081526020819052604090205460145481106139125760155460165460ff16156138fc57601754600c546001600160a01b0316600090815260208190526040902054612710916138ef91614a84565b6138f99190614a62565b90505b808210613907578091505b61391082613c4c565b505b505b61392287878786868661392d565b979650505050505050565b6001600160a01b03861660009081526005602052604081205460019060ff168061396f57506001600160a01b03871660009081526005602052604090205460ff165b15613978575060005b6001600160a01b038816600090815260208190526040812080548892906139a0908490614aca565b9091555086905081156139bc576139b9898888886140f9565b90505b6001600160a01b038816600090815260208190526040812080548392906139e4908490614cca565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a3091815260200190565b60405180910390a360185462010000900460ff16613b1c57613a528989614206565b60185462010000900460ff16158015613a705750613a708989613b35565b8015613a9557506001600160a01b03891660009081526004602052604090205460ff16155b8015613aba57506001600160a01b03881660009081526004602052604090205460ff16155b8015613ac4575083155b15613b1c5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610ddb565b613b26898961435d565b50600198975050505050505050565b6019546000906001600160a01b03848116911614801590613b6457506019546001600160a01b03838116911614155b8015613b7b57506019546001600160a01b03163214155b8015613ba057506001600160a01b03821660009081526008602052604090205460ff16155b8015613bc557506001600160a01b03831660009081526008602052604090205460ff16155b8015613bdc57506001600160a01b03821661dead14155b8015613bf057506001600160a01b03821615155b8015613c0557506001600160a01b0383163014155b8015613c2657506018546001600160a01b0384811663010000009092041614155b8015612547575050601854630100000090046001600160a01b0390811691161415919050565b6013805460ff1916600117905560408051608081018252600a5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000900490911660608201819052600003613cad57506140ec565b306000908152600360209081526040808320600b5461010090046001600160a01b0316845290915290205460001914613d1057306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b60006002826060015161ffff16836020015161ffff1685613d319190614a84565b613d3b9190614a62565b613d459190614a62565b90506000613d538285614aca565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613d8d57613d8d614add565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e249190614c62565b81600181518110613e3757613e37614add565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac94790613e84908590600090869030904290600401614cdd565b600060405180830381600087803b158015613e9e57600080fd5b505af1925050508015613eaf575060015b613ebc57505050506140ec565b47600083613eca8684614a84565b613ed49190614a62565b90508415613fb757600b5460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526101009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af193505050508015613f6b575060408051601f3d908101601f19168201909252613f6891810190614d4e565b60015b613f7a575050505050506140ec565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b613fc18183614aca565b9150856020015186606001818151613fd99190614d7c565b61ffff9081169091526060880151885160009350839291821691613ffe911686614a84565b6140089190614a62565b905060006140168286614aca565b895190915061ffff161561408857601160009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561407457600080fd5b505af193505050508015614086575060015b505b600e546040516001600160a01b039091169061d6d89047906000818181858888f193505050503d80600081146140da576040519150601f19603f3d011682016040523d82523d6000602084013e6140df565b606091505b5050505050505050505050505b506013805460ff19169055565b600080831561410f575060095461ffff16614139565b8215614128575060095462010000900461ffff16614139565b50600954640100000000900461ffff165b601854630100000090046001600160a01b03163014801561415b575046606114155b1561416557506111945b806000036141765784915050611022565b60006127106141858388614a84565b61418f9190614a62565b905080156141fc5730600090815260208190526040812080548392906141b6908490614cca565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6139228187614aca565b60185462010000900460ff161561426b5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ddb565b6142758282613b35565b15801561428f5750600c546001600160a01b038281169116145b15610fae576001600160a01b038083166000908152600860205260409020805460ff191660011790556018805462ff0000191662010000179081905563010000009004166142f357601880546301000000600160b81b031916306301000000021790555b6011546001600160a01b031661431657601180546001600160a01b031916301790555b6013805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b03821660009081526007602052604090205460ff166143ee576011546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b1580156143db57600080fd5b505af19250505080156143ec575060015b505b6001600160a01b03811660009081526007602052604090205460ff1661447f576011546001600160a01b0382811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b15801561446c57600080fd5b505af192505050801561447d575060015b505b60185460ff1615610fae5760115460125460405163a9e732bb60e01b81526001600160a01b039092169163a9e732bb91611c639160040190815260200190565b60005b838110156144da5781810151838201526020016144c2565b50506000910152565b600081518084526144fb8160208601602086016144bf565b601f01601f19169290920160200192915050565b60208152600061254760208301846144e3565b6001600160a01b0381168114612f3857600080fd5b6000806040838503121561454a57600080fd5b823561455581614522565b946020939093013593505050565b60006020828403121561457557600080fd5b813561254781614522565b6000806040838503121561459357600080fd5b823561459e81614522565b915060208301356145ae81614522565b809150509250929050565b6000806000606084860312156145ce57600080fd5b83356145d981614522565b925060208401356145e981614522565b929592945050506040919091013590565b6000806040838503121561460d57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561465b5761465b61461c565b604052919050565b600067ffffffffffffffff82111561467d5761467d61461c565b5060051b60200190565b600082601f83011261469857600080fd5b813560206146ad6146a883614663565b614632565b82815260059290921b840181019181810190868411156146cc57600080fd5b8286015b848110156146e757803583529183019183016146d0565b509695505050505050565b6000806040838503121561470557600080fd5b823567ffffffffffffffff8082111561471d57600080fd5b818501915085601f83011261473157600080fd5b813560206147416146a883614663565b82815260059290921b8401810191818101908984111561476057600080fd5b948201945b8386101561478757853561477881614522565b82529482019490820190614765565b9650508601359250508082111561479d57600080fd5b506147aa85828601614687565b9150509250929050565b803561ffff811681146147c657600080fd5b919050565b6000806000606084860312156147e057600080fd5b6147e9846147b4565b92506147f7602085016147b4565b9150614805604085016147b4565b90509250925092565b8015158114612f3857600080fd5b6000806040838503121561482f57600080fd5b823561483a81614522565b915060208301356145ae8161480e565b60006020828403121561485c57600080fd5b5035919050565b60808152600061487660808301876144e3565b828103602084015261488881876144e3565b9050828103604084015261489c81866144e3565b9050828103606084015261392281856144e3565b6000806000606084860312156148c557600080fd5b83356148d08161480e565b925060208401356148e08161480e565b915060408401356148f08161480e565b809150509250925092565b60008060006060848603121561491057600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561493d57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156149aa57816000190482111561499057614990614959565b8085161561499d57918102915b93841c9390800290614974565b509250929050565b6000826149c157506001610d55565b816149ce57506000610d55565b81600181146149e457600281146149ee57614a0a565b6001915050610d55565b60ff8411156149ff576149ff614959565b50506001821b610d55565b5060208310610133831016604e8410600b8410161715614a2d575081810a610d55565b614a37838361496f565b8060001904821115614a4b57614a4b614959565b029392505050565b600061254760ff8416836149b2565b600082614a7f57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610d5557610d55614959565b60008060408385031215614aae57600080fd5b8251614ab981614522565b60208401519092506145ae81614522565b81810381811115610d5557610d55614959565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103614b0a57614b0a614959565b6001019392505050565b600060208284031215614b2657600080fd5b5051919050565b600082601f830112614b3e57600080fd5b815167ffffffffffffffff811115614b5857614b5861461c565b614b6b601f8201601f1916602001614632565b818152846020838601011115614b8057600080fd5b6110228260208301602087016144bf565b60008060008060808587031215614ba757600080fd5b845167ffffffffffffffff80821115614bbf57600080fd5b614bcb88838901614b2d565b95506020870151915080821115614be157600080fd5b614bed88838901614b2d565b94506040870151915080821115614c0357600080fd5b614c0f88838901614b2d565b93506060870151915080821115614c2557600080fd5b50614c3287828801614b2d565b91505092959194509250565b60008060408385031215614c5157600080fd5b505080516020909101519092909150565b600060208284031215614c7457600080fd5b815161254781614522565b600061254783836149b2565b61ffff818116838216019080821115614ca657614ca6614959565b5092915050565b600060208284031215614cbf57600080fd5b81516125478161480e565b80820180821115610d5557610d55614959565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015614d2d5784516001600160a01b031683529383019391830191600101614d08565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215614d6357600080fd5b8351925060208401519150604084015190509250925092565b61ffff828116828216039080821115614ca657614ca661495956fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220bd7cb4375f0898e4c72318b0d71c81b48f6fe28c3a00ed8db192354a2c22356364736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103fe5760003560e01c80636ebd007811610213578063ab5cb5a611610123578063eafb5a3c116100ab578063f18567bf1161007a578063f18567bf14610cb0578063f7c245ea14610cd0578063fb78680d14610ce5578063fdb78c0e14610d05578063feadde9c14610d2457600080fd5b8063eafb5a3c14610c41578063eb50e70e14610c61578063ee5d9c2d14610c81578063efe7dc9014610c9657600080fd5b8063b7df8b36116100f2578063b7df8b3614610b1d578063c705c56914610b37578063cf84770614610b70578063d0b1449d14610bdb578063dd62ed3e14610bfb57600080fd5b8063ab5cb5a614610add578063b1b08f711461065e578063b3d514fb1461065e578063b421626c14610afd57600080fd5b80638a63bd9b116101a657806395d89b411161017557806395d89b4114610a2e578063a53f8ba114610a5d578063a9059cbb14610a7d578063aa22b17214610a9d578063ab558e4d14610abd57600080fd5b80638a63bd9b146109da5780638a8c523c146109ef5780638aec854214610a0457806392bd7b2c14610a1957600080fd5b806378648edf116101e257806378648edf1461096757806380c581d11461097c578063893d20e81461099c57806389a30271146109ba57600080fd5b80636ebd0078146108e757806370a08231146108fc578063715018a61461093257806375f0a8741461094757600080fd5b8063313ce5671161030e5780634fb2e45d116102a15780635cce86cd116102705780635cce86cd1461081e5780636372c68f146108575780636386c1c7146108775780636505079a146108a75780636b639a25146108c757600080fd5b80634fb2e45d146107855780634fbee193146107a557806350a8e016146107de578063590ffdce146107fe57600080fd5b8063452ed4f1116102dd578063452ed4f1146107065780634ada218b146107265780634bbb93eb146107455780634e718e481461076557600080fd5b8063313ce5671461068a57806332cde664146106a657806336fddb04146106c65780633f3cf56c146106e657600080fd5b80630fa604e411610391578063260039571161036057806326003957146106085780632610eaca1461062857806328577751146106485780632b28fc7a1461065e5780632e8fa8211461067457600080fd5b80630fa604e41461059c57806318160ddd146105b1578063218950bc146105c657806323b872dd146105e857600080fd5b80630758d924116103cd5780630758d924146104f457806307dd79e014610519578063095ea7b3146105435780630dcbcf1c1461056357600080fd5b806303fd2a451461040a5780630445b6671461043d578063069d955f1461046157806306fdde03146104b757600080fd5b3661040557005b600080fd5b34801561041657600080fd5b5061042061dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561044957600080fd5b5061045360145481565b604051908152602001610434565b34801561046d57600080fd5b506009546104929061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610434565b3480156104c357600080fd5b5060408051808201909152600b81526a20a32324a926a0aa24a7a760a91b60208201525b604051610434919061450f565b34801561050057600080fd5b50600b546104209061010090046001600160a01b031681565b34801561052557600080fd5b50600b546105339060ff1681565b6040519015158152602001610434565b34801561054f57600080fd5b5061053361055e366004614537565b610d44565b34801561056f57600080fd5b5061053361057e366004614563565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105a857600080fd5b50610453610d5b565b3480156105bd57600080fd5b50610453610d7b565b3480156105d257600080fd5b506105e66105e1366004614580565b610d97565b005b3480156105f457600080fd5b506105336106033660046145b9565b610fb2565b34801561061457600080fd5b506105e66106233660046145fa565b61102a565b34801561063457600080fd5b506105e66106433660046146f2565b611173565b34801561065457600080fd5b5061045360175481565b34801561066a57600080fd5b506104536101f481565b34801561068057600080fd5b5061045360155481565b34801561069657600080fd5b5060405160128152602001610434565b3480156106b257600080fd5b506105e66106c13660046147cb565b611328565b3480156106d257600080fd5b506105e66106e136600461481c565b61147c565b3480156106f257600080fd5b506105e66107013660046145fa565b6114ef565b34801561071257600080fd5b50600c54610420906001600160a01b031681565b34801561073257600080fd5b5060185461053390610100900460ff1681565b34801561075157600080fd5b5061045361076036600461484a565b611644565b34801561077157600080fd5b506105e661078036600461484a565b611678565b34801561079157600080fd5b506105e66107a0366004614563565b611716565b3480156107b157600080fd5b506105336107c0366004614563565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156107ea57600080fd5b506018546105339062010000900460ff1681565b34801561080a57600080fd5b506105e661081936600461481c565b611950565b34801561082a57600080fd5b50610533610839366004614563565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561086357600080fd5b50610453610872366004614563565b6119c3565b34801561088357600080fd5b50610897610892366004614563565b611a33565b6040516104349493929190614863565b3480156108b357600080fd5b506105e66108c23660046148b0565b611abb565b3480156108d357600080fd5b506105e66108e236600461481c565b611b72565b3480156108f357600080fd5b50610453611ce0565b34801561090857600080fd5b50610453610917366004614563565b6001600160a01b031660009081526020819052604090205490565b34801561093e57600080fd5b506105e6611cfb565b34801561095357600080fd5b50600e54610420906001600160a01b031681565b34801561097357600080fd5b506105e6611e25565b34801561098857600080fd5b506105e661099736600461481c565b611e7c565b3480156109a857600080fd5b506019546001600160a01b0316610420565b3480156109c657600080fd5b50600d54610420906001600160a01b031681565b3480156109e657600080fd5b5061053361209c565b3480156109fb57600080fd5b506105e661210c565b348015610a1057600080fd5b506104206123c1565b348015610a2557600080fd5b506105e661242f565b348015610a3a57600080fd5b5060408051808201909152600681526541464649524d60d01b60208201526104e7565b348015610a6957600080fd5b506105e6610a783660046145fa565b61248e565b348015610a8957600080fd5b50610533610a98366004614537565b61253a565b348015610aa957600080fd5b506105e6610ab83660046147cb565b61254e565b348015610ac957600080fd5b506105e6610ad8366004614563565b612693565b348015610ae957600080fd5b50610453610af8366004614563565b61282e565b348015610b0957600080fd5b506105e6610b183660046148fb565b612861565b348015610b2957600080fd5b506016546105339060ff1681565b348015610b4357600080fd5b50610533610b52366004614563565b6001600160a01b031660009081526007602052604090205460ff1690565b348015610b7c57600080fd5b50600a54610bad9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff95861681529385166020850152918416918301919091529091166060820152608001610434565b348015610be757600080fd5b506105e6610bf636600461484a565b612929565b348015610c0757600080fd5b50610453610c16366004614580565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610c4d57600080fd5b506105e6610c5c366004614563565b612985565b348015610c6d57600080fd5b506105e6610c7c366004614563565b612d9e565b348015610c8d57600080fd5b506105e6612e5e565b348015610ca257600080fd5b506018546105339060ff1681565b348015610cbc57600080fd5b506105e6610ccb36600461484a565b612f3b565b348015610cdc57600080fd5b50610453612f9a565b348015610cf157600080fd5b506105e6610d00366004614927565b613008565b348015610d1157600080fd5b5060135461053390610100900460ff1681565b348015610d3057600080fd5b506105e6610d3f36600461481c565b6132c4565b6000610d51338484613337565b5060015b92915050565b6000610d696012600a614a53565b601054610d769190614a62565b905090565b6000610d896012600a614a53565b610d76906360713f10614a84565b6019546001600160a01b03163314610de45760405162461bcd60e51b81526020600482015260116024820152600080516020614d9883398151915260448201526064015b60405180910390fd5b601854610100900460ff1615610df957600080fd5b6001600160a01b0381163014801590610e1b57506001600160a01b0382163014155b8015610e395750816001600160a01b0316816001600160a01b031614155b610e4257600080fd5b601180546001600160a01b0319166001600160a01b0383811691909117909155601880546301000000600160b81b031916630100000085841681029190911791829055604080516330fe427560e21b81528151929093049093169263c3f909d4926004808201939182900301816000875af1925050508015610ee1575060408051601f3d908101601f19168201909252610ede91810190614a9b565b60015b610eea57600080fd5b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff191690911790556019549254610f679383169291900416600019613337565b600b54610f8690309061010090046001600160a01b0316600019613337565b5050600c546001600160a01b03166000908152600760205260409020805460ff191660011790555b5050565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914611017576001600160a01b038416600090815260036020908152604080832033845290915281208054849290611011908490614aca565b90915550505b61102284848461345b565b949350505050565b6019546001600160a01b031633146110725760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b60646110806012600a614a53565b61108e906360713f10614a84565b6110989190614a62565b81836110a66012600a614a53565b6110b4906360713f10614a84565b6110be9190614a84565b6110c89190614a62565b101561113c5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610ddb565b808261114a6012600a614a53565b611158906360713f10614a84565b6111629190614a84565b61116c9190614a62565b6010555050565b6019546001600160a01b031633146111bb5760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b805182511461120c5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610ddb565b60005b82518161ffff161015611323576112286012600a614a53565b828261ffff168151811061123e5761123e614add565b60200260200101516112509190614a84565b3360009081526020819052604090205410156112ae5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610ddb565b61131033848361ffff16815181106112c8576112c8614add565b60200260200101516012600a6112de9190614a53565b858561ffff16815181106112f4576112f4614add565b60200260200101516113069190614a84565b600080600161392d565b508061131b81614af3565b91505061120f565b505050565b6019546001600160a01b031633146113705760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b600b5460ff16156113c35760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610ddb565b6101f48361ffff16111580156113df57506101f48261ffff1611155b80156113f157506101f48161ffff1611155b61143d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ddb565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6019546001600160a01b031633146114c45760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6019546001600160a01b031633146115375760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6103e86115466012600a614a53565b611554906360713f10614a84565b61155f906005614a84565b6115699190614a62565b81836115776012600a614a53565b611585906360713f10614a84565b61158f9190614a84565b6115999190614a62565b101561160d5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ddb565b808261161b6012600a614a53565b611629906360713f10614a84565b6116339190614a84565b61163d9190614a62565b600f555050565b600c546001600160a01b03166000908152602081905260408120546127109061166e908490614a84565b610d559190614a62565b6019546001600160a01b031633146116c05760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b60968111156117115760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610ddb565b601755565b6019546001600160a01b0316331461175e5760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6001600160a01b0381166117da5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ddb565b61deac196001600160a01b0382160161185b5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ddb565b601980546001600160a01b039081166000908152600560208181526040808420805460ff199081169091558654861685526007808452828620805483169055888716865293835281852080548216600190811790915593835281852080549091169093179092559354909216815291829052902054156118fe576019546001600160a01b03166000818152602081905260409020546118fc91908390611306565b505b601980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6019546001600160a01b031633146119985760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b601154604051631ebbee0360e31b81526001600160a01b038381166004830152600092169063f5df7018906024015b602060405180830381865afa158015611a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d559190614b14565b601154604051636386c1c760e01b81526001600160a01b0383811660048301526060928392839283921690636386c1c790602401600060405180830381865afa158015611a84573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aac9190810190614b91565b93509350935093509193509193565b6019546001600160a01b03163314611b035760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6013805461ff001916610100851515908102919091179091556018805460ff1990811685151517909155601680549091168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a1505050565b6019546001600160a01b03163314611bba5760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6001600160a01b0382163014801590611be15750600c546001600160a01b03838116911614155b8015611bf857506001600160a01b03821661dead14155b611c0157600080fd5b6001600160a01b0382166000908152600760205260409020805460ff19168215801591909117909155611c9757601154604051636f823f4f60e11b81526001600160a01b038481166004830152600060248301529091169063df047e9e906044015b600060405180830381600087803b158015611c7d57600080fd5b505af1925050508015611c8e575060015b15610fae575050565b6011546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401611c63565b6000611cee6012600a614a53565b600f54610d769190614a62565b6019546001600160a01b03163314611d435760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b601854610100900460ff16611dc05760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610ddb565b601954611dd7906001600160a01b03166000611950565b601980546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6019546001600160a01b03163314611e6d5760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b600b805460ff19166001179055565b6019546001600160a01b03163314611ec45760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b80611f6c576001600160a01b038281166000818152600160208181526040808420805460ff1990811690915560079092528084208054909216909217905560185490516380c581d160e01b81526004810193909352602483019190915263010000009004909116906380c581d1906044015b600060405180830381600087803b158015611f5057600080fd5b505af1158015611f64573d6000803e3d6000fd5b505050505050565b60025415611fd3576203f48060025442611f869190614aca565b11611fd35760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610ddb565b6001600160a01b03821660009081526001602052604090205460ff161561203c5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610ddb565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560185491516380c581d160e01b81526004810193909352602483015263010000009004909116906380c581d190604401611f36565b6019546000906001600160a01b031633146120e75760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b600b5461210690309061010090046001600160a01b0316600019613337565b50600190565b6019546001600160a01b031633146121545760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b601854610100900460ff16156121ac5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ddb565b60185462010000900460ff166122045760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ddb565b601854630100000090046001600160a01b031661223757601880546301000000600160b81b031916306301000000021790555b601854600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff421660448201526012606482015263010000009092041690636c115c3490608401600060405180830381600087803b1580156122aa57600080fd5b505af19250505080156122bb575060015b50601854600c546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b81526004810191909152630100000090920416906325a71cae9060240160408051808303816000875af192505050801561233f575060408051601f3d908101601f1916820190925261233c91810190614c3e565b60015b1561234e576014919091556015555b601160009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561239e57600080fd5b505af19250505080156123af575060015b506018805461ffff1916610101179055565b6011546040805163457642a160e11b815290516000926001600160a01b031691638aec85429160048083019260209291908290030181865afa15801561240b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d769190614c62565b601154604051632e6f0efd60e01b81523360048201526001600160a01b0390911690632e6f0efd90602401600060405180830381600087803b15801561247457600080fd5b505af1158015612488573d6000803e3d6000fd5b50505050565b6019546001600160a01b031633146124d65760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6011546001600160a01b03166386d5c4be6124f283600a614c7f565b6124fc9085614a84565b6040518263ffffffff1660e01b81526004016000604051808303818588803b15801561252757600080fd5b505af193505050508015611c8e57505050565b600061254733848461345b565b9392505050565b6019546001600160a01b031633146125965760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b600a805461ffff8381166401000000000265ffff0000000019868316620100000263ffffffff19909416928816929092179290921716179055806125da8385614c8b565b6125e49190614c8b565b600a805467ffff0000000000001916660100000000000061ffff9384160217905560095460009161261e9162010000810482169116614c8b565b600a5461ffff918216925066010000000000009004168110156124885760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610ddb565b6019546001600160a01b031633146126db5760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b60185462010000900460ff161561274457306001600160a01b038216036127445760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610ddb565b6019546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa15801561279b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bf9190614b14565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561280a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113239190614cad565b60115460405163f6ed201760e01b81526001600160a01b038381166004830152600092169063f6ed2017906024016119f2565b6019546001600160a01b031633146128a95760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6128b481600a614c7f565b6128be9083614a84565b6011546040516302ab5aa360e31b815260048101869052602481018390529193506001600160a01b03169063155ad51890604401600060405180830381600087803b15801561290c57600080fd5b505af1158015612920573d6000803e3d6000fd5b50505050505050565b6019546001600160a01b031633146129715760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b620b71b0811061298057600080fd5b601255565b6019546001600160a01b031633146129cd5760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b60185462010000900460ff1615612a265760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610ddb565b600c546001600160a01b039081166000908152600160209081526040808320805460ff19169055805163c45a015560e01b81529051859485169263c45a015592600480820193918290030181865afa158015612a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aaa9190614c62565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1b9190614c62565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8a9190614c62565b90506001600160a01b038116612d0357816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfc9190614c62565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6d9190614c62565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cde9190614c62565b600c80546001600160a01b0319166001600160a01b0392909216919091179055612d1f565b600c80546001600160a01b0319166001600160a01b0383161790555b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c805483166000908152600160208181526040808420805460ff199081168517909155945487168452600790915290912080549092161790559154611323923092910416600019613337565b6019546001600160a01b03163314612de65760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6001600160a01b038116612e3c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610ddb565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6019546001600160a01b03163314612ea65760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b60185462010000900460ff1615612eff5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ddb565b6019546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612f38573d6000803e3d6000fd5b50565b60115460405163a9e732bb60e01b8152600481018390526001600160a01b039091169063a9e732bb90602401600060405180830381600087803b158015612f8157600080fd5b505af1925050508015612f92575060015b15612f385750565b60115460408051630ad2bf4b60e31b815290516000926001600160a01b031691635695fa589160048083019260209291908290030181865afa158015612fe4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d769190614b14565b6019546001600160a01b031633146130505760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b828461305e6012600a614a53565b61306c906360713f10614a84565b6130769190614a84565b6130809190614a62565b60145580826130916012600a614a53565b61309f906360713f10614a84565b6130a99190614a84565b6130b39190614a62565b601581905560145411156131135760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610ddb565b600c546001600160a01b03166000908152602081905260409020546127109061313d906096614a84565b6131479190614a62565b60155411156131a45760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610ddb565b620f42406131b46012600a614a53565b6131c2906360713f10614a84565b6131cc9190614a62565b60155410156132345760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ddb565b620f42406132446012600a614a53565b613252906360713f10614a84565b61325c9190614a62565b60145410156124885760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ddb565b6019546001600160a01b0316331461330c5760405162461bcd60e51b81526020600482015260116024820152600080516020614d988339815191526044820152606401610ddb565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6001600160a01b0383166133995760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ddb565b6001600160a01b0382166133fa5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ddb565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166134c15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ddb565b6001600160a01b0383166135235760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ddb565b600082116135855760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ddb565b6001600160a01b0384166000908152600160205260408120548190819060ff16156135b357600192506135e1565b6001600160a01b03861660009081526001602052604090205460ff16156135dd57600191506135e1565b5060015b6135eb8787613b35565b1561387d57601854610100900460ff166136f1578061364c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ddb565b6001600160a01b03871660009081526004602052604090205460ff1615801561368e57506001600160a01b03861660009081526004602052604090205460ff16155b156136f15760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610ddb565b82806136fa5750815b156137a9576001600160a01b03871660009081526006602052604090205460ff1615801561374157506001600160a01b03861660009081526006602052604090205460ff16155b156137a957600f548511156137a95760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ddb565b600b546001600160a01b0387811661010090920416148015906137ca575081155b1561387d576001600160a01b03861660009081526006602052604090205460ff1661387d5760105485613812886001600160a01b031660009081526020819052604090205490565b61381c9190614cca565b111561387d5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610ddb565b81156139145760135460ff1661391457601354610100900460ff1615613914573060009081526020819052604090205460145481106139125760155460165460ff16156138fc57601754600c546001600160a01b0316600090815260208190526040902054612710916138ef91614a84565b6138f99190614a62565b90505b808210613907578091505b61391082613c4c565b505b505b61392287878786868661392d565b979650505050505050565b6001600160a01b03861660009081526005602052604081205460019060ff168061396f57506001600160a01b03871660009081526005602052604090205460ff165b15613978575060005b6001600160a01b038816600090815260208190526040812080548892906139a0908490614aca565b9091555086905081156139bc576139b9898888886140f9565b90505b6001600160a01b038816600090815260208190526040812080548392906139e4908490614cca565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a3091815260200190565b60405180910390a360185462010000900460ff16613b1c57613a528989614206565b60185462010000900460ff16158015613a705750613a708989613b35565b8015613a9557506001600160a01b03891660009081526004602052604090205460ff16155b8015613aba57506001600160a01b03881660009081526004602052604090205460ff16155b8015613ac4575083155b15613b1c5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610ddb565b613b26898961435d565b50600198975050505050505050565b6019546000906001600160a01b03848116911614801590613b6457506019546001600160a01b03838116911614155b8015613b7b57506019546001600160a01b03163214155b8015613ba057506001600160a01b03821660009081526008602052604090205460ff16155b8015613bc557506001600160a01b03831660009081526008602052604090205460ff16155b8015613bdc57506001600160a01b03821661dead14155b8015613bf057506001600160a01b03821615155b8015613c0557506001600160a01b0383163014155b8015613c2657506018546001600160a01b0384811663010000009092041614155b8015612547575050601854630100000090046001600160a01b0390811691161415919050565b6013805460ff1916600117905560408051608081018252600a5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000900490911660608201819052600003613cad57506140ec565b306000908152600360209081526040808320600b5461010090046001600160a01b0316845290915290205460001914613d1057306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b60006002826060015161ffff16836020015161ffff1685613d319190614a84565b613d3b9190614a62565b613d459190614a62565b90506000613d538285614aca565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613d8d57613d8d614add565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e249190614c62565b81600181518110613e3757613e37614add565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac94790613e84908590600090869030904290600401614cdd565b600060405180830381600087803b158015613e9e57600080fd5b505af1925050508015613eaf575060015b613ebc57505050506140ec565b47600083613eca8684614a84565b613ed49190614a62565b90508415613fb757600b5460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526101009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af193505050508015613f6b575060408051601f3d908101601f19168201909252613f6891810190614d4e565b60015b613f7a575050505050506140ec565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b613fc18183614aca565b9150856020015186606001818151613fd99190614d7c565b61ffff9081169091526060880151885160009350839291821691613ffe911686614a84565b6140089190614a62565b905060006140168286614aca565b895190915061ffff161561408857601160009054906101000a90046001600160a01b03166001600160a01b03166386d5c4be836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561407457600080fd5b505af193505050508015614086575060015b505b600e546040516001600160a01b039091169061d6d89047906000818181858888f193505050503d80600081146140da576040519150601f19603f3d011682016040523d82523d6000602084013e6140df565b606091505b5050505050505050505050505b506013805460ff19169055565b600080831561410f575060095461ffff16614139565b8215614128575060095462010000900461ffff16614139565b50600954640100000000900461ffff165b601854630100000090046001600160a01b03163014801561415b575046606114155b1561416557506111945b806000036141765784915050611022565b60006127106141858388614a84565b61418f9190614a62565b905080156141fc5730600090815260208190526040812080548392906141b6908490614cca565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6139228187614aca565b60185462010000900460ff161561426b5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ddb565b6142758282613b35565b15801561428f5750600c546001600160a01b038281169116145b15610fae576001600160a01b038083166000908152600860205260409020805460ff191660011790556018805462ff0000191662010000179081905563010000009004166142f357601880546301000000600160b81b031916306301000000021790555b6011546001600160a01b031661431657601180546001600160a01b031916301790555b6013805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b03821660009081526007602052604090205460ff166143ee576011546001600160a01b0383811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b1580156143db57600080fd5b505af19250505080156143ec575060015b505b6001600160a01b03811660009081526007602052604090205460ff1661447f576011546001600160a01b0382811660008181526020819052604090819020549051636f823f4f60e11b81526004810192909252602482015291169063df047e9e90604401600060405180830381600087803b15801561446c57600080fd5b505af192505050801561447d575060015b505b60185460ff1615610fae5760115460125460405163a9e732bb60e01b81526001600160a01b039092169163a9e732bb91611c639160040190815260200190565b60005b838110156144da5781810151838201526020016144c2565b50506000910152565b600081518084526144fb8160208601602086016144bf565b601f01601f19169290920160200192915050565b60208152600061254760208301846144e3565b6001600160a01b0381168114612f3857600080fd5b6000806040838503121561454a57600080fd5b823561455581614522565b946020939093013593505050565b60006020828403121561457557600080fd5b813561254781614522565b6000806040838503121561459357600080fd5b823561459e81614522565b915060208301356145ae81614522565b809150509250929050565b6000806000606084860312156145ce57600080fd5b83356145d981614522565b925060208401356145e981614522565b929592945050506040919091013590565b6000806040838503121561460d57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561465b5761465b61461c565b604052919050565b600067ffffffffffffffff82111561467d5761467d61461c565b5060051b60200190565b600082601f83011261469857600080fd5b813560206146ad6146a883614663565b614632565b82815260059290921b840181019181810190868411156146cc57600080fd5b8286015b848110156146e757803583529183019183016146d0565b509695505050505050565b6000806040838503121561470557600080fd5b823567ffffffffffffffff8082111561471d57600080fd5b818501915085601f83011261473157600080fd5b813560206147416146a883614663565b82815260059290921b8401810191818101908984111561476057600080fd5b948201945b8386101561478757853561477881614522565b82529482019490820190614765565b9650508601359250508082111561479d57600080fd5b506147aa85828601614687565b9150509250929050565b803561ffff811681146147c657600080fd5b919050565b6000806000606084860312156147e057600080fd5b6147e9846147b4565b92506147f7602085016147b4565b9150614805604085016147b4565b90509250925092565b8015158114612f3857600080fd5b6000806040838503121561482f57600080fd5b823561483a81614522565b915060208301356145ae8161480e565b60006020828403121561485c57600080fd5b5035919050565b60808152600061487660808301876144e3565b828103602084015261488881876144e3565b9050828103604084015261489c81866144e3565b9050828103606084015261392281856144e3565b6000806000606084860312156148c557600080fd5b83356148d08161480e565b925060208401356148e08161480e565b915060408401356148f08161480e565b809150509250925092565b60008060006060848603121561491057600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561493d57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156149aa57816000190482111561499057614990614959565b8085161561499d57918102915b93841c9390800290614974565b509250929050565b6000826149c157506001610d55565b816149ce57506000610d55565b81600181146149e457600281146149ee57614a0a565b6001915050610d55565b60ff8411156149ff576149ff614959565b50506001821b610d55565b5060208310610133831016604e8410600b8410161715614a2d575081810a610d55565b614a37838361496f565b8060001904821115614a4b57614a4b614959565b029392505050565b600061254760ff8416836149b2565b600082614a7f57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610d5557610d55614959565b60008060408385031215614aae57600080fd5b8251614ab981614522565b60208401519092506145ae81614522565b81810381811115610d5557610d55614959565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103614b0a57614b0a614959565b6001019392505050565b600060208284031215614b2657600080fd5b5051919050565b600082601f830112614b3e57600080fd5b815167ffffffffffffffff811115614b5857614b5861461c565b614b6b601f8201601f1916602001614632565b818152846020838601011115614b8057600080fd5b6110228260208301602087016144bf565b60008060008060808587031215614ba757600080fd5b845167ffffffffffffffff80821115614bbf57600080fd5b614bcb88838901614b2d565b95506020870151915080821115614be157600080fd5b614bed88838901614b2d565b94506040870151915080821115614c0357600080fd5b614c0f88838901614b2d565b93506060870151915080821115614c2557600080fd5b50614c3287828801614b2d565b91505092959194509250565b60008060408385031215614c5157600080fd5b505080516020909101519092909150565b600060208284031215614c7457600080fd5b815161254781614522565b600061254783836149b2565b61ffff818116838216019080821115614ca657614ca6614959565b5092915050565b600060208284031215614cbf57600080fd5b81516125478161480e565b80820180821115610d5557610d55614959565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015614d2d5784516001600160a01b031683529383019391830191600101614d08565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215614d6357600080fd5b8351925060208401519150604084015190509250925092565b61ffff828116828216039080821115614ca657614ca661495956fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220bd7cb4375f0898e4c72318b0d71c81b48f6fe28c3a00ed8db192354a2c22356364736f6c63430008130033

Deployed Bytecode Sourcemap

4663:25879:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6398:73;;;;;;;;;;;;6429:42;6398:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;6398:73:0;;;;;;;;6902:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6902:28:0;245:177:1;5732:107:0;;;;;;;;;;-1:-1:-1;5732:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;633:6:1;666:15;;;648:34;;718:15;;;713:2;698:18;;691:43;770:15;;750:18;;;743:43;;;;611:2;596:18;5732:107:0;427:365:1;11145:80:0;;;;;;;;;;-1:-1:-1;11217:5:0;;;;;;;;;;;;-1:-1:-1;;;11217:5:0;;;;11145:80;;;;;;;:::i;6222:26::-;;;;;;;;;;-1:-1:-1;6222:26:0;;;;;;;-1:-1:-1;;;;;6222:26:0;;;6189;;;;;;;;;;-1:-1:-1;6189:26:0;;;;;;;;;;;1966:14:1;;1959:22;1941:41;;1929:2;1914:18;6189:26:0;1801:187:1;11566:161:0;;;;;;;;;;-1:-1:-1;11566:161:0;;;;;:::i;:::-;;:::i;15081:140::-;;;;;;;;;;-1:-1:-1;15081:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;15179:34:0;15155:4;15179:34;;;:25;:34;;;;;;;;;15081:140;18204:112;;;;;;;;;;;;;:::i;10880:83::-;;;;;;;;;;;;;:::i;14102:691::-;;;;;;;;;;-1:-1:-1;14102:691:0;;;;;:::i;:::-;;:::i;:::-;;12426:306;;;;;;;;;;-1:-1:-1;12426:306:0;;;;;:::i;:::-;;:::i;17818:264::-;;;;;;;;;;-1:-1:-1;17818:264:0;;;;;:::i;:::-;;:::i;28617:447::-;;;;;;;;;;-1:-1:-1;28617:447:0;;;;;:::i;:::-;;:::i;7010:33::-;;;;;;;;;;;;;;;;5989:41;;;;;;;;;;;;6027:3;5989:41;;6937:25;;;;;;;;;;;;;;;;10969:80;;;;;;;;;;-1:-1:-1;10969:80:0;;5407:2;6460:36:1;;6448:2;6433:18;10969:80:0;6318:184:1;16449:453:0;;;;;;;;;;-1:-1:-1;16449:453:0;;;;;:::i;:::-;;:::i;15369:140::-;;;;;;;;;;-1:-1:-1;15369:140:0;;;;;:::i;:::-;;:::i;17537:273::-;;;;;;;;;;-1:-1:-1;17537:273:0;;;;;:::i;:::-;;:::i;6255:21::-;;;;;;;;;;-1:-1:-1;6255:21:0;;;;-1:-1:-1;;;;;6255:21:0;;;7091:34;;;;;;;;;;-1:-1:-1;7091:34:0;;;;;;;;;;;18324:189;;;;;;;;;;-1:-1:-1;18324:189:0;;;;;:::i;:::-;;:::i;19228:217::-;;;;;;;;;;-1:-1:-1;19228:217:0;;;;;:::i;:::-;;:::i;9413:759::-;;;;;;;;;;-1:-1:-1;9413:759:0;;;;;:::i;:::-;;:::i;14801:127::-;;;;;;;;;;-1:-1:-1;14801:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;14892:28:0;14868:4;14892:28;;;:19;:28;;;;;;;;;14801:127;7132:36;;;;;;;;;;-1:-1:-1;7132:36:0;;;;;;;;;;;15961:134;;;;;;;;;;-1:-1:-1;15961:134:0;;;;;:::i;:::-;;:::i;15229:132::-;;;;;;;;;;-1:-1:-1;15229:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;15323:30:0;15299:4;15323:30;;;:21;:30;;;;;;;;;15229:132;30139:138;;;;;;;;;;-1:-1:-1;30139:138:0;;;;;:::i;:::-;;:::i;29962:169::-;;;;;;;;;;-1:-1:-1;29962:169:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;19453:340::-;;;;;;;;;;-1:-1:-1;19453:340:0;;;;;:::i;:::-;;:::i;15517:436::-;;;;;;;;;;-1:-1:-1;15517:436:0;;;;;:::i;:::-;;:::i;18090:106::-;;;;;;;;;;;;;:::i;11316:103::-;;;;;;;;;;-1:-1:-1;11316:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;11400:16:0;11382:7;11400:16;;;;;;;;;;;;11316:103;10180:310;;;;;;;;;;;;;:::i;6559:92::-;;;;;;;;;;-1:-1:-1;6559:92:0;;;;-1:-1:-1;;;;;6559:92:0;;;16259:182;;;;;;;;;;;;;:::i;13478:616::-;;;;;;;;;;-1:-1:-1;13478:616:0;;;;;:::i;:::-;;:::i;11231:79::-;;;;;;;;;;-1:-1:-1;11301:6:0;;-1:-1:-1;;;;;11301:6:0;11231:79;;6327:64;;;;;;;;;;-1:-1:-1;6327:64:0;;;;-1:-1:-1;;;;;6327:64:0;;;12085:173;;;;;;;;;;;;;:::i;25644:733::-;;;;;;;;;;;;;:::i;30427:112::-;;;;;;;;;;;;;:::i;29732:98::-;;;;;;;;;;;;;:::i;11055:84::-;;;;;;;;;;-1:-1:-1;11129:7:0;;;;;;;;;;;;-1:-1:-1;;;11129:7:0;;;;11055:84;;29072:158;;;;;;;;;;-1:-1:-1;29072:158:0;;;;;:::i;:::-;;:::i;12266:152::-;;;;;;;;;;-1:-1:-1;12266:152:0;;;;;:::i;:::-;;:::i;17109:420::-;;;;;;;;;;-1:-1:-1;17109:420:0;;;;;:::i;:::-;;:::i;29428:296::-;;;;;;;;;;-1:-1:-1;29428:296:0;;;;;:::i;:::-;;:::i;30285:134::-;;;;;;;;;;-1:-1:-1;30285:134:0;;;;;:::i;:::-;;:::i;19801:273::-;;;;;;;;;;-1:-1:-1;19801:273:0;;;;;:::i;:::-;;:::i;6969:34::-;;;;;;;;;;-1:-1:-1;6969:34:0;;;;;;;;14936:137;;;;;;;;;;-1:-1:-1;14936:137:0;;;;;:::i;:::-;-1:-1:-1;;;;;15032:33:0;15008:4;15032:33;;;:24;:33;;;;;;;;;14936:137;5848:132;;;;;;;;;;-1:-1:-1;5848:132:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9732:6:1;9765:15;;;9747:34;;9817:15;;;9812:2;9797:18;;9790:43;9869:15;;;9849:18;;;9842:43;;;;9921:15;;;9916:2;9901:18;;9894:43;9709:3;9694:19;5848:132:0;9499:444:1;20082:129:0;;;;;;;;;;-1:-1:-1;20082:129:0;;;;;:::i;:::-;;:::i;11425:133::-;;;;;;;;;;-1:-1:-1;11425:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11527:19:0;;;11509:7;11527:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11425:133;12740:730;;;;;;;;;;-1:-1:-1;12740:730:0;;;;;:::i;:::-;;:::i;16910:191::-;;;;;;;;;;-1:-1:-1;16910:191:0;;;;;:::i;:::-;;:::i;29238:182::-;;;;;;;;;;;;;:::i;7050:34::-;;;;;;;;;;-1:-1:-1;7050:34:0;;;;;;;;27723:111;;;;;;;;;;-1:-1:-1;27723:111:0;;;;;:::i;:::-;;:::i;29838:116::-;;;;;;;;;;;;;:::i;18521:699::-;;;;;;;;;;-1:-1:-1;18521:699:0;;;;;:::i;:::-;;:::i;6856:39::-;;;;;;;;;;-1:-1:-1;6856:39:0;;;;;;;;;;;16103:148;;;;;;;;;;-1:-1:-1;16103:148:0;;;;;:::i;:::-;;:::i;11566:161::-;11643:4;11660:37;11669:10;11681:7;11690:6;11660:8;:37::i;:::-;-1:-1:-1;11715:4:0;11566:161;;;;;:::o;18204:112::-;18249:7;18294:13;5407:2;18294;:13;:::i;:::-;18276:14;;:32;;;;:::i;:::-;18269:39;;18204:112;:::o;10880:83::-;10935:7;5469:15;5407:2;5469;:15;:::i;:::-;5451:34;;5251:13;5451:34;:::i;14102:691::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;;;;;;;;;14194:14:::1;::::0;::::1;::::0;::::1;;;14193:15;14185:24;;;::::0;::::1;;-1:-1:-1::0;;;;;14228:22:0;::::1;14245:4;14228:22;::::0;::::1;::::0;:48:::1;;-1:-1:-1::0;;;;;;14254:22:0;::::1;14271:4;14254:22;;14228:48;:66;;;;;14289:5;-1:-1:-1::0;;;;;14280:14:0::1;:5;-1:-1:-1::0;;;;;14280:14:0::1;;;14228:66;14220:75;;;::::0;::::1;;14306:7;:24:::0;;-1:-1:-1;;;;;;14306:24:0::1;-1:-1:-1::0;;;;;14306:24:0;;::::1;::::0;;;::::1;::::0;;;14341:11:::1;:32:::0;;-1:-1:-1;;;;;;14341:32:0::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;14388:23:::1;::::0;;-1:-1:-1;;;14388:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;-1:-1:-1;14388:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;14388:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;14388:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;14384:402;;14775:8;::::0;::::1;14384:402;14475:9;:29:::0;;-1:-1:-1;;14475:29:0::1;;-1:-1:-1::0;;;;;14475:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;14506:6:::1;:22:::0;;-1:-1:-1;;;;;;14506:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;14530:15:0;;;-1:-1:-1;14530:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;14530:22:0::1;::::0;;::::1;::::0;;14577:6:::1;::::0;14593:9;;14568:55:::1;::::0;14577:6;::::1;::::0;14593:9;;::::1;;-1:-1:-1::0;;14568:8:0::1;:55::i;:::-;14670:9;::::0;14638:62:::1;::::0;14655:4:::1;::::0;14670:9:::1;::::0;::::1;-1:-1:-1::0;;;;;14670:9:0::1;-1:-1:-1::0;;14638:8:0::1;:62::i;:::-;-1:-1:-1::0;;14740:6:0::1;::::0;-1:-1:-1;;;;;14740:6:0::1;14715:32;::::0;;;:24:::1;:32;::::0;;;;:39;;-1:-1:-1;;14715:39:0::1;14750:4;14715:39;::::0;;14384:402:::1;14102:691:::0;;:::o;12426:306::-;-1:-1:-1;;;;;12547:19:0;;12526:4;12547:19;;;:11;:19;;;;;;;;12567:10;12547:31;;;;;;;;-1:-1:-1;;12547:52:0;12543:126;;-1:-1:-1;;;;;12616:19:0;;;;;;:11;:19;;;;;;;;12636:10;12616:31;;;;;;;:41;;12651:6;;12616:19;:41;;12651:6;;12616:41;:::i;:::-;;;;-1:-1:-1;;12543:126:0;12688:36;12698:6;12706:9;12717:6;12688:9;:36::i;:::-;12681:43;12426:306;-1:-1:-1;;;;12426:306:0:o;17818:264::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;17960:3:::1;5469:15;5407:2;5469;:15;:::i;:::-;5451:34;::::0;5251:13:::1;5451:34;:::i;:::-;17950:13;;;;:::i;:::-;17938:7:::0;17927;5469:15:::1;5407:2;5469;:15;:::i;:::-;5451:34;::::0;5251:13:::1;5451:34;:::i;:::-;17917:17;;;;:::i;:::-;17916:29;;;;:::i;:::-;:48;;17908:109;;;::::0;-1:-1:-1;;;17908:109:0;;13579:2:1;17908:109:0::1;::::0;::::1;13561:21:1::0;13618:2;13598:18;;;13591:30;13657:34;13637:18;;;13630:62;13728:18;13708;;;13701:46;13764:19;;17908:109:0::1;13377:412:1::0;17908:109:0::1;18067:7:::0;18056;5469:15:::1;5407:2;5469;:15;:::i;:::-;5451:34;::::0;5251:13:::1;5451:34;:::i;:::-;18046:17;;;;:::i;:::-;18045:29;;;;:::i;:::-;18028:14;:46:::0;-1:-1:-1;;17818:264:0:o;28617:447::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;28752:7:::1;:14;28733:8;:15;:33;28725:67;;;::::0;-1:-1:-1;;;28725:67:0;;13996:2:1;28725:67:0::1;::::0;::::1;13978:21:1::0;14035:2;14015:18;;;14008:30;14074:23;14054:18;;;14047:51;14115:18;;28725:67:0::1;13794:345:1::0;28725:67:0::1;28808:8;28803:254;28826:8;:15;28822:1;:19;;;28803:254;;;28907:13;5407:2;28907;:13;:::i;:::-;28896:7;28904:1;28896:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;28881:10;11382:7:::0;11400:16;;;;;;;;;;;28871:49:::1;;28863:80;;;::::0;-1:-1:-1;;;28863:80:0;;14478:2:1;28863:80:0::1;::::0;::::1;14460:21:1::0;14517:2;14497:18;;;14490:30;14556:20;14536:18;;;14529:48;14594:18;;28863:80:0::1;14276:342:1::0;28863:80:0::1;28958:87;28975:10;28987:8;28996:1;28987:11;;;;;;;;;;:::i;:::-;;;;;;;5407:2;29011;:13;;;;:::i;:::-;29000:7;29008:1;29000:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;29026:5;29033::::0;29040:4:::1;28958:16;:87::i;:::-;-1:-1:-1::0;28843:3:0;::::1;::::0;::::1;:::i;:::-;;;;28803:254;;;;28617:447:::0;;:::o;16449:453::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;16557:14:::1;::::0;::::1;;16556:15;16548:45;;;::::0;-1:-1:-1;;;16548:45:0;;15027:2:1;16548:45:0::1;::::0;::::1;15009:21:1::0;15066:2;15046:18;;;15039:30;15105:19;15085:18;;;15078:47;15142:18;;16548:45:0::1;14825:341:1::0;16548:45:0::1;6027:3;16612:6;:21;;;;:65;;;;;6076:3;16654:7;:23;;;;16612:65;:117;;;;;6129:3;16698:11;:31;;;;16612:117;16604:170;;;::::0;-1:-1:-1;;;16604:170:0;;15373:2:1;16604:170:0::1;::::0;::::1;15355:21:1::0;15412:2;15392:18;;;15385:30;15451:25;15431:18;;;15424:53;15494:18;;16604:170:0::1;15171:347:1::0;16604:170:0::1;16785:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;16821:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;16859:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;16449:453::o;15369:140::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;-1:-1:-1;;;;;15461:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;15461:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15369:140::o;17537:273::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;17682:4:::1;5469:15;5407:2;5469;:15;:::i;:::-;5451:34;::::0;5251:13:::1;5451:34;:::i;:::-;17668:11;::::0;17678:1:::1;17668:11;:::i;:::-;:18;;;;:::i;:::-;17656:7:::0;17645;5469:15:::1;5407:2;5469;:15;:::i;:::-;5451:34;::::0;5251:13:::1;5451:34;:::i;:::-;17635:17;;;;:::i;:::-;17634:29;;;;:::i;:::-;:53;;17626:121;;;::::0;-1:-1:-1;;;17626:121:0;;15725:2:1;17626:121:0::1;::::0;::::1;15707:21:1::0;15764:2;15744:18;;;15737:30;15803:34;15783:18;;;15776:62;15874:25;15854:18;;;15847:53;15917:19;;17626:121:0::1;15523:419:1::0;17626:121:0::1;17795:7:::0;17784;5469:15:::1;5407:2;5469;:15;:::i;:::-;5451:34;::::0;5251:13:::1;5451:34;:::i;:::-;17774:17;;;;:::i;:::-;17773:29;;;;:::i;:::-;17758:12;:44:::0;-1:-1:-1;;17537:273:0:o;18324:189::-;18453:6;;-1:-1:-1;;;;;18453:6:0;18415:7;11400:16;;;;;;;;;;;6175:5;;18443:41;;18463:21;;18443:41;:::i;:::-;18442:62;;;;:::i;19228:217::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;19358:3:::1;19332:22;:29;;19324:64;;;::::0;-1:-1:-1;;;19324:64:0;;16149:2:1;19324:64:0::1;::::0;::::1;16131:21:1::0;16188:2;16168:18;;;16161:30;16227:24;16207:18;;;16200:52;16269:18;;19324:64:0::1;15947:346:1::0;19324:64:0::1;19399:13;:38:::0;19228:217::o;9413:759::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;-1:-1:-1;;;;;9492:22:0;::::1;9484:96;;;::::0;-1:-1:-1;;;9484:96:0;;16500:2:1;9484:96:0::1;::::0;::::1;16482:21:1::0;16539:2;16519:18;;;16512:30;16578:34;16558:18;;;16551:62;16649:31;16629:18;;;16622:59;16698:19;;9484:96:0::1;16298:425:1::0;9484:96:0::1;-1:-1:-1::0;;;;;;;9599:16:0;::::1;::::0;9591:90:::1;;;::::0;-1:-1:-1;;;9591:90:0;;16500:2:1;9591:90:0::1;::::0;::::1;16482:21:1::0;16539:2;16519:18;;;16512:30;16578:34;16558:18;;;16551:62;16649:31;16629:18;;;16622:59;16698:19;;9591:90:0::1;16298:425:1::0;9591:90:0::1;9712:6;::::0;;-1:-1:-1;;;;;9712:6:0;;::::1;9722:5;9692:27:::0;;;:19:::1;:27;::::0;;;;;;;:35;;-1:-1:-1;;9692:35:0;;::::1;::::0;;;9763:6;;;::::1;9738:32:::0;;:24:::1;:32:::0;;;;;;:40;;;::::1;::::0;;9789:29;;::::1;::::0;;;;;;;;:36;;;::::1;-1:-1:-1::0;9789:36:0;;::::1;::::0;;;9836:34;;;;;;:41;;;;::::1;::::0;;::::1;::::0;;;9912:6;;;;::::1;11400:16:::0;;;;;;;;;9902:21;9898:127:::1;;9957:6;::::0;-1:-1:-1;;;;;9957:6:0::1;11382:7:::0;11400:16;;;;;;;;;;;9940:73:::1;::::0;9957:6;9965:8;;9975:17:::1;11316:103:::0;9940:73:::1;;9898:127;10064:6;::::0;;-1:-1:-1;;;;;10081:17:0;;::::1;-1:-1:-1::0;;;;;;10081:17:0;::::1;::::0;::::1;::::0;;;10114:40:::1;::::0;10064:6;::::1;::::0;10081:17;10064:6;;10114:40:::1;::::0;10045:16:::1;::::0;10114:40:::1;9473:699;9413:759:::0;:::o;15961:134::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;-1:-1:-1;;;;;16049:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;16049:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15961:134::o;30139:138::-;30233:7;;:36;;-1:-1:-1;;;30233:36:0;;-1:-1:-1;;;;;178:55:1;;;30233:36:0;;;160:74:1;30206:7:0;;30233;;:30;;133:18:1;;30233:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29962:169::-;30098:7;;:25;;-1:-1:-1;;;30098:25:0;;-1:-1:-1;;;;;178:55:1;;;30098:25:0;;;160:74:1;30020:13:0;;;;;;;;30098:7;;:19;;133:18:1;;30098:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30098:25:0;;;;;;;;;;;;:::i;:::-;30091:32;;;;;;;;29962:169;;;;;:::o;19453:340::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;19590:19:::1;:33:::0;;-1:-1:-1;;19590:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;19634:14:::1;:38:::0;;-1:-1:-1;;19634:38:0;;::::1;::::0;::::1;;;::::0;;;19683:22:::1;:47:::0;;;;::::1;::::0;::::1;;;::::0;;19746:39:::1;::::0;1941:41:1;;;19746:39:0::1;::::0;1929:2:1;1914:18;19746:39:0::1;;;;;;;19453:340:::0;;;:::o;15517:436::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;-1:-1:-1;;;;;15613:24:0;::::1;15632:4;15613:24;::::0;::::1;::::0;:63:::1;;-1:-1:-1::0;15670:6:0::1;::::0;-1:-1:-1;;;;;15659:17:0;;::::1;15670:6:::0;::::1;15659:17;;15613:63;:99;;;;-1:-1:-1::0;;;;;;15697:15:0;::::1;6429:42;15697:15;;15613:99;15605:108;;;::::0;::::1;;-1:-1:-1::0;;;;;15724:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;:43;;-1:-1:-1;;15724:43:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;15778:168:::1;;15810:7;::::0;:25:::1;::::0;-1:-1:-1;;;15810:25:0;;-1:-1:-1;;;;;18608:55:1;;;15810:25:0::1;::::0;::::1;18590:74:1::0;15810:7:0::1;18680:18:1::0;;;18673:34;15810:7:0;;::::1;::::0;:13:::1;::::0;18563:18:1;;15810:25:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;15806:41:::0;15778:168:::1;15806:41;14102:691:::0;;:::o;15778:168::-:1;15883:7;::::0;-1:-1:-1;;;;;15906:16:0;;::::1;15883:7;15906:16:::0;;;::::1;::::0;;;;;;;;;15883:40;;-1:-1:-1;;;15883:40:0;;::::1;::::0;::::1;18590:74:1::0;;;;18680:18;;;18673:34;15883:7:0;::::1;::::0;:13:::1;::::0;18563:18:1;;15883:40:0::1;18408:305:1::0;18090:106:0;18131:7;18174:13;5407:2;18174;:13;:::i;:::-;18158:12;;:30;;;;:::i;10180:310::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;10247:14:::1;::::0;::::1;::::0;::::1;;;10239:74;;;::::0;-1:-1:-1;;;10239:74:0;;19222:2:1;10239:74:0::1;::::0;::::1;19204:21:1::0;19261:2;19241:18;;;19234:30;19300:34;19280:18;;;19273:62;19371:17;19351:18;;;19344:45;19406:19;;10239:74:0::1;19020:411:1::0;10239:74:0::1;10344:6;::::0;10324:34:::1;::::0;-1:-1:-1;;;;;10344:6:0::1;;10324:19;:34::i;:::-;10388:6;::::0;;-1:-1:-1;;;;;;10405:19:0;::::1;::::0;;;10440:42:::1;::::0;-1:-1:-1;;;;;10388:6:0;;::::1;::::0;10369:16:::1;::::0;10388:6;;10440:42:::1;::::0;10369:16;;10440:42:::1;10228:262;10180:310::o:0;16259:182::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;16412:14:::1;:21:::0;;-1:-1:-1;;16412:21:0::1;16429:4;16412:21;::::0;;16259:182::o;13478:616::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;13560:7:::1;13555:532;;-1:-1:-1::0;;;;;13584:13:0;;::::1;13600:5;13584:13:::0;;;:7:::1;:13;::::0;;;;;;;:21;;-1:-1:-1;;13584:21:0;;::::1;::::0;;;13620:24:::1;:30:::0;;;;;;:37;;;;::::1;::::0;;::::1;::::0;;13672:11:::1;::::0;:34;;-1:-1:-1;;;13672:34:0;;::::1;::::0;::::1;19604:74:1::0;;;;19694:18;;;19687:50;;;;13672:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;19577:18:1;;13672:34:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14102:691:::0;;:::o;13555:532::-:1;13743:17;::::0;:22;13739:135:::1;;13832:6;13812:17;;13794:15;:35;;;;:::i;:::-;:44;13786:72;;;::::0;-1:-1:-1;;;13786:72:0;;19950:2:1;13786:72:0::1;::::0;::::1;19932:21:1::0;19989:2;19969:18;;;19962:30;20028:17;20008:18;;;20001:45;20063:18;;13786:72:0::1;19748:339:1::0;13786:72:0::1;-1:-1:-1::0;;;;;13897:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;13896:14;13888:54;;;::::0;-1:-1:-1;;;13888:54:0;;20294:2:1;13888:54:0::1;::::0;::::1;20276:21:1::0;20333:2;20313:18;;;20306:30;20372:29;20352:18;;;20345:57;20419:18;;13888:54:0::1;20092:351:1::0;13888:54:0::1;-1:-1:-1::0;;;;;13957:13:0;;::::1;;::::0;;;13973:4:::1;13957:13;::::0;;;;;;;;:20;;-1:-1:-1;;13957:20:0::1;::::0;::::1;::::0;;14012:15:::1;13992:17;:35:::0;14042:11:::1;::::0;:33;;-1:-1:-1;;;14042:33:0;;::::1;::::0;::::1;19604:74:1::0;;;;19694:18;;;19687:50;14042:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;19577:18:1;;14042:33:0::1;19436:307:1::0;12085:173:0;9267:6;;12149:4;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;12198:9:::1;::::0;12166:62:::1;::::0;12183:4:::1;::::0;12198:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12198:9:0::1;-1:-1:-1::0;;12166:8:0::1;:62::i;:::-;-1:-1:-1::0;12246:4:0::1;12085:173:::0;:::o;25644:733::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;25706:14:::1;::::0;::::1;::::0;::::1;;;25705:15;25697:52;;;::::0;-1:-1:-1;;;25697:52:0;;20650:2:1;25697:52:0::1;::::0;::::1;20632:21:1::0;20689:2;20669:18;;;20662:30;20728:26;20708:18;;;20701:54;20772:18;;25697:52:0::1;20448:348:1::0;25697:52:0::1;25768:16;::::0;;;::::1;;;25760:53;;;::::0;-1:-1:-1;;;25760:53:0;;21003:2:1;25760:53:0::1;::::0;::::1;20985:21:1::0;21042:2;21022:18;;;21015:30;21081:26;21061:18;;;21054:54;21125:18;;25760:53:0::1;20801:348:1::0;25760:53:0::1;25836:11;::::0;;;::::1;-1:-1:-1::0;;;;;25836:11:0::1;25824:106;;25878:11;:40:::0;;-1:-1:-1;;;;;;25878:40:0::1;25912:4;25878:40:::0;::::1;;::::0;;25824:106:::1;25944:11;::::0;25966:6:::1;::::0;25944:87:::1;::::0;-1:-1:-1;;;25944:87:0;;-1:-1:-1;;;;;25966:6:0;;::::1;25944:87;::::0;::::1;21377:74:1::0;21499:10;25981:12:0::1;21487:23:1::0;21467:18;;;21460:51;21559:18;26003:15:0::1;21547:31:1::0;21527:18;;;21520:59;5407:2:0::1;21595:18:1::0;;;21588:45;25944:11:0;;;::::1;;::::0;:21:::1;::::0;21349:19:1;;25944:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;26057:11:0::1;::::0;26088:6:::1;::::0;-1:-1:-1;;;;;26088:6:0;;::::1;11382:7:::0;11400:16;;;;;;;;;;;;;26057:39;;-1:-1:-1;;;26057:39:0;;::::1;::::0;::::1;391:25:1::0;;;;26057:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;26057:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;26057:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;26057:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;26053:207:::0;::::1;;26168:13;:29:::0;;;;26212:10:::1;:27:::0;26053:207:::1;26274:7;;;;;;;;;-1:-1:-1::0;;;;;26274:7:0::1;-1:-1:-1::0;;;;;26274:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;26270:36:::0;26316:14:::1;:21:::0;;-1:-1:-1;;26348:21:0;;;;;25644:733::o;30427:112::-;30505:7;;:26;;;-1:-1:-1;;;30505:26:0;;;;30478:7;;-1:-1:-1;;;;;30505:7:0;;:24;;:26;;;;;;;;;;;;;;:7;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;29732:98::-;29783:7;;:39;;-1:-1:-1;;;29783:39:0;;29811:10;29783:39;;;160:74:1;-1:-1:-1;;;;;29783:7:0;;;;:27;;133:18:1;;29783:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29732:98::o;29072:158::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;29165:7:::1;::::0;-1:-1:-1;;;;;29165:7:0::1;:12;29194:14;29198:10:::0;29194:2:::1;:14;:::i;:::-;29185:23;::::0;:6;:23:::1;:::i;:::-;29165:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;-1:-1:-1::0;29072:158:0;;:::o;12266:152::-;12346:4;12370:40;12380:10;12392:9;12403:6;12370:9;:40::i;:::-;12363:47;12266:152;-1:-1:-1;;;12266:152:0:o;17109:420::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;17210:7:::1;:25:::0;;::::1;17286:29:::0;;::::1;::::0;::::1;-1:-1:-1::0;;17246:29:0;;::::1;::::0;::::1;-1:-1:-1::0;;17246:29:0;;;17210:25;;::::1;17246:29:::0;;;;;;;::::1;17286;;::::0;;17306:9;17342:19:::1;17266:9:::0;17228:7;17342:19:::1;:::i;:::-;:31;;;;:::i;:::-;17326:7;:47:::0;;-1:-1:-1;;17326:47:0::1;::::0;::::1;::::0;;::::1;;;::::0;;17419:9:::1;:17:::0;-1:-1:-1;;17400:36:0::1;::::0;17419:17;;::::1;::::0;::::1;::::0;17400:16:::1;:36;:::i;:::-;17455:7;:13:::0;17384:52:::1;::::0;;::::1;::::0;-1:-1:-1;17455:13:0;;::::1;;:22:::0;-1:-1:-1;17455:22:0::1;17447:74;;;::::0;-1:-1:-1;;;17447:74:0;;22661:2:1;17447:74:0::1;::::0;::::1;22643:21:1::0;22700:2;22680:18;;;22673:30;22739:34;22719:18;;;22712:62;-1:-1:-1;;;22790:18:1;;;22783:37;22837:19;;17447:74:0::1;22459:403:1::0;29428:296:0;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;29506:16:::1;::::0;;;::::1;;;29502:111;;;29564:4;-1:-1:-1::0;;;;;29547:22:0;::::1;::::0;29539:62:::1;;;::::0;-1:-1:-1;;;29539:62:0;;23069:2:1;29539:62:0::1;::::0;::::1;23051:21:1::0;23108:2;23088:18;;;23081:30;23147:29;23127:18;;;23120:57;23194:18;;29539:62:0::1;22867:351:1::0;29539:62:0::1;29677:6;::::0;29685:30:::1;::::0;-1:-1:-1;;;29685:30:0;;29709:4:::1;29685:30;::::0;::::1;160:74:1::0;29645:5:0;;-1:-1:-1;;;;;29662:14:0;;::::1;::::0;::::1;::::0;29677:6;;;::::1;::::0;29662:14;;29685:15:::1;::::0;133:18:1;;29685:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29662:54;::::0;-1:-1:-1;;;;;;29662:54:0::1;::::0;;;;;;-1:-1:-1;;;;;18608:55:1;;;29662:54:0::1;::::0;::::1;18590:74:1::0;18680:18;;;18673:34;18563:18;;29662:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;30285:134::-:0;30380:7;;:31;;-1:-1:-1;;;30380:31:0;;-1:-1:-1;;;;;178:55:1;;;30380:31:0;;;160:74:1;30353:7:0;;30380;;:25;;133:18:1;;30380:31:0;14:226:1;19801:273:0;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;19972:27:::1;19976:23:::0;19972:2:::1;:27;:::i;:::-;19955:44;::::0;:14;:44:::1;:::i;:::-;20010:7;::::0;:56:::1;::::0;-1:-1:-1;;;20010:56:0;;::::1;::::0;::::1;23647:25:1::0;;;23688:18;;;23681:34;;;19938:61:0;;-1:-1:-1;;;;;;20010:7:0::1;::::0;:28:::1;::::0;23620:18:1;;20010:56:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19801:273:::0;;;:::o;20082:129::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;20169:6:::1;20163:3;:12;20155:21;;;::::0;::::1;;20187:10;:16:::0;20082:129::o;12740:730::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;12820:16:::1;::::0;;;::::1;;;12819:17;12811:60;;;::::0;-1:-1:-1;;;12811:60:0;;23928:2:1;12811:60:0::1;::::0;::::1;23910:21:1::0;23967:2;23947:18;;;23940:30;24006:32;23986:18;;;23979:60;24056:18;;12811:60:0::1;23726:354:1::0;12811:60:0::1;12944:6;::::0;-1:-1:-1;;;;;12944:6:0;;::::1;12882:20;12936:15:::0;;;:7:::1;:15;::::0;;;;;;;:23;;-1:-1:-1;;12936:23:0::1;::::0;;13000:20;;-1:-1:-1;;;13000:20:0;;;;12915:9;;13000:18;::::1;::::0;::::1;::::0;:20:::1;::::0;;::::1;::::0;;;;;;;:18;:20:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12989:40:0::1;;13038:4;13045:10;-1:-1:-1::0;;;;;13045:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12989:74;::::0;-1:-1:-1;;;;;;12989:74:0::1;::::0;;;;;;-1:-1:-1;;;;;24338:15:1;;;12989:74:0::1;::::0;::::1;24320:34:1::0;24390:15;;24370:18;;;24363:43;24232:18;;12989:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12970:93:::0;-1:-1:-1;;;;;;13078:22:0;::::1;13074:200;;13137:10;-1:-1:-1::0;;;;;13137:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13126:43:0::1;;13178:4;13185:10;-1:-1:-1::0;;;;;13185:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13126:77;::::0;-1:-1:-1;;;;;;13126:77:0::1;::::0;;;;;;-1:-1:-1;;;;;24338:15:1;;;13126:77:0::1;::::0;::::1;24320:34:1::0;24390:15;;24370:18;;;24363:43;24232:18;;13126:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13117:6;:86:::0;;-1:-1:-1;;;;;;13117:86:0::1;-1:-1:-1::0;;;;;13117:86:0;;;::::1;::::0;;;::::1;::::0;;13074:200:::1;;;13245:6;:17:::0;;-1:-1:-1;;;;;;13245:17:0::1;-1:-1:-1::0;;;;;13245:17:0;::::1;;::::0;;13074:200:::1;13284:9;:22:::0;;-1:-1:-1;;13284:22:0::1;;-1:-1:-1::0;;;;;13284:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;13325:6:::1;::::0;;;::::1;-1:-1:-1::0;13317:15:0;;;-1:-1:-1;13317:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;13317:22:0;;::::1;::::0;::::1;::::0;;;13375:6;;;::::1;13350:32:::0;;:24:::1;:32:::0;;;;;;:39;;;;::::1;;::::0;;13432:9;;13400:62:::1;::::0;13417:4:::1;::::0;13432:9;::::1;;-1:-1:-1::0;;13400:8:0::1;:62::i;16910:191::-:0;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;-1:-1:-1;;;;;16995:23:0;::::1;16987:59;;;::::0;-1:-1:-1;;;16987:59:0;;24619:2:1;16987:59:0::1;::::0;::::1;24601:21:1::0;24658:2;24638:18;;;24631:30;24697:25;24677:18;;;24670:53;24740:18;;16987:59:0::1;24417:347:1::0;16987:59:0::1;17057:15;:36:::0;;-1:-1:-1;;;;;;17057:36:0::1;-1:-1:-1::0;;;;;17057:36:0;;;::::1;::::0;;;::::1;::::0;;16910:191::o;29238:182::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;29305:16:::1;::::0;;;::::1;;;29304:17;29296:58;;;::::0;-1:-1:-1;;;29296:58:0;;24971:2:1;29296:58:0::1;::::0;::::1;24953:21:1::0;25010:2;24990:18;;;24983:30;25049;25029:18;;;25022:58;25097:18;;29296:58:0::1;24769:352:1::0;29296:58:0::1;29373:6;::::0;29365:47:::1;::::0;-1:-1:-1;;;;;29373:6:0;;::::1;::::0;29390:21:::1;29365:47:::0;::::1;;;::::0;29373:6:::1;29365:47:::0;29373:6;29365:47;29390:21;29373:6;29365:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;29238:182::o:0;27723:111::-;27789:7;;:26;;-1:-1:-1;;;27789:26:0;;;;;391:25:1;;;-1:-1:-1;;;;;27789:7:0;;;;:15;;364:18:1;;27789:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27785:42;;;27723:111;:::o;29838:116::-;29917:7;;:29;;;-1:-1:-1;;;29917:29:0;;;;29890:7;;-1:-1:-1;;;;;29917:7:0;;:27;;:29;;;;;;;;;;;;;;:7;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18521:699::-;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;18721:16;18701;5469:15:::1;5407:2;5469;:15;:::i;:::-;5451:34;::::0;5251:13:::1;5451:34;:::i;:::-;18691:26;;;;:::i;:::-;18690:47;;;;:::i;:::-;18674:13;:63:::0;18789:13;18772;5469:15:::1;5407:2;5469;:15;:::i;:::-;5451:34;::::0;5251:13:::1;5451:34;:::i;:::-;18762:23;;;;:::i;:::-;18761:41;;;;:::i;:::-;18748:10;:54:::0;;;18821:13:::1;::::0;:27:::1;;18813:73;;;::::0;-1:-1:-1;;;18813:73:0;;25328:2:1;18813:73:0::1;::::0;::::1;25310:21:1::0;25367:2;25347:18;;;25340:30;25406:34;25386:18;;;25379:62;-1:-1:-1;;;25457:18:1;;;25450:31;25498:19;;18813:73:0::1;25126:397:1::0;18813:73:0::1;18930:6;::::0;-1:-1:-1;;;;;18930:6:0::1;11382:7:::0;11400:16;;;;;;;;;;;6175:5:::1;::::0;18920:23:::1;::::0;18940:3:::1;18920:23;:::i;:::-;18919:44;;;;:::i;:::-;18905:10;;:58;;18897:106;;;::::0;-1:-1:-1;;;18897:106:0;;25730:2:1;18897:106:0::1;::::0;::::1;25712:21:1::0;25769:2;25749:18;;;25742:30;25808:34;25788:18;;;25781:62;-1:-1:-1;;;25859:18:1;;;25852:33;25902:19;;18897:106:0::1;25528:399:1::0;18897:106:0::1;19046:9;5469:15;5407:2;5469;:15;:::i;:::-;5451:34;::::0;5251:13:::1;5451:34;:::i;:::-;19036:19;;;;:::i;:::-;19022:10;;:33;;19014:92;;;::::0;-1:-1:-1;;;19014:92:0;;26134:2:1;19014:92:0::1;::::0;::::1;26116:21:1::0;26173:2;26153:18;;;26146:30;26212:34;26192:18;;;26185:62;-1:-1:-1;;;26263:18:1;;;26256:44;26317:19;;19014:92:0::1;25932:410:1::0;19014:92:0::1;19152:9;5469:15;5407:2;5469;:15;:::i;:::-;5451:34;::::0;5251:13:::1;5451:34;:::i;:::-;19142:19;;;;:::i;:::-;19125:13;;:36;;19117:95;;;::::0;-1:-1:-1;;;19117:95:0;;26134:2:1;19117:95:0::1;::::0;::::1;26116:21:1::0;26173:2;26153:18;;;26146:30;26212:34;26192:18;;;26185:62;-1:-1:-1;;;26263:18:1;;;26256:44;26317:19;;19117:95:0::1;25932:410:1::0;16103:148:0;9267:6;;-1:-1:-1;;;;;9267:6:0;9277:10;9267:20;9259:50;;;;-1:-1:-1;;;9259:50:0;;12710:2:1;9259:50:0;;;12692:21:1;12749:2;12729:18;;;12722:30;-1:-1:-1;;;;;;;;;;;12768:18:1;;;12761:47;12825:18;;9259:50:0;12508:341:1;9259:50:0;-1:-1:-1;;;;;16199:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;16199:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16103:148::o;11735:342::-;-1:-1:-1;;;;;11830:20:0;;11822:69;;;;-1:-1:-1;;;11822:69:0;;26549:2:1;11822:69:0;;;26531:21:1;26588:2;26568:18;;;26561:30;26627:34;26607:18;;;26600:62;-1:-1:-1;;;26678:18:1;;;26671:34;26722:19;;11822:69:0;26347:400:1;11822:69:0;-1:-1:-1;;;;;11910:21:0;;11902:68;;;;-1:-1:-1;;;11902:68:0;;26954:2:1;11902:68:0;;;26936:21:1;26993:2;26973:18;;;26966:30;27032:34;27012:18;;;27005:62;-1:-1:-1;;;27083:18:1;;;27076:32;27125:19;;11902:68:0;26752:398:1;11902:68:0;-1:-1:-1;;;;;11983:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;12036:33;;391:25:1;;;12036:33:0;;364:18:1;12036:33:0;;;;;;;11735:342;;;:::o;20909:2177::-;20988:4;-1:-1:-1;;;;;21013:18:0;;21005:68;;;;-1:-1:-1;;;21005:68:0;;27357:2:1;21005:68:0;;;27339:21:1;27396:2;27376:18;;;27369:30;27435:34;27415:18;;;27408:62;-1:-1:-1;;;27486:18:1;;;27479:35;27531:19;;21005:68:0;27155:401:1;21005:68:0;-1:-1:-1;;;;;21092:16:0;;21084:64;;;;-1:-1:-1;;;21084:64:0;;27763:2:1;21084:64:0;;;27745:21:1;27802:2;27782:18;;;27775:30;27841:34;27821:18;;;27814:62;-1:-1:-1;;;27892:18:1;;;27885:33;27935:19;;21084:64:0;27561:399:1;21084:64:0;21176:1;21167:6;:10;21159:64;;;;-1:-1:-1;;;21159:64:0;;28167:2:1;21159:64:0;;;28149:21:1;28206:2;28186:18;;;28179:30;28245:34;28225:18;;;28218:62;-1:-1:-1;;;28296:18:1;;;28289:39;28345:19;;21159:64:0;27965:405:1;21159:64:0;-1:-1:-1;;;;;21322:13:0;;21234:8;21322:13;;;:7;:13;;;;;;21234:8;;;;21322:13;;21318:162;;;21358:4;21352:10;;21318:162;;;-1:-1:-1;;;;;21384:11:0;;;;;;:7;:11;;;;;;;;21380:100;;;21419:4;21412:11;;21380:100;;;-1:-1:-1;21464:4:0;21380:100;21494:20;21505:4;21511:2;21494:10;:20::i;:::-;21490:874;;;21535:14;;;;;;;21531:319;;21575:5;21570:265;;21605:34;;-1:-1:-1;;;21605:34:0;;28577:2:1;21605:34:0;;;28559:21:1;28616:2;28596:18;;;28589:30;28655:26;28635:18;;;28628:54;28699:18;;21605:34:0;28375:348:1;21570:265:0;-1:-1:-1;;;;;21670:31:0;;;;;;:25;:31;;;;;;;;21669:32;:66;;;;-1:-1:-1;;;;;;21706:29:0;;;;;;:25;:29;;;;;;;;21705:30;21669:66;21665:170;;;21760:55;;-1:-1:-1;;;21760:55:0;;28930:2:1;21760:55:0;;;28912:21:1;28969:2;28949:18;;;28942:30;29008:34;28988:18;;;28981:62;-1:-1:-1;;;29059:18:1;;;29052:43;29112:19;;21760:55:0;28728:409:1;21665:170:0;21868:3;:11;;;;21875:4;21868:11;21864:232;;;-1:-1:-1;;;;;21904:27:0;;;;;;:21;:27;;;;;;;;21903:28;:58;;;;-1:-1:-1;;;;;;21936:25:0;;;;;;:21;:25;;;;;;;;21935:26;21903:58;21899:182;;;22004:12;;21994:6;:22;;21986:75;;;;-1:-1:-1;;;21986:75:0;;29344:2:1;21986:75:0;;;29326:21:1;29383:2;29363:18;;;29356:30;29422:34;29402:18;;;29395:62;-1:-1:-1;;;29473:18:1;;;29466:38;29521:19;;21986:75:0;29142:404:1;21986:75:0;22128:9;;-1:-1:-1;;;;;22114:24:0;;;22128:9;;;;;22114:24;;;;:33;;;22143:4;22142:5;22114:33;22110:243;;;-1:-1:-1;;;;;22173:25:0;;;;;;:21;:25;;;;;;;;22168:170;;22257:14;;22247:6;22231:13;22241:2;-1:-1:-1;;;;;11400:16:0;11382:7;11400:16;;;;;;;;;;;;11316:103;22231:13;:22;;;;:::i;:::-;:40;;22223:95;;;;-1:-1:-1;;;22223:95:0;;29883:2:1;22223:95:0;;;29865:21:1;29922:2;29902:18;;;29895:30;29961:34;29941:18;;;29934:62;-1:-1:-1;;;30012:18:1;;;30005:40;30062:19;;22223:95:0;29681:406:1;22223:95:0;22380:4;22376:632;;;22406:6;;;;22401:596;;22437:19;;;;;;;22433:549;;;22530:4;22481:28;11400:16;;;;;;;;;;;22587:13;;22563:37;;22559:404;;22647:10;;22688:22;;;;22684:97;;;22745:13;;22735:6;;-1:-1:-1;;;;;22735:6:0;11382:7;11400:16;;;;;;;;;;;6175:5;;22725:33;;;:::i;:::-;22724:54;;;;:::i;:::-;22714:64;;22684:97;22835:7;22811:20;:31;22807:72;;22869:7;22846:30;;22807:72;22905:34;22918:20;22905:12;:34::i;:::-;22602:361;22559:404;22458:524;22433:549;23026:52;23043:4;23049:2;23053:6;23061:3;23066:4;23072:5;23026:16;:52::i;:::-;23019:59;20909:2177;-1:-1:-1;;;;;;;20909:2177:0:o;26385:916::-;-1:-1:-1;;;;;26555:25:0;;26504:4;26555:25;;;:19;:25;;;;;;26536:4;;26555:25;;;:52;;-1:-1:-1;;;;;;26584:23:0;;;;;;:19;:23;;;;;;;;26555:52;26551:99;;;-1:-1:-1;26633:5:0;26551:99;-1:-1:-1;;;;;26662:13:0;;:7;:13;;;;;;;;;;:23;;26679:6;;26662:7;:23;;26679:6;;26662:23;:::i;:::-;;;;-1:-1:-1;26721:6:0;;-1:-1:-1;26738:91:0;;;;26783:34;26793:4;26799:6;26807:3;26812:4;26783:9;:34::i;:::-;26766:51;;26738:91;-1:-1:-1;;;;;26839:11:0;;:7;:11;;;;;;;;;;:29;;26854:14;;26839:7;:29;;26854:14;;26839:29;:::i;:::-;;;;;;;;26899:2;-1:-1:-1;;;;;26884:34:0;26893:4;-1:-1:-1;;;;;26884:34:0;;26903:14;26884:34;;;;391:25:1;;379:2;364:18;;245:177;26884:34:0;;;;;;;;26934:16;;;;;;;26929:298;;26967:28;26986:4;26992:2;26967:18;:28::i;:::-;27015:16;;;;;;;27014:17;:41;;;;;27035:20;27046:4;27052:2;27035:10;:20::i;:::-;27014:77;;;;-1:-1:-1;;;;;;27060:31:0;;;;;;:25;:31;;;;;;;;27059:32;27014:77;:111;;;;-1:-1:-1;;;;;;27096:29:0;;;;;;:25;:29;;;;;;;;27095:30;27014:111;:121;;;;;27130:5;27129:6;27014:121;27010:206;;;27156:44;;-1:-1:-1;;;27156:44:0;;30294:2:1;27156:44:0;;;30276:21:1;30333:2;30313:18;;;30306:30;30372:34;30352:18;;;30345:62;-1:-1:-1;;;30423:18:1;;;30416:32;30465:19;;27156:44:0;30092:398:1;27010:206:0;27237:24;27252:4;27258:2;27237:14;:24::i;:::-;-1:-1:-1;27289:4:0;;26385:916;-1:-1:-1;;;;;;;;26385:916:0:o;20219:446::-;20320:6;;20288:4;;-1:-1:-1;;;;;20312:14:0;;;20320:6;;20312:14;;;;:43;;-1:-1:-1;20349:6:0;;-1:-1:-1;;;;;20343:12:0;;;20349:6;;20343:12;;20312:43;:79;;;;-1:-1:-1;20385:6:0;;-1:-1:-1;;;;;20385:6:0;20372:9;:19;;20312:79;:118;;;;-1:-1:-1;;;;;;20409:21:0;;;;;;:17;:21;;;;;;;;20408:22;20312:118;:159;;;;-1:-1:-1;;;;;;20448:23:0;;;;;;:17;:23;;;;;;;;20447:24;20312:159;:186;;;;-1:-1:-1;;;;;;20488:10:0;;6429:42;20488:10;;20312:186;:219;;;;-1:-1:-1;;;;;;20515:16:0;;;;20312:219;:257;;;;-1:-1:-1;;;;;;20548:21:0;;20564:4;20548:21;;20312:257;:302;;;;-1:-1:-1;20602:11:0;;-1:-1:-1;;;;;20586:28:0;;;20602:11;;;;;20586:28;;20312:302;:345;;;;-1:-1:-1;;20645:11:0;;;;;-1:-1:-1;;;;;20645:11:0;;;20631:26;;;;;20219:446;-1:-1:-1;20219:446:0:o;23094:1900::-;7240:6;:13;;-1:-1:-1;;7240:13:0;7249:4;7240:13;;;23177:30:::1;::::0;;::::1;::::0;::::1;::::0;;23200:7:::1;23177:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;7240:6;23222:17;23218:56:::1;;23256:7;;;23218:56;23318:4;23298:26;::::0;;;:11:::1;:26;::::0;;;;;;;23333:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;23333:9:0::1;23298:46:::0;;;;;;;;-1:-1:-1;;23298:67:0::1;23294:166;;23402:4;23382:26;::::0;;;:11:::1;:26;::::0;;;;;;;23417:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;23417:9:0::1;23382:46:::0;;;;;;;-1:-1:-1;;23382:66:0;;23294:166:::1;23472:17;23555:1;23538:6;:12;;;23493:58;;23517:6;:16;;;23494:39;;:20;:39;;;;:::i;:::-;23493:58;;;;:::i;:::-;23492:64;;;;:::i;:::-;23472:84:::0;-1:-1:-1;23567:15:0::1;23585:32;23472:84:::0;23585:20;:32:::1;:::i;:::-;23654:16;::::0;;23668:1:::1;23654:16:::0;;;;;::::1;::::0;;23567:50;;-1:-1:-1;23630:21:0::1;::::0;23654:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23654:16:0::1;23630:40;;23699:4;23681;23686:1;23681:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;23681:23:0::1;;;-1:-1:-1::0;;;;;23681:23:0::1;;;::::0;::::1;23725:9;;;;;;;;;-1:-1:-1::0;;;;;23725:9:0::1;-1:-1:-1::0;;;;;23725:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23715:4;23720:1;23715:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23715:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;23758:9:::1;::::0;:186:::1;::::0;-1:-1:-1;;;23758:186:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:186:::1;::::0;23833:7;;23855:1:::1;::::0;23871:4;;23898::::1;::::0;23918:15:::1;::::0;23758:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;23754:233;;23969:7;;;;;;23754:233;24020:21;23999:18;24106:7:::0;24080:22:::1;24093:9:::0;24020:21;24080:22:::1;:::i;:::-;24079:34;;;;:::i;:::-;24052:61:::0;-1:-1:-1;24130:13:0;;24126:400:::1;;24164:9;::::0;:222:::1;::::0;-1:-1:-1;;;24164:222:0;;24241:4:::1;24164:222;::::0;::::1;31890:34:1::0;31940:18;;;31933:34;;;24293:1:0::1;31983:18:1::0;;;31976:34;;;32026:18;;;32019:34;6429:42:0::1;32069:19:1::0;;;32062:44;24356:15:0::1;32122:19:1::0;;;32115:35;24164:9:0::1;::::0;;::::1;-1:-1:-1::0;;;;;24164:9:0::1;::::0;:25:::1;::::0;24197:16;;31801:19:1;;24164:222:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;24164:222:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;24164:222:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;24160:355;;24493:7;;;;;;;;24160:355;-1:-1:-1::0;;24411:40:0::1;::::0;;23647:25:1;;;23703:2;23688:18;;23681:34;;;24411:40:0::1;::::0;-1:-1:-1;23620:18:1;24411:40:0::1;;;;;;;24160:355;24538:30;24552:16:::0;24538:30;::::1;:::i;:::-;;;24595:6;:16;;;24579:6;:12;;:32;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;24702:12:::1;::::0;::::1;::::0;24684:14;;24622:12:::1;::::0;-1:-1:-1;24622:12:0;;24670:44;;::::1;::::0;24671:27:::1;::::0;::::1;:10:::0;:27:::1;:::i;:::-;24670:44;;;;:::i;:::-;24645:69:::0;-1:-1:-1;24725:24:0::1;24752:29;24645:69:::0;24752:10;:29:::1;:::i;:::-;24798:14:::0;;24725:56;;-1:-1:-1;24798:18:0::1;;::::0;24794:103:::1;;24837:7;;;;;;;;;-1:-1:-1::0;;;;;24837:7:0::1;-1:-1:-1::0;;;;;24837:12:0::1;;24857:14;24837:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;24833:53:::0;::::1;24920:15;::::0;:66:::1;::::0;-1:-1:-1;;;;;24920:15:0;;::::1;::::0;24976:5:::1;::::0;24948:21:::1;::::0;24920:66:::1;::::0;;;24948:21;24920:15;24976:5;24920:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;7264:1:0::1;-1:-1:-1::0;7276:6:0;:14;;-1:-1:-1;;7276:14:0;;;23094:1900::o;27842:767::-;27930:7;27950:18;27983:3;27979:205;;;-1:-1:-1;28016:9:0;:16;;;27979:205;;;28054:4;28050:134;;;-1:-1:-1;28088:9:0;:17;;;;;;28050:134;;;-1:-1:-1;28151:9:0;:21;;;;;;28050:134;28206:11;;;;;-1:-1:-1;;;;;28206:11:0;28230:4;28198:37;:73;;;;;28252:13;28269:2;28252:19;;28198:73;28194:101;;;-1:-1:-1;28288:4:0;28194:101;28309:10;28323:1;28309:15;28305:39;;28335:6;28328:13;;;;;28305:39;28354:17;6175:5;28374:19;28383:10;28374:6;:19;:::i;:::-;:38;;;;:::i;:::-;28354:58;-1:-1:-1;28427:13:0;;28423:141;;28473:4;28457:7;:22;;;;;;;;;;:35;;28483:9;;28457:7;:35;;28483:9;;28457:35;:::i;:::-;;;;-1:-1:-1;;28512:40:0;;391:25:1;;;28535:4:0;;-1:-1:-1;;;;;28512:40:0;;;;;379:2:1;364:18;28512:40:0;;;;;;;28423:141;28583:18;28592:9;28583:6;:18;:::i;25002:634::-;25084:16;;;;;;;25083:17;25075:65;;;;-1:-1:-1;;;25075:65:0;;33060:2:1;25075:65:0;;;33042:21:1;33099:2;33079:18;;;33072:30;33138:34;33118:18;;;33111:62;-1:-1:-1;;;33189:18:1;;;33182:33;33232:19;;25075:65:0;32858:399:1;25075:65:0;25156:20;25167:4;25173:2;25156:10;:20::i;:::-;25155:21;:37;;;;-1:-1:-1;25186:6:0;;-1:-1:-1;;;;;25180:12:0;;;25186:6;;25180:12;25155:37;25151:478;;;-1:-1:-1;;;;;25209:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;25209:30:0;25235:4;25209:30;;;25254:16;:23;;-1:-1:-1;;25254:23:0;;;;;;;25304:11;;;;25292:115;;25351:11;:40;;-1:-1:-1;;;;;;25351:40:0;25385:4;25351:40;;;;;25292:115;25433:7;;-1:-1:-1;;;;;25433:7:0;25421:104;;25477:7;:32;;-1:-1:-1;;;;;;25477:32:0;25503:4;25477:32;;;25421:104;25539:19;:26;;-1:-1:-1;;25539:26:0;;;;;25585:32;;-1:-1:-1;1941:41:1;;25585:32:0;;1929:2:1;1914:18;25585:32:0;;;;;;;25002:634;;:::o;27309:406::-;-1:-1:-1;;;;;27384:30:0;;;;;;:24;:30;;;;;;;;27379:113;;27435:7;;-1:-1:-1;;;;;27455:13:0;;;27435:7;27455:13;;;;;;;;;;;;;27435:34;;-1:-1:-1;;;27435:34:0;;;;;18590:74:1;;;;18680:18;;;18673:34;27435:7:0;;;:13;;18563:18:1;;27435:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27431:50;;-1:-1:-1;;;;;27507:28:0;;;;;;:24;:28;;;;;;;;27502:107;;27556:7;;-1:-1:-1;;;;;27574:11:0;;;27556:7;27574:11;;;;;;;;;;;;;27556:30;;-1:-1:-1;;;27556:30:0;;;;;18590:74:1;;;;18680:18;;;18673:34;27556:7:0;;;:13;;18563:18:1;;27556:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27552:46;;27623:14;;;;27619:89;;;27658:7;;27674:10;;27658:27;;-1:-1:-1;;;27658:27:0;;-1:-1:-1;;;;;27658:7:0;;;;:15;;:27;;;;391:25:1;;;379:2;364:18;;245:177;797:250;882:1;892:113;906:6;903:1;900:13;892:113;;;982:11;;;976:18;963:11;;;956:39;928:2;921:10;892:113;;;-1:-1:-1;;1039:1:1;1021:16;;1014:27;797:250::o;1052:271::-;1094:3;1132:5;1126:12;1159:6;1154:3;1147:19;1175:76;1244:6;1237:4;1232:3;1228:14;1221:4;1214:5;1210:16;1175:76;:::i;:::-;1305:2;1284:15;-1:-1:-1;;1280:29:1;1271:39;;;;1312:4;1267:50;;1052:271;-1:-1:-1;;1052:271:1:o;1328:220::-;1477:2;1466:9;1459:21;1440:4;1497:45;1538:2;1527:9;1523:18;1515:6;1497:45;:::i;1993:154::-;-1:-1:-1;;;;;2072:5:1;2068:54;2061:5;2058:65;2048:93;;2137:1;2134;2127:12;2152:315;2220:6;2228;2281:2;2269:9;2260:7;2256:23;2252:32;2249:52;;;2297:1;2294;2287:12;2249:52;2336:9;2323:23;2355:31;2380:5;2355:31;:::i;:::-;2405:5;2457:2;2442:18;;;;2429:32;;-1:-1:-1;;;2152:315:1:o;2472:247::-;2531:6;2584:2;2572:9;2563:7;2559:23;2555:32;2552:52;;;2600:1;2597;2590:12;2552:52;2639:9;2626:23;2658:31;2683:5;2658:31;:::i;2724:388::-;2792:6;2800;2853:2;2841:9;2832:7;2828:23;2824:32;2821:52;;;2869:1;2866;2859:12;2821:52;2908:9;2895:23;2927:31;2952:5;2927:31;:::i;:::-;2977:5;-1:-1:-1;3034:2:1;3019:18;;3006:32;3047:33;3006:32;3047:33;:::i;:::-;3099:7;3089:17;;;2724:388;;;;;:::o;3117:456::-;3194:6;3202;3210;3263:2;3251:9;3242:7;3238:23;3234:32;3231:52;;;3279:1;3276;3269:12;3231:52;3318:9;3305:23;3337:31;3362:5;3337:31;:::i;:::-;3387:5;-1:-1:-1;3444:2:1;3429:18;;3416:32;3457:33;3416:32;3457:33;:::i;:::-;3117:456;;3509:7;;-1:-1:-1;;;3563:2:1;3548:18;;;;3535:32;;3117:456::o;3578:248::-;3646:6;3654;3707:2;3695:9;3686:7;3682:23;3678:32;3675:52;;;3723:1;3720;3713:12;3675:52;-1:-1:-1;;3746:23:1;;;3816:2;3801:18;;;3788:32;;-1:-1:-1;3578:248:1:o;3831:127::-;3892:10;3887:3;3883:20;3880:1;3873:31;3923:4;3920:1;3913:15;3947:4;3944:1;3937:15;3963:275;4034:2;4028:9;4099:2;4080:13;;-1:-1:-1;;4076:27:1;4064:40;;4134:18;4119:34;;4155:22;;;4116:62;4113:88;;;4181:18;;:::i;:::-;4217:2;4210:22;3963:275;;-1:-1:-1;3963:275:1:o;4243:183::-;4303:4;4336:18;4328:6;4325:30;4322:56;;;4358:18;;:::i;:::-;-1:-1:-1;4403:1:1;4399:14;4415:4;4395:25;;4243:183::o;4431:662::-;4485:5;4538:3;4531:4;4523:6;4519:17;4515:27;4505:55;;4556:1;4553;4546:12;4505:55;4592:6;4579:20;4618:4;4642:60;4658:43;4698:2;4658:43;:::i;:::-;4642:60;:::i;:::-;4736:15;;;4822:1;4818:10;;;;4806:23;;4802:32;;;4767:12;;;;4846:15;;;4843:35;;;4874:1;4871;4864:12;4843:35;4910:2;4902:6;4898:15;4922:142;4938:6;4933:3;4930:15;4922:142;;;5004:17;;4992:30;;5042:12;;;;4955;;4922:142;;;-1:-1:-1;5082:5:1;4431:662;-1:-1:-1;;;;;;4431:662:1:o;5098:1215::-;5216:6;5224;5277:2;5265:9;5256:7;5252:23;5248:32;5245:52;;;5293:1;5290;5283:12;5245:52;5333:9;5320:23;5362:18;5403:2;5395:6;5392:14;5389:34;;;5419:1;5416;5409:12;5389:34;5457:6;5446:9;5442:22;5432:32;;5502:7;5495:4;5491:2;5487:13;5483:27;5473:55;;5524:1;5521;5514:12;5473:55;5560:2;5547:16;5582:4;5606:60;5622:43;5662:2;5622:43;:::i;5606:60::-;5700:15;;;5782:1;5778:10;;;;5770:19;;5766:28;;;5731:12;;;;5806:19;;;5803:39;;;5838:1;5835;5828:12;5803:39;5862:11;;;;5882:217;5898:6;5893:3;5890:15;5882:217;;;5978:3;5965:17;5995:31;6020:5;5995:31;:::i;:::-;6039:18;;5915:12;;;;6077;;;;5882:217;;;6118:5;-1:-1:-1;;6161:18:1;;6148:32;;-1:-1:-1;;6192:16:1;;;6189:36;;;6221:1;6218;6211:12;6189:36;;6244:63;6299:7;6288:8;6277:9;6273:24;6244:63;:::i;:::-;6234:73;;;5098:1215;;;;;:::o;6507:159::-;6574:20;;6634:6;6623:18;;6613:29;;6603:57;;6656:1;6653;6646:12;6603:57;6507:159;;;:::o;6671:328::-;6745:6;6753;6761;6814:2;6802:9;6793:7;6789:23;6785:32;6782:52;;;6830:1;6827;6820:12;6782:52;6853:28;6871:9;6853:28;:::i;:::-;6843:38;;6900:37;6933:2;6922:9;6918:18;6900:37;:::i;:::-;6890:47;;6956:37;6989:2;6978:9;6974:18;6956:37;:::i;:::-;6946:47;;6671:328;;;;;:::o;7004:118::-;7090:5;7083:13;7076:21;7069:5;7066:32;7056:60;;7112:1;7109;7102:12;7127:382;7192:6;7200;7253:2;7241:9;7232:7;7228:23;7224:32;7221:52;;;7269:1;7266;7259:12;7221:52;7308:9;7295:23;7327:31;7352:5;7327:31;:::i;:::-;7377:5;-1:-1:-1;7434:2:1;7419:18;;7406:32;7447:30;7406:32;7447:30;:::i;7514:180::-;7573:6;7626:2;7614:9;7605:7;7601:23;7597:32;7594:52;;;7642:1;7639;7632:12;7594:52;-1:-1:-1;7665:23:1;;7514:180;-1:-1:-1;7514:180:1:o;7699:711::-;7992:3;7981:9;7974:22;7955:4;8019:46;8060:3;8049:9;8045:19;8037:6;8019:46;:::i;:::-;8113:9;8105:6;8101:22;8096:2;8085:9;8081:18;8074:50;8147:33;8173:6;8165;8147:33;:::i;:::-;8133:47;;8228:9;8220:6;8216:22;8211:2;8200:9;8196:18;8189:50;8262:33;8288:6;8280;8262:33;:::i;:::-;8248:47;;8343:9;8335:6;8331:22;8326:2;8315:9;8311:18;8304:50;8371:33;8397:6;8389;8371:33;:::i;8415:511::-;8483:6;8491;8499;8552:2;8540:9;8531:7;8527:23;8523:32;8520:52;;;8568:1;8565;8558:12;8520:52;8607:9;8594:23;8626:28;8648:5;8626:28;:::i;:::-;8673:5;-1:-1:-1;8730:2:1;8715:18;;8702:32;8743:30;8702:32;8743:30;:::i;:::-;8792:7;-1:-1:-1;8851:2:1;8836:18;;8823:32;8864:30;8823:32;8864:30;:::i;:::-;8913:7;8903:17;;;8415:511;;;;;:::o;9178:316::-;9255:6;9263;9271;9324:2;9312:9;9303:7;9299:23;9295:32;9292:52;;;9340:1;9337;9330:12;9292:52;-1:-1:-1;;9363:23:1;;;9433:2;9418:18;;9405:32;;-1:-1:-1;9484:2:1;9469:18;;;9456:32;;9178:316;-1:-1:-1;9178:316:1:o;10208:385::-;10294:6;10302;10310;10318;10371:3;10359:9;10350:7;10346:23;10342:33;10339:53;;;10388:1;10385;10378:12;10339:53;-1:-1:-1;;10411:23:1;;;10481:2;10466:18;;10453:32;;-1:-1:-1;10532:2:1;10517:18;;10504:32;;10583:2;10568:18;10555:32;;-1:-1:-1;10208:385:1;-1:-1:-1;10208:385:1:o;10598:127::-;10659:10;10654:3;10650:20;10647:1;10640:31;10690:4;10687:1;10680:15;10714:4;10711:1;10704:15;10730:422;10819:1;10862:5;10819:1;10876:270;10897:7;10887:8;10884:21;10876:270;;;10956:4;10952:1;10948:6;10944:17;10938:4;10935:27;10932:53;;;10965:18;;:::i;:::-;11015:7;11005:8;11001:22;10998:55;;;11035:16;;;;10998:55;11114:22;;;;11074:15;;;;10876:270;;;10880:3;10730:422;;;;;:::o;11157:806::-;11206:5;11236:8;11226:80;;-1:-1:-1;11277:1:1;11291:5;;11226:80;11325:4;11315:76;;-1:-1:-1;11362:1:1;11376:5;;11315:76;11407:4;11425:1;11420:59;;;;11493:1;11488:130;;;;11400:218;;11420:59;11450:1;11441:10;;11464:5;;;11488:130;11525:3;11515:8;11512:17;11509:43;;;11532:18;;:::i;:::-;-1:-1:-1;;11588:1:1;11574:16;;11603:5;;11400:218;;11702:2;11692:8;11689:16;11683:3;11677:4;11674:13;11670:36;11664:2;11654:8;11651:16;11646:2;11640:4;11637:12;11633:35;11630:77;11627:159;;;-1:-1:-1;11739:19:1;;;11771:5;;11627:159;11818:34;11843:8;11837:4;11818:34;:::i;:::-;11888:6;11884:1;11880:6;11876:19;11867:7;11864:32;11861:58;;;11899:18;;:::i;:::-;11937:20;;11157:806;-1:-1:-1;;;11157:806:1:o;11968:140::-;12026:5;12055:47;12096:4;12086:8;12082:19;12076:4;12055:47;:::i;12113:217::-;12153:1;12179;12169:132;;12223:10;12218:3;12214:20;12211:1;12204:31;12258:4;12255:1;12248:15;12286:4;12283:1;12276:15;12169:132;-1:-1:-1;12315:9:1;;12113:217::o;12335:168::-;12408:9;;;12439;;12456:15;;;12450:22;;12436:37;12426:71;;12477:18;;:::i;12854:385::-;12933:6;12941;12994:2;12982:9;12973:7;12969:23;12965:32;12962:52;;;13010:1;13007;13000:12;12962:52;13042:9;13036:16;13061:31;13086:5;13061:31;:::i;:::-;13161:2;13146:18;;13140:25;13111:5;;-1:-1:-1;13174:33:1;13140:25;13174:33;:::i;13244:128::-;13311:9;;;13332:11;;;13329:37;;;13346:18;;:::i;14144:127::-;14205:10;14200:3;14196:20;14193:1;14186:31;14236:4;14233:1;14226:15;14260:4;14257:1;14250:15;14623:197;14661:3;14689:6;14730:2;14723:5;14719:14;14757:2;14748:7;14745:15;14742:41;;14763:18;;:::i;:::-;14812:1;14799:15;;14623:197;-1:-1:-1;;;14623:197:1:o;16728:184::-;16798:6;16851:2;16839:9;16830:7;16826:23;16822:32;16819:52;;;16867:1;16864;16857:12;16819:52;-1:-1:-1;16890:16:1;;16728:184;-1:-1:-1;16728:184:1:o;16917:510::-;16971:5;17024:3;17017:4;17009:6;17005:17;17001:27;16991:55;;17042:1;17039;17032:12;16991:55;17071:6;17065:13;17097:18;17093:2;17090:26;17087:52;;;17119:18;;:::i;:::-;17163:55;17206:2;17187:13;;-1:-1:-1;;17183:27:1;17212:4;17179:38;17163:55;:::i;:::-;17243:2;17234:7;17227:19;17289:3;17282:4;17277:2;17269:6;17265:15;17261:26;17258:35;17255:55;;;17306:1;17303;17296:12;17255:55;17319:77;17393:2;17386:4;17377:7;17373:18;17366:4;17358:6;17354:17;17319:77;:::i;17432:971::-;17569:6;17577;17585;17593;17646:3;17634:9;17625:7;17621:23;17617:33;17614:53;;;17663:1;17660;17653:12;17614:53;17696:9;17690:16;17725:18;17766:2;17758:6;17755:14;17752:34;;;17782:1;17779;17772:12;17752:34;17805:61;17858:7;17849:6;17838:9;17834:22;17805:61;:::i;:::-;17795:71;;17912:2;17901:9;17897:18;17891:25;17875:41;;17941:2;17931:8;17928:16;17925:36;;;17957:1;17954;17947:12;17925:36;17980:63;18035:7;18024:8;18013:9;18009:24;17980:63;:::i;:::-;17970:73;;18089:2;18078:9;18074:18;18068:25;18052:41;;18118:2;18108:8;18105:16;18102:36;;;18134:1;18131;18124:12;18102:36;18157:63;18212:7;18201:8;18190:9;18186:24;18157:63;:::i;:::-;18147:73;;18266:2;18255:9;18251:18;18245:25;18229:41;;18295:2;18285:8;18282:16;18279:36;;;18311:1;18308;18301:12;18279:36;;18334:63;18389:7;18378:8;18367:9;18363:24;18334:63;:::i;:::-;18324:73;;;17432:971;;;;;;;:::o;21644:245::-;21723:6;21731;21784:2;21772:9;21763:7;21759:23;21755:32;21752:52;;;21800:1;21797;21790:12;21752:52;-1:-1:-1;;21823:16:1;;21879:2;21864:18;;;21858:25;21823:16;;21858:25;;-1:-1:-1;21644:245:1:o;21894:251::-;21964:6;22017:2;22005:9;21996:7;21992:23;21988:32;21985:52;;;22033:1;22030;22023:12;21985:52;22065:9;22059:16;22084:31;22109:5;22084:31;:::i;22150:131::-;22210:5;22239:36;22266:8;22260:4;22239:36;:::i;22286:168::-;22353:6;22379:10;;;22391;;;22375:27;;22414:11;;;22411:37;;;22428:18;;:::i;:::-;22411:37;22286:168;;;;:::o;23223:245::-;23290:6;23343:2;23331:9;23322:7;23318:23;23314:32;23311:52;;;23359:1;23356;23349:12;23311:52;23391:9;23385:16;23410:28;23432:5;23410:28;:::i;29551:125::-;29616:9;;;29637:10;;;29634:36;;;29650:18;;:::i;30495:1026::-;30757:4;30805:3;30794:9;30790:19;30836:6;30825:9;30818:25;30862:2;30900:6;30895:2;30884:9;30880:18;30873:34;30943:3;30938:2;30927:9;30923:18;30916:31;30967:6;31002;30996:13;31033:6;31025;31018:22;31071:3;31060:9;31056:19;31049:26;;31110:2;31102:6;31098:15;31084:29;;31131:1;31141:218;31155:6;31152:1;31149:13;31141:218;;;31220:13;;-1:-1:-1;;;;;31216:62:1;31204:75;;31334:15;;;;31299:12;;;;31177:1;31170:9;31141:218;;;-1:-1:-1;;;;;;;31415:55:1;;;;31410:2;31395:18;;31388:83;-1:-1:-1;;;31502:3:1;31487:19;31480:35;31376:3;30495:1026;-1:-1:-1;;;30495:1026:1:o;32161:306::-;32249:6;32257;32265;32318:2;32306:9;32297:7;32293:23;32289:32;32286:52;;;32334:1;32331;32324:12;32286:52;32363:9;32357:16;32347:26;;32413:2;32402:9;32398:18;32392:25;32382:35;;32457:2;32446:9;32442:18;32436:25;32426:35;;32161:306;;;;;:::o;32472:171::-;32540:6;32579:10;;;32567;;;32563:27;;32602:12;;;32599:38;;;32617:18;;:::i

Swarm Source

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