ETH Price: $2,631.48 (+1.58%)

Token

Unrekt Protocol ($UNREKT)
 

Overview

Max Total Supply

100,000,000 $UNREKT

Holders

119

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 $UNREKT

Value
$0.00
0x8B9894facF08A16eFACFaA4C505FBb16F88eBda9
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:
UnrektProtocol

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-01
*/

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

contract UnrektProtocol is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    uint256 constant private startingSupply = 100_000_000;
    string constant private _name = "Unrekt Protocol";
    string constant private _symbol = "$UNREKT";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

    struct Ratios {
        uint16 marketing;
        uint16 development;
        uint16 revShare;
        uint16 team;
        uint16 buybacks;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        marketing: 25,
        development: 10,
        revShare: 7,
        team: 5,
        buybacks: 3,
        totalSwap: 50
    });

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

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable marketing;
        address payable development;
        address payable team;
        address payable revShare;
        address payable buybacks;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x51E11cA32f87f67016E76E62DB92E93bCE94b832),
        development: payable(0x6015900ee8Da7008a236b46f9528136114ec7049),
        team: payable(0x639fAB1e71f06C63Af84a370A0d562c0C6cA4920),
        revShare: payable(0x013e9B0db1e24C57C09925E952Eae6453CcdaC81),
        buybacks: payable(0xcd3ffec64d00303aAf40B0Cf77E69c7EFf7F4BD0)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;
    uint256 public launchStamp;

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);

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

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;

        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

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

        _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.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(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 allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

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

    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: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

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

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

    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);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        lpPairs[lpPair] = false;
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (!enabled) {
            lpPairs[pair] = false;
            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 setInitializer(address init) public onlyOwner {
        require(!tradingEnabled);
        require(init != address(this), "Can't be self.");
        initializer = Initializer(init);
        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);
        } catch { revert(); }
    }

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

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

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

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

    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

    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 setRatios(uint16 marketing, uint16 development, uint16 team, uint16 revShare, uint16 buybacks) external onlyOwner {
        _ratios.marketing = marketing;
        _ratios.development = development;
        _ratios.team = team;
        _ratios.revShare = revShare;
        _ratios.buybacks = buybacks;
        _ratios.totalSwap = marketing + revShare + development + team + buybacks;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.totalSwap <= total, "Cannot exceed sum of buy and sell fees.");
    }

    function setWallets(address payable marketing, address payable revShare, address payable development, address payable team, address payable buybacks) external onlyOwner {
        require(marketing != address(0) && revShare != address(0) && development != address(0) && team != address(0) && buybacks != address(0), "Cannot be zero address.");
        _taxWallets.marketing = payable(marketing);
        _taxWallets.development = payable(development);
        _taxWallets.revShare = payable(revShare);
        _taxWallets.team = payable(team);
        _taxWallets.buybacks = payable(buybacks);
    }

    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 priceImpactSwapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        piContractSwapsEnabled = priceImpactSwapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

    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 _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 (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.totalSwap == 0) {
            return;
        }

        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }
       
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        uint256 amtBalance = address(this).balance;
        bool success;
        uint256 revShareBalance = (amtBalance * ratios.revShare) / ratios.totalSwap;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 teamBalance = (amtBalance * ratios.team) / ratios.totalSwap;
        uint256 buybacksBalance = (amtBalance * ratios.buybacks) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - (revShareBalance + developmentBalance + buybacksBalance + teamBalance);
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.revShare > 0) {
            (success,) = _taxWallets.revShare.call{value: revShareBalance, gas: 55000}("");
        }
        if (ratios.development > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 55000}("");
        }
        if (ratios.team > 0) {
            (success,) = _taxWallets.team.call{value: teamBalance, gas: 55000}("");
        }
        if (ratios.buybacks > 0) {
            (success,) = _taxWallets.buybacks.call{value: buybacksBalance, gas: 55000}("");
        }
    }

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _isExcludedFromFees[from] = true;
            _hasLiqBeenAdded = true;
            if (address(initializer) == address(0)){
                initializer = Initializer(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 {}
        tradingEnabled = true;
        launchStamp = block.timestamp;
    }

    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 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 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 = (takeFee) ? takeTaxes(from, amount, buy, sell) : amount;
        _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.");
            }
        }
        return true;
    }

    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 (currentFee == 0) { return amount; }
        if (address(initializer) == address(this)
            && (block.chainid == 1
            || block.chainid == 56)) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }
}

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":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","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":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"revShare","type":"uint16"},{"internalType":"uint16","name":"team","type":"uint16"},{"internalType":"uint16","name":"buybacks","type":"uint16"},{"internalType":"uint16","name":"totalSwap","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":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"team","type":"address"},{"internalType":"address payable","name":"revShare","type":"address"},{"internalType":"address payable","name":"buybacks","type":"address"}],"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":"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":"getCirculatingSupply","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":[{"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":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","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":"setExcludedFromFees","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":"init","type":"address"}],"name":"setInitializer","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":"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":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"team","type":"uint16"},{"internalType":"uint16","name":"revShare","type":"uint16"},{"internalType":"uint16","name":"buybacks","type":"uint16"}],"name":"setRatios","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"},{"internalType":"address payable","name":"revShare","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"team","type":"address"},{"internalType":"address payable","name":"buybacks","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"}]

5f60028190556101f4608081905260a05260c0526007805465ffffffffffff19166301f401f4178155601960e052600a61010081905261012091909152600561014052600361016052603261018052600880546a32000300050007000a00196001600160601b03199091161790556102406040527351e11ca32f87f67016e76e62db92e93bce94b8326101a0819052736015900ee8da7008a236b46f9528136114ec70496101c081905273639fab1e71f06c63af84a370a0d562c0c6ca49206101e081905273013e9b0db1e24c57c09925e952eae6453ccdac8161020081905273cd3ffec64d00303aaf40b0cf77e69c7eff7f4bd0610220819052600b80546001600160a01b03199081169096179055600c80548616909417909355600d80548516909217909155600e805484169091179055600f8054831690911790556010805461ff001916905560148290556015805461ffff19169055601780549091163317905561016f906012906103f8565b61017d906305f5e10061040d565b601780546001600160a01b039081165f90815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6101ce6012600a6103f8565b6101dc906305f5e10061040d565b60405190815260200160405180910390a3601780546001600160a01b039081165f9081526006602081815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055965490951684526004825283208054861685179055527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548416831790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea0805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf98054909216179055610424565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561034e57808504811115610332576103326102ff565b600184161561034057908102905b60019390931c928002610317565b935093915050565b5f82610364575060016103f2565b8161037057505f6103f2565b81600181146103865760028114610390576103ac565b60019150506103f2565b60ff8411156103a1576103a16102ff565b50506001821b6103f2565b5060208310610133831016604e8410600b84101617156103cf575081810a6103f2565b6103db5f198484610313565b805f19048211156103ee576103ee6102ff565b0290505b92915050565b5f61040660ff841683610356565b9392505050565b80820281158282048414176103f2576103f26102ff565b613944806104315f395ff3fe6080604052600436106102dc575f3560e01c80635a6f091811610189578063b1b08f71116100d8578063eafb5a3c11610092578063f94aa1b41161006d578063f94aa1b414610921578063fb78680d14610993578063fdb78c0e146109b2578063feadde9c146109d0575f80fd5b8063eafb5a3c146108cf578063ee5d9c2d146108ee578063f08f43a214610902575f80fd5b8063b1b08f71146104f1578063b3d514fb146104f1578063b7df8b36146107c9578063bfc2fc35146107e2578063cf84770614610801578063dd62ed3e1461088b575f80fd5b806382528791116101435780638a8c523c1161011e5780638a8c523c1461074857806395d89b411461075c578063a9059cbb1461078b578063ab558e4d146107aa575f80fd5b806382528791146106f8578063893d20e8146107175780638a63bd9b14610734575f80fd5b80635a6f09181461065e5780635c24b0741461067357806370a0823114610692578063715018a6146106b157806378648edf146106c557806380c581d1146106d9575f80fd5b80632b112e49116102455780634ada218b116101ff5780634fb2e45d116101da5780634fb2e45d146105cb5780634fbee193146105ea57806350a8e01614610621578063590ffdce1461063f575f80fd5b80634ada218b146105745780634bbb93eb1461058d5780634e718e48146105ac575f80fd5b80632b112e49146104dd5780632b28fc7a146104f15780632e8fa82114610506578063313ce5671461051b57806332cde66414610536578063452ed4f114610555575f80fd5b8063095ea7b311610296578063095ea7b31461041e5780630dcbcf1c1461043d57806318160ddd1461047457806323b872dd146104885780632610eaca146104a757806328577751146104c8575f80fd5b806303fd2a45146102e75780630445b66714610319578063069d955f1461033c57806306fdde03146103915780630758d924146103d157806307dd79e0146103f5575f80fd5b366102e357005b5f80fd5b3480156102f2575f80fd5b506102fc61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610324575f80fd5b5061032e60115481565b604051908152602001610310565b348015610347575f80fd5b5060075461036c9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610310565b34801561039c575f80fd5b5060408051808201909152600f81526e155b9c995add08141c9bdd1bd8dbdb608a1b60208201525b6040516103109190613124565b3480156103dc575f80fd5b506009546102fc9061010090046001600160a01b031681565b348015610400575f80fd5b5060095461040e9060ff1681565b6040519015158152602001610310565b348015610429575f80fd5b5061040e61043836600461316d565b6109ef565b348015610448575f80fd5b5061040e610457366004613197565b6001600160a01b03165f9081526005602052604090205460ff1690565b34801561047f575f80fd5b5061032e610a05565b348015610493575f80fd5b5061040e6104a23660046131b2565b610a25565b3480156104b2575f80fd5b506104c66104c13660046132c2565b610a9a565b005b3480156104d3575f80fd5b5061032e60145481565b3480156104e8575f80fd5b5061032e610c1e565b3480156104fc575f80fd5b5061032e6161a881565b348015610511575f80fd5b5061032e60125481565b348015610526575f80fd5b5060405160128152602001610310565b348015610541575f80fd5b506104c661055036600461339d565b610c61565b348015610560575f80fd5b50600a546102fc906001600160a01b031681565b34801561057f575f80fd5b5060155461040e9060ff1681565b348015610598575f80fd5b5061032e6105a73660046133dd565b610d8b565b3480156105b7575f80fd5b506104c66105c63660046133dd565b610dbc565b3480156105d6575f80fd5b506104c66105e5366004613197565b610e35565b3480156105f5575f80fd5b5061040e610604366004613197565b6001600160a01b03165f9081526006602052604090205460ff1690565b34801561062c575f80fd5b5060155461040e90610100900460ff1681565b34801561064a575f80fd5b506104c6610659366004613401565b610f5b565b348015610669575f80fd5b5061032e60165481565b34801561067e575f80fd5b506104c661068d366004613197565b610faf565b34801561069d575f80fd5b5061032e6106ac366004613197565b61114d565b3480156106bc575f80fd5b506104c6611167565b3480156106d0575f80fd5b506104c661125e565b3480156106e4575f80fd5b506104c66106f3366004613401565b611297565b348015610703575f80fd5b506104c6610712366004613438565b61146e565b348015610722575f80fd5b506017546001600160a01b03166102fc565b34801561073f575f80fd5b5061040e61159e565b348015610753575f80fd5b506104c66115ee565b348015610767575f80fd5b50604080518082019091526007815266091553949152d560ca1b60208201526103c4565b348015610796575f80fd5b5061040e6107a536600461316d565b611814565b3480156107b5575f80fd5b506104c66107c4366004613197565b61182a565b3480156107d4575f80fd5b5060135461040e9060ff1681565b3480156107ed575f80fd5b506104c66107fc3660046134a5565b6119a1565b34801561080c575f80fd5b5060085461084e9061ffff808216916201000081048216916401000000008204811691600160301b8104821691600160401b8204811691600160501b90041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c001610310565b348015610896575f80fd5b5061032e6108a53660046134c1565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156108da575f80fd5b506104c66108e9366004613197565b611a2a565b3480156108f9575f80fd5b506104c6611dee565b34801561090d575f80fd5b506104c661091c3660046134ed565b611ea6565b34801561092c575f80fd5b50600b54600c54600d54600e54600f54610959946001600160a01b03908116948116938116928116911685565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a001610310565b34801561099e575f80fd5b506104c66109ad36600461354e565b612005565b3480156109bd575f80fd5b5060105461040e90610100900460ff1681565b3480156109db575f80fd5b506104c66109ea366004613401565b612215565b5f6109fb338484612269565b5060015b92915050565b5f610a126012600a613674565b610a20906305f5e100613682565b905090565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610a87576001600160a01b0384165f90815260036020908152604080832033845290915281208054849290610a81908490613699565b90915550505b610a92848484612361565b949350505050565b6017546001600160a01b03163314610acd5760405162461bcd60e51b8152600401610ac4906136ac565b60405180910390fd5b8051825114610b165760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610ac4565b5f5b82518161ffff161015610c1957610b316012600a613674565b828261ffff1681518110610b4757610b476136d7565b6020026020010151610b599190613682565b610b623361114d565b1015610ba55760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610ac4565b610c0633848361ffff1681518110610bbf57610bbf6136d7565b60200260200101516012600a610bd59190613674565b858561ffff1681518110610beb57610beb6136d7565b6020026020010151610bfd9190613682565b5f806001612694565b5080610c11816136eb565b915050610b18565b505050565b5f610c285f61114d565b610c3361dead61114d565b610c3d919061370b565b610c496012600a613674565b610c57906305f5e100613682565b610a209190613699565b6017546001600160a01b03163314610c8b5760405162461bcd60e51b8152600401610ac4906136ac565b60095460ff1615610cd25760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610ac4565b6161a88361ffff1611158015610cee57506161a88261ffff1611155b8015610d0057506161a88161ffff1611155b610d4c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ac4565b6007805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b600a545f90612710908390610da8906001600160a01b031661114d565b610db29190613682565b6109ff919061371e565b6017546001600160a01b03163314610de65760405162461bcd60e51b8152600401610ac4906136ac565b6096811115610e305760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610ac4565b601455565b6017546001600160a01b03163314610e5f5760405162461bcd60e51b8152600401610ac4906136ac565b6001600160a01b038116610e855760405162461bcd60e51b8152600401610ac49061373d565b61deac196001600160a01b03821601610eb05760405162461bcd60e51b8152600401610ac49061373d565b601754610ec6906001600160a01b03165f610f5b565b610ed1816001610f5b565b6017545f90610ee8906001600160a01b031661114d565b1115610f0a57601754610f08906001600160a01b031682610bfd8261114d565b505b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6017546001600160a01b03163314610f855760405162461bcd60e51b8152600401610ac4906136ac565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b6017546001600160a01b03163314610fd95760405162461bcd60e51b8152600401610ac4906136ac565b60155460ff1615610fe8575f80fd5b306001600160a01b038216036110315760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610ac4565b6015805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301815f875af19250505080156110b6575060408051601f3d908101601f191682019092526110b39181019061379a565b60015b6110be575f80fd5b60098054610100600160a81b0319166101006001600160a01b038581168202929092178355600a80546001600160a01b0319168584169081179091555f908152600160208190526040909120805460ff19169091179055601754925461112c93831692919004165f19612269565b600954610c1990309061010090046001600160a01b03165f19612269565b50565b6001600160a01b03165f9081526020819052604090205490565b6017546001600160a01b031633146111915760405162461bcd60e51b8152600401610ac4906136ac565b60155460ff166111fb5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610ac4565b601754611211906001600160a01b03165f610f5b565b601780546001600160a01b031981169091556040516001600160a01b03909116905f9082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6017546001600160a01b031633146112885760405162461bcd60e51b8152600401610ac4906136ac565b6009805460ff19166001179055565b6017546001600160a01b031633146112c15760405162461bcd60e51b8152600401610ac4906136ac565b8061134b576001600160a01b038281165f81815260016020526040808220805460ff1916905560155490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d1906044015b5f604051808303815f87803b158015611331575f80fd5b505af1158015611343573d5f803e3d5ffd5b505050505050565b600254156113a4576203f480600254426113659190613699565b116113a45760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610ac4565b6001600160a01b0382165f9081526001602052604090205460ff161561140c5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610ac4565b6001600160a01b038281165f81815260016020819052604091829020805460ff1916821790554260025560155491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d19060440161131a565b5050565b6017546001600160a01b031633146114985760405162461bcd60e51b8152600401610ac4906136ac565b6001600160a01b038516158015906114b857506001600160a01b03841615155b80156114cc57506001600160a01b03831615155b80156114e057506001600160a01b03821615155b80156114f457506001600160a01b03811615155b6115405760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610ac4565b600b80546001600160a01b03199081166001600160a01b0397881617909155600c8054821694871694909417909355600e8054841694861694909417909355600d80548316918516919091179055600f805490911691909216179055565b6017545f906001600160a01b031633146115ca5760405162461bcd60e51b8152600401610ac4906136ac565b6009546115e890309061010090046001600160a01b03165f19612269565b50600190565b6017546001600160a01b031633146116185760405162461bcd60e51b8152600401610ac4906136ac565b60155460ff161561166b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ac4565b601554610100900460ff166116c25760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ac4565b6015546201000090046001600160a01b03166116f2576015805462010000600160b01b0319163062010000021790555b601554600a54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c34906084015f604051808303815f87803b158015611761575f80fd5b505af1925050508015611772575060015b50601554600a546001600160a01b03620100009092048216916325a71cae9161179b911661114d565b6040518263ffffffff1660e01b81526004016117b991815260200190565b60408051808303815f875af19250505080156117f2575060408051601f3d908101601f191682019092526117ef918101906137c7565b60015b15611801576011919091556012555b6015805460ff1916600117905542601655565b5f611820338484612361565b5060019392505050565b6017546001600160a01b031633146118545760405162461bcd60e51b8152600401610ac4906136ac565b601554610100900460ff16156118bc57306001600160a01b038216036118bc5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610ac4565b6017546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611911573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061193591906137e9565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af115801561197d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c199190613800565b6017546001600160a01b031633146119cb5760405162461bcd60e51b8152600401610ac4906136ac565b6010805461ff001916610100841515908102919091179091556013805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6017546001600160a01b03163314611a545760405162461bcd60e51b8152600401610ac4906136ac565b601554610100900460ff1615611aac5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610ac4565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b11919061381b565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b80919061381b565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bc9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bed919061381b565b600a546001600160a01b039081165f908152600160205260409020805460ff191690559091508116611d7b57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c79919061381b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ce8919061381b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611d32573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d56919061381b565b600a80546001600160a01b0319166001600160a01b0392909216919091179055611d97565b600a80546001600160a01b0319166001600160a01b0383161790555b60098054610100600160a81b0319166101006001600160a01b038581168202929092178355600a5482165f908152600160208190526040909120805460ff191690911790559154610c199230929104165f19612269565b6017546001600160a01b03163314611e185760405162461bcd60e51b8152600401610ac4906136ac565b601554610100900460ff1615611e705760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ac4565b6017546040516001600160a01b03909116904780156108fc02915f818181858888f1935050505015801561114a573d5f803e3d5ffd5b6017546001600160a01b03163314611ed05760405162461bcd60e51b8152600401610ac4906136ac565b6008805461ffff87811663ffffffff199092169190911762010000878316021767ffffffff000000001916600160301b8683160265ffff00000000191617640100000000858316021769ffff00000000000000001916600160401b91841691909102179055808385611f428589613836565b611f4c9190613836565b611f569190613836565b611f609190613836565b6008805461ffff60501b1916600160501b61ffff938416021790556007545f91611f939162010000810482169116613836565b60085461ffff9182169250600160501b9004168110156113435760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610ac4565b6017546001600160a01b0316331461202f5760405162461bcd60e51b8152600401610ac4906136ac565b828461203d6012600a613674565b61204b906305f5e100613682565b6120559190613682565b61205f919061371e565b60115580826120706012600a613674565b61207e906305f5e100613682565b6120889190613682565b612092919061371e565b601281905560115411156120f25760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610ac4565b600a546127109061210b906001600160a01b031661114d565b612116906096613682565b612120919061371e565b601254111561217d5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610ac4565b620f424061218d6012600a613674565b61219b906305f5e100613682565b6121a5919061371e565b60125410156121c65760405162461bcd60e51b8152600401610ac490613850565b620f42406121d66012600a613674565b6121e4906305f5e100613682565b6121ee919061371e565b601154101561220f5760405162461bcd60e51b8152600401610ac490613850565b50505050565b6017546001600160a01b0316331461223f5760405162461bcd60e51b8152600401610ac4906136ac565b6001600160a01b03919091165f908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166122b55760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ac4565b6001600160a01b0382166123015760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ac4565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166123c65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ac4565b6001600160a01b0383166124285760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ac4565b5f82116124895760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ac4565b6001600160a01b0384165f908152600160205260408120548190819060ff16156124b657600192506124e3565b6001600160a01b0386165f9081526001602052604090205460ff16156124df57600191506124e3565b5060015b6124ed8787612897565b156125ec5760155460ff166125ec57806125495760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ac4565b6001600160a01b0387165f9081526005602052604090205460ff1615801561258957506001600160a01b0386165f9081526005602052604090205460ff16155b156125ec5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610ac4565b811561267b5760105460ff1661267b57601054610100900460ff161561267b575f6126163061114d565b905060115481106126795760125460135460ff161561266357601454600a54612710919061264c906001600160a01b031661114d565b6126569190613682565b612660919061371e565b90505b80821061266e578091505b612677826129ab565b505b505b612689878787868686612694565b979650505050505050565b6001600160a01b0386165f9081526006602052604081205460019060ff16806126d457506001600160a01b0387165f9081526006602052604090205460ff165b156126dc57505f5b6001600160a01b0388165f9081526020819052604081208054889290612703908490613699565b909155505f9050816127155786612721565b61272189888888612ed4565b9050805f808a6001600160a01b03166001600160a01b031681526020019081526020015f205f828254612754919061370b565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127a091815260200190565b60405180910390a3601554610100900460ff16612888576127c18989612fe5565b601554610100900460ff161580156127de57506127de8989612897565b801561280257506001600160a01b0389165f9081526005602052604090205460ff16155b801561282657506001600160a01b0388165f9081526005602052604090205460ff16155b8015612830575083155b156128885760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610ac4565b50600198975050505050505050565b6017545f906001600160a01b038481169116148015906128c557506017546001600160a01b03838116911614155b80156128dc57506017546001600160a01b03163214155b801561290057506001600160a01b0382165f9081526004602052604090205460ff16155b801561292457506001600160a01b0383165f9081526004602052604090205460ff16155b801561293b57506001600160a01b03821661dead14155b801561294f57506001600160a01b03821615155b801561296457506001600160a01b0383163014155b801561298457506015546001600160a01b03848116620100009092041614155b80156129a457506015546001600160a01b03838116620100009092041614155b9392505050565b6010805460ff191660011790556040805160c08101825260085461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a082018190525f03612a245750612ec7565b305f90815260036020908152604080832060095461010090046001600160a01b031684529091529020545f1914612a8357305f90815260036020908152604080832060095461010090046001600160a01b0316845290915290205f1990555b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612ab657612ab66136d7565b60200260200101906001600160a01b031690816001600160a01b031681525050600960019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b4b919061381b565b81600181518110612b5e57612b5e6136d7565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b81526101009091049091169063791ac94790612baa9086905f9086903090429060040161389e565b5f604051808303815f87803b158015612bc1575f80fd5b505af1925050508015612bd2575060015b612bdd575050612ec7565b5f4790505f808460a0015161ffff16856040015161ffff1684612c009190613682565b612c0a919061371e565b90505f8560a0015161ffff16866020015161ffff1685612c2a9190613682565b612c34919061371e565b90505f8660a0015161ffff16876060015161ffff1686612c549190613682565b612c5e919061371e565b90505f8760a0015161ffff16886080015161ffff1687612c7e9190613682565b612c88919061371e565b90505f8282612c97868861370b565b612ca1919061370b565b612cab919061370b565b612cb59088613699565b895190915061ffff1615612d1d57600b546040516001600160a01b039091169061d6d89083905f818181858888f193505050503d805f8114612d12576040519150601f19603f3d011682016040523d82523d5f602084013e612d17565b606091505b50909650505b604089015161ffff1615612d8557600e546040516001600160a01b039091169061d6d89087905f818181858888f193505050503d805f8114612d7a576040519150601f19603f3d011682016040523d82523d5f602084013e612d7f565b606091505b50909650505b602089015161ffff1615612ded57600c546040516001600160a01b039091169061d6d89086905f818181858888f193505050503d805f8114612de2576040519150601f19603f3d011682016040523d82523d5f602084013e612de7565b606091505b50909650505b606089015161ffff1615612e5557600d546040516001600160a01b039091169061d6d89085905f818181858888f193505050503d805f8114612e4a576040519150601f19603f3d011682016040523d82523d5f602084013e612e4f565b606091505b50909650505b608089015161ffff1615612ebd57600f546040516001600160a01b039091169061d6d89084905f818181858888f193505050503d805f8114612eb2576040519150601f19603f3d011682016040523d82523d5f602084013e612eb7565b606091505b50909650505b5050505050505050505b506010805460ff19169055565b5f808315612ee9575060075461ffff16612f13565b8215612f02575060075462010000900461ffff16612f13565b50600754640100000000900461ffff165b805f03612f235784915050610a92565b6015546201000090046001600160a01b031630148015612f4d57504660011480612f4d5750466038145b15612f5757506111945b5f612710612f658388613682565b612f6f919061371e565b90508015612fdb57305f9081526020819052604081208054839290612f9590849061370b565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6126898187613699565b601554610100900460ff16156130495760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ac4565b6130538282612897565b15801561306d5750600a546001600160a01b038281169116145b1561146a576001600160a01b038083165f908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556015805461ff0019166101001790819055620100009004166130e4576015805462010000600160b01b0319163062010000021790555b6010805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611a1e565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461114a575f80fd5b5f806040838503121561317e575f80fd5b823561318981613159565b946020939093013593505050565b5f602082840312156131a7575f80fd5b81356129a481613159565b5f805f606084860312156131c4575f80fd5b83356131cf81613159565b925060208401356131df81613159565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561322d5761322d6131f0565b604052919050565b5f67ffffffffffffffff82111561324e5761324e6131f0565b5060051b60200190565b5f82601f830112613267575f80fd5b813561327a61327582613235565b613204565b8082825260208201915060208360051b86010192508583111561329b575f80fd5b602085015b838110156132b85780358352602092830192016132a0565b5095945050505050565b5f80604083850312156132d3575f80fd5b823567ffffffffffffffff8111156132e9575f80fd5b8301601f810185136132f9575f80fd5b803561330761327582613235565b8082825260208201915060208360051b850101925087831115613328575f80fd5b6020840193505b8284101561335357833561334281613159565b82526020938401939091019061332f565b9450505050602083013567ffffffffffffffff811115613371575f80fd5b61337d85828601613258565b9150509250929050565b803561ffff81168114613398575f80fd5b919050565b5f805f606084860312156133af575f80fd5b6133b884613387565b92506133c660208501613387565b91506133d460408501613387565b90509250925092565b5f602082840312156133ed575f80fd5b5035919050565b801515811461114a575f80fd5b5f8060408385031215613412575f80fd5b823561341d81613159565b9150602083013561342d816133f4565b809150509250929050565b5f805f805f60a0868803121561344c575f80fd5b853561345781613159565b9450602086013561346781613159565b9350604086013561347781613159565b9250606086013561348781613159565b9150608086013561349781613159565b809150509295509295909350565b5f80604083850312156134b6575f80fd5b823561341d816133f4565b5f80604083850312156134d2575f80fd5b82356134dd81613159565b9150602083013561342d81613159565b5f805f805f60a08688031215613501575f80fd5b61350a86613387565b945061351860208701613387565b935061352660408701613387565b925061353460608701613387565b915061354260808701613387565b90509295509295909350565b5f805f8060808587031215613561575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156135cc578085048111156135b0576135b061357d565b60018416156135be57908102905b60019390931c928002613595565b935093915050565b5f826135e2575060016109ff565b816135ee57505f6109ff565b8160018114613604576002811461360e5761362a565b60019150506109ff565b60ff84111561361f5761361f61357d565b50506001821b6109ff565b5060208310610133831016604e8410600b841016171561364d575081810a6109ff565b6136595f198484613591565b805f190482111561366c5761366c61357d565b029392505050565b5f6129a460ff8416836135d4565b80820281158282048414176109ff576109ff61357d565b818103818111156109ff576109ff61357d565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f61ffff821661ffff81036137025761370261357d565b60010192915050565b808201808211156109ff576109ff61357d565b5f8261373857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b5f80604083850312156137ab575f80fd5b82516137b681613159565b602084015190925061342d81613159565b5f80604083850312156137d8575f80fd5b505080516020909101519092909150565b5f602082840312156137f9575f80fd5b5051919050565b5f60208284031215613810575f80fd5b81516129a4816133f4565b5f6020828403121561382b575f80fd5b81516129a481613159565b61ffff81811683821601908111156109ff576109ff61357d565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156138ee5783516001600160a01b03168352602093840193909201916001016138c7565b50506001600160a01b03959095166060840152505060800152939250505056fea26469706673582212206060d307674f637928a64709f121de333beb8b830ca6d3aa12baf627d7755cba64736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106102dc575f3560e01c80635a6f091811610189578063b1b08f71116100d8578063eafb5a3c11610092578063f94aa1b41161006d578063f94aa1b414610921578063fb78680d14610993578063fdb78c0e146109b2578063feadde9c146109d0575f80fd5b8063eafb5a3c146108cf578063ee5d9c2d146108ee578063f08f43a214610902575f80fd5b8063b1b08f71146104f1578063b3d514fb146104f1578063b7df8b36146107c9578063bfc2fc35146107e2578063cf84770614610801578063dd62ed3e1461088b575f80fd5b806382528791116101435780638a8c523c1161011e5780638a8c523c1461074857806395d89b411461075c578063a9059cbb1461078b578063ab558e4d146107aa575f80fd5b806382528791146106f8578063893d20e8146107175780638a63bd9b14610734575f80fd5b80635a6f09181461065e5780635c24b0741461067357806370a0823114610692578063715018a6146106b157806378648edf146106c557806380c581d1146106d9575f80fd5b80632b112e49116102455780634ada218b116101ff5780634fb2e45d116101da5780634fb2e45d146105cb5780634fbee193146105ea57806350a8e01614610621578063590ffdce1461063f575f80fd5b80634ada218b146105745780634bbb93eb1461058d5780634e718e48146105ac575f80fd5b80632b112e49146104dd5780632b28fc7a146104f15780632e8fa82114610506578063313ce5671461051b57806332cde66414610536578063452ed4f114610555575f80fd5b8063095ea7b311610296578063095ea7b31461041e5780630dcbcf1c1461043d57806318160ddd1461047457806323b872dd146104885780632610eaca146104a757806328577751146104c8575f80fd5b806303fd2a45146102e75780630445b66714610319578063069d955f1461033c57806306fdde03146103915780630758d924146103d157806307dd79e0146103f5575f80fd5b366102e357005b5f80fd5b3480156102f2575f80fd5b506102fc61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610324575f80fd5b5061032e60115481565b604051908152602001610310565b348015610347575f80fd5b5060075461036c9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610310565b34801561039c575f80fd5b5060408051808201909152600f81526e155b9c995add08141c9bdd1bd8dbdb608a1b60208201525b6040516103109190613124565b3480156103dc575f80fd5b506009546102fc9061010090046001600160a01b031681565b348015610400575f80fd5b5060095461040e9060ff1681565b6040519015158152602001610310565b348015610429575f80fd5b5061040e61043836600461316d565b6109ef565b348015610448575f80fd5b5061040e610457366004613197565b6001600160a01b03165f9081526005602052604090205460ff1690565b34801561047f575f80fd5b5061032e610a05565b348015610493575f80fd5b5061040e6104a23660046131b2565b610a25565b3480156104b2575f80fd5b506104c66104c13660046132c2565b610a9a565b005b3480156104d3575f80fd5b5061032e60145481565b3480156104e8575f80fd5b5061032e610c1e565b3480156104fc575f80fd5b5061032e6161a881565b348015610511575f80fd5b5061032e60125481565b348015610526575f80fd5b5060405160128152602001610310565b348015610541575f80fd5b506104c661055036600461339d565b610c61565b348015610560575f80fd5b50600a546102fc906001600160a01b031681565b34801561057f575f80fd5b5060155461040e9060ff1681565b348015610598575f80fd5b5061032e6105a73660046133dd565b610d8b565b3480156105b7575f80fd5b506104c66105c63660046133dd565b610dbc565b3480156105d6575f80fd5b506104c66105e5366004613197565b610e35565b3480156105f5575f80fd5b5061040e610604366004613197565b6001600160a01b03165f9081526006602052604090205460ff1690565b34801561062c575f80fd5b5060155461040e90610100900460ff1681565b34801561064a575f80fd5b506104c6610659366004613401565b610f5b565b348015610669575f80fd5b5061032e60165481565b34801561067e575f80fd5b506104c661068d366004613197565b610faf565b34801561069d575f80fd5b5061032e6106ac366004613197565b61114d565b3480156106bc575f80fd5b506104c6611167565b3480156106d0575f80fd5b506104c661125e565b3480156106e4575f80fd5b506104c66106f3366004613401565b611297565b348015610703575f80fd5b506104c6610712366004613438565b61146e565b348015610722575f80fd5b506017546001600160a01b03166102fc565b34801561073f575f80fd5b5061040e61159e565b348015610753575f80fd5b506104c66115ee565b348015610767575f80fd5b50604080518082019091526007815266091553949152d560ca1b60208201526103c4565b348015610796575f80fd5b5061040e6107a536600461316d565b611814565b3480156107b5575f80fd5b506104c66107c4366004613197565b61182a565b3480156107d4575f80fd5b5060135461040e9060ff1681565b3480156107ed575f80fd5b506104c66107fc3660046134a5565b6119a1565b34801561080c575f80fd5b5060085461084e9061ffff808216916201000081048216916401000000008204811691600160301b8104821691600160401b8204811691600160501b90041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c001610310565b348015610896575f80fd5b5061032e6108a53660046134c1565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156108da575f80fd5b506104c66108e9366004613197565b611a2a565b3480156108f9575f80fd5b506104c6611dee565b34801561090d575f80fd5b506104c661091c3660046134ed565b611ea6565b34801561092c575f80fd5b50600b54600c54600d54600e54600f54610959946001600160a01b03908116948116938116928116911685565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a001610310565b34801561099e575f80fd5b506104c66109ad36600461354e565b612005565b3480156109bd575f80fd5b5060105461040e90610100900460ff1681565b3480156109db575f80fd5b506104c66109ea366004613401565b612215565b5f6109fb338484612269565b5060015b92915050565b5f610a126012600a613674565b610a20906305f5e100613682565b905090565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610a87576001600160a01b0384165f90815260036020908152604080832033845290915281208054849290610a81908490613699565b90915550505b610a92848484612361565b949350505050565b6017546001600160a01b03163314610acd5760405162461bcd60e51b8152600401610ac4906136ac565b60405180910390fd5b8051825114610b165760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610ac4565b5f5b82518161ffff161015610c1957610b316012600a613674565b828261ffff1681518110610b4757610b476136d7565b6020026020010151610b599190613682565b610b623361114d565b1015610ba55760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610ac4565b610c0633848361ffff1681518110610bbf57610bbf6136d7565b60200260200101516012600a610bd59190613674565b858561ffff1681518110610beb57610beb6136d7565b6020026020010151610bfd9190613682565b5f806001612694565b5080610c11816136eb565b915050610b18565b505050565b5f610c285f61114d565b610c3361dead61114d565b610c3d919061370b565b610c496012600a613674565b610c57906305f5e100613682565b610a209190613699565b6017546001600160a01b03163314610c8b5760405162461bcd60e51b8152600401610ac4906136ac565b60095460ff1615610cd25760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610ac4565b6161a88361ffff1611158015610cee57506161a88261ffff1611155b8015610d0057506161a88161ffff1611155b610d4c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ac4565b6007805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b600a545f90612710908390610da8906001600160a01b031661114d565b610db29190613682565b6109ff919061371e565b6017546001600160a01b03163314610de65760405162461bcd60e51b8152600401610ac4906136ac565b6096811115610e305760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610ac4565b601455565b6017546001600160a01b03163314610e5f5760405162461bcd60e51b8152600401610ac4906136ac565b6001600160a01b038116610e855760405162461bcd60e51b8152600401610ac49061373d565b61deac196001600160a01b03821601610eb05760405162461bcd60e51b8152600401610ac49061373d565b601754610ec6906001600160a01b03165f610f5b565b610ed1816001610f5b565b6017545f90610ee8906001600160a01b031661114d565b1115610f0a57601754610f08906001600160a01b031682610bfd8261114d565b505b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6017546001600160a01b03163314610f855760405162461bcd60e51b8152600401610ac4906136ac565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b6017546001600160a01b03163314610fd95760405162461bcd60e51b8152600401610ac4906136ac565b60155460ff1615610fe8575f80fd5b306001600160a01b038216036110315760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610ac4565b6015805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301815f875af19250505080156110b6575060408051601f3d908101601f191682019092526110b39181019061379a565b60015b6110be575f80fd5b60098054610100600160a81b0319166101006001600160a01b038581168202929092178355600a80546001600160a01b0319168584169081179091555f908152600160208190526040909120805460ff19169091179055601754925461112c93831692919004165f19612269565b600954610c1990309061010090046001600160a01b03165f19612269565b50565b6001600160a01b03165f9081526020819052604090205490565b6017546001600160a01b031633146111915760405162461bcd60e51b8152600401610ac4906136ac565b60155460ff166111fb5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610ac4565b601754611211906001600160a01b03165f610f5b565b601780546001600160a01b031981169091556040516001600160a01b03909116905f9082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6017546001600160a01b031633146112885760405162461bcd60e51b8152600401610ac4906136ac565b6009805460ff19166001179055565b6017546001600160a01b031633146112c15760405162461bcd60e51b8152600401610ac4906136ac565b8061134b576001600160a01b038281165f81815260016020526040808220805460ff1916905560155490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d1906044015b5f604051808303815f87803b158015611331575f80fd5b505af1158015611343573d5f803e3d5ffd5b505050505050565b600254156113a4576203f480600254426113659190613699565b116113a45760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610ac4565b6001600160a01b0382165f9081526001602052604090205460ff161561140c5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610ac4565b6001600160a01b038281165f81815260016020819052604091829020805460ff1916821790554260025560155491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d19060440161131a565b5050565b6017546001600160a01b031633146114985760405162461bcd60e51b8152600401610ac4906136ac565b6001600160a01b038516158015906114b857506001600160a01b03841615155b80156114cc57506001600160a01b03831615155b80156114e057506001600160a01b03821615155b80156114f457506001600160a01b03811615155b6115405760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610ac4565b600b80546001600160a01b03199081166001600160a01b0397881617909155600c8054821694871694909417909355600e8054841694861694909417909355600d80548316918516919091179055600f805490911691909216179055565b6017545f906001600160a01b031633146115ca5760405162461bcd60e51b8152600401610ac4906136ac565b6009546115e890309061010090046001600160a01b03165f19612269565b50600190565b6017546001600160a01b031633146116185760405162461bcd60e51b8152600401610ac4906136ac565b60155460ff161561166b5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ac4565b601554610100900460ff166116c25760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ac4565b6015546201000090046001600160a01b03166116f2576015805462010000600160b01b0319163062010000021790555b601554600a54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c34906084015f604051808303815f87803b158015611761575f80fd5b505af1925050508015611772575060015b50601554600a546001600160a01b03620100009092048216916325a71cae9161179b911661114d565b6040518263ffffffff1660e01b81526004016117b991815260200190565b60408051808303815f875af19250505080156117f2575060408051601f3d908101601f191682019092526117ef918101906137c7565b60015b15611801576011919091556012555b6015805460ff1916600117905542601655565b5f611820338484612361565b5060019392505050565b6017546001600160a01b031633146118545760405162461bcd60e51b8152600401610ac4906136ac565b601554610100900460ff16156118bc57306001600160a01b038216036118bc5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610ac4565b6017546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611911573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061193591906137e9565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af115801561197d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c199190613800565b6017546001600160a01b031633146119cb5760405162461bcd60e51b8152600401610ac4906136ac565b6010805461ff001916610100841515908102919091179091556013805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6017546001600160a01b03163314611a545760405162461bcd60e51b8152600401610ac4906136ac565b601554610100900460ff1615611aac5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610ac4565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b11919061381b565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b80919061381b565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611bc9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bed919061381b565b600a546001600160a01b039081165f908152600160205260409020805460ff191690559091508116611d7b57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c79919061381b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ce8919061381b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611d32573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d56919061381b565b600a80546001600160a01b0319166001600160a01b0392909216919091179055611d97565b600a80546001600160a01b0319166001600160a01b0383161790555b60098054610100600160a81b0319166101006001600160a01b038581168202929092178355600a5482165f908152600160208190526040909120805460ff191690911790559154610c199230929104165f19612269565b6017546001600160a01b03163314611e185760405162461bcd60e51b8152600401610ac4906136ac565b601554610100900460ff1615611e705760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ac4565b6017546040516001600160a01b03909116904780156108fc02915f818181858888f1935050505015801561114a573d5f803e3d5ffd5b6017546001600160a01b03163314611ed05760405162461bcd60e51b8152600401610ac4906136ac565b6008805461ffff87811663ffffffff199092169190911762010000878316021767ffffffff000000001916600160301b8683160265ffff00000000191617640100000000858316021769ffff00000000000000001916600160401b91841691909102179055808385611f428589613836565b611f4c9190613836565b611f569190613836565b611f609190613836565b6008805461ffff60501b1916600160501b61ffff938416021790556007545f91611f939162010000810482169116613836565b60085461ffff9182169250600160501b9004168110156113435760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610ac4565b6017546001600160a01b0316331461202f5760405162461bcd60e51b8152600401610ac4906136ac565b828461203d6012600a613674565b61204b906305f5e100613682565b6120559190613682565b61205f919061371e565b60115580826120706012600a613674565b61207e906305f5e100613682565b6120889190613682565b612092919061371e565b601281905560115411156120f25760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610ac4565b600a546127109061210b906001600160a01b031661114d565b612116906096613682565b612120919061371e565b601254111561217d5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610ac4565b620f424061218d6012600a613674565b61219b906305f5e100613682565b6121a5919061371e565b60125410156121c65760405162461bcd60e51b8152600401610ac490613850565b620f42406121d66012600a613674565b6121e4906305f5e100613682565b6121ee919061371e565b601154101561220f5760405162461bcd60e51b8152600401610ac490613850565b50505050565b6017546001600160a01b0316331461223f5760405162461bcd60e51b8152600401610ac4906136ac565b6001600160a01b03919091165f908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166122b55760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ac4565b6001600160a01b0382166123015760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ac4565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166123c65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ac4565b6001600160a01b0383166124285760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ac4565b5f82116124895760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ac4565b6001600160a01b0384165f908152600160205260408120548190819060ff16156124b657600192506124e3565b6001600160a01b0386165f9081526001602052604090205460ff16156124df57600191506124e3565b5060015b6124ed8787612897565b156125ec5760155460ff166125ec57806125495760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ac4565b6001600160a01b0387165f9081526005602052604090205460ff1615801561258957506001600160a01b0386165f9081526005602052604090205460ff16155b156125ec5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610ac4565b811561267b5760105460ff1661267b57601054610100900460ff161561267b575f6126163061114d565b905060115481106126795760125460135460ff161561266357601454600a54612710919061264c906001600160a01b031661114d565b6126569190613682565b612660919061371e565b90505b80821061266e578091505b612677826129ab565b505b505b612689878787868686612694565b979650505050505050565b6001600160a01b0386165f9081526006602052604081205460019060ff16806126d457506001600160a01b0387165f9081526006602052604090205460ff165b156126dc57505f5b6001600160a01b0388165f9081526020819052604081208054889290612703908490613699565b909155505f9050816127155786612721565b61272189888888612ed4565b9050805f808a6001600160a01b03166001600160a01b031681526020019081526020015f205f828254612754919061370b565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127a091815260200190565b60405180910390a3601554610100900460ff16612888576127c18989612fe5565b601554610100900460ff161580156127de57506127de8989612897565b801561280257506001600160a01b0389165f9081526005602052604090205460ff16155b801561282657506001600160a01b0388165f9081526005602052604090205460ff16155b8015612830575083155b156128885760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610ac4565b50600198975050505050505050565b6017545f906001600160a01b038481169116148015906128c557506017546001600160a01b03838116911614155b80156128dc57506017546001600160a01b03163214155b801561290057506001600160a01b0382165f9081526004602052604090205460ff16155b801561292457506001600160a01b0383165f9081526004602052604090205460ff16155b801561293b57506001600160a01b03821661dead14155b801561294f57506001600160a01b03821615155b801561296457506001600160a01b0383163014155b801561298457506015546001600160a01b03848116620100009092041614155b80156129a457506015546001600160a01b03838116620100009092041614155b9392505050565b6010805460ff191660011790556040805160c08101825260085461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a082018190525f03612a245750612ec7565b305f90815260036020908152604080832060095461010090046001600160a01b031684529091529020545f1914612a8357305f90815260036020908152604080832060095461010090046001600160a01b0316845290915290205f1990555b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612ab657612ab66136d7565b60200260200101906001600160a01b031690816001600160a01b031681525050600960019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b4b919061381b565b81600181518110612b5e57612b5e6136d7565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b81526101009091049091169063791ac94790612baa9086905f9086903090429060040161389e565b5f604051808303815f87803b158015612bc1575f80fd5b505af1925050508015612bd2575060015b612bdd575050612ec7565b5f4790505f808460a0015161ffff16856040015161ffff1684612c009190613682565b612c0a919061371e565b90505f8560a0015161ffff16866020015161ffff1685612c2a9190613682565b612c34919061371e565b90505f8660a0015161ffff16876060015161ffff1686612c549190613682565b612c5e919061371e565b90505f8760a0015161ffff16886080015161ffff1687612c7e9190613682565b612c88919061371e565b90505f8282612c97868861370b565b612ca1919061370b565b612cab919061370b565b612cb59088613699565b895190915061ffff1615612d1d57600b546040516001600160a01b039091169061d6d89083905f818181858888f193505050503d805f8114612d12576040519150601f19603f3d011682016040523d82523d5f602084013e612d17565b606091505b50909650505b604089015161ffff1615612d8557600e546040516001600160a01b039091169061d6d89087905f818181858888f193505050503d805f8114612d7a576040519150601f19603f3d011682016040523d82523d5f602084013e612d7f565b606091505b50909650505b602089015161ffff1615612ded57600c546040516001600160a01b039091169061d6d89086905f818181858888f193505050503d805f8114612de2576040519150601f19603f3d011682016040523d82523d5f602084013e612de7565b606091505b50909650505b606089015161ffff1615612e5557600d546040516001600160a01b039091169061d6d89085905f818181858888f193505050503d805f8114612e4a576040519150601f19603f3d011682016040523d82523d5f602084013e612e4f565b606091505b50909650505b608089015161ffff1615612ebd57600f546040516001600160a01b039091169061d6d89084905f818181858888f193505050503d805f8114612eb2576040519150601f19603f3d011682016040523d82523d5f602084013e612eb7565b606091505b50909650505b5050505050505050505b506010805460ff19169055565b5f808315612ee9575060075461ffff16612f13565b8215612f02575060075462010000900461ffff16612f13565b50600754640100000000900461ffff165b805f03612f235784915050610a92565b6015546201000090046001600160a01b031630148015612f4d57504660011480612f4d5750466038145b15612f5757506111945b5f612710612f658388613682565b612f6f919061371e565b90508015612fdb57305f9081526020819052604081208054839290612f9590849061370b565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6126898187613699565b601554610100900460ff16156130495760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ac4565b6130538282612897565b15801561306d5750600a546001600160a01b038281169116145b1561146a576001600160a01b038083165f908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556015805461ff0019166101001790819055620100009004166130e4576015805462010000600160b01b0319163062010000021790555b6010805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611a1e565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461114a575f80fd5b5f806040838503121561317e575f80fd5b823561318981613159565b946020939093013593505050565b5f602082840312156131a7575f80fd5b81356129a481613159565b5f805f606084860312156131c4575f80fd5b83356131cf81613159565b925060208401356131df81613159565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561322d5761322d6131f0565b604052919050565b5f67ffffffffffffffff82111561324e5761324e6131f0565b5060051b60200190565b5f82601f830112613267575f80fd5b813561327a61327582613235565b613204565b8082825260208201915060208360051b86010192508583111561329b575f80fd5b602085015b838110156132b85780358352602092830192016132a0565b5095945050505050565b5f80604083850312156132d3575f80fd5b823567ffffffffffffffff8111156132e9575f80fd5b8301601f810185136132f9575f80fd5b803561330761327582613235565b8082825260208201915060208360051b850101925087831115613328575f80fd5b6020840193505b8284101561335357833561334281613159565b82526020938401939091019061332f565b9450505050602083013567ffffffffffffffff811115613371575f80fd5b61337d85828601613258565b9150509250929050565b803561ffff81168114613398575f80fd5b919050565b5f805f606084860312156133af575f80fd5b6133b884613387565b92506133c660208501613387565b91506133d460408501613387565b90509250925092565b5f602082840312156133ed575f80fd5b5035919050565b801515811461114a575f80fd5b5f8060408385031215613412575f80fd5b823561341d81613159565b9150602083013561342d816133f4565b809150509250929050565b5f805f805f60a0868803121561344c575f80fd5b853561345781613159565b9450602086013561346781613159565b9350604086013561347781613159565b9250606086013561348781613159565b9150608086013561349781613159565b809150509295509295909350565b5f80604083850312156134b6575f80fd5b823561341d816133f4565b5f80604083850312156134d2575f80fd5b82356134dd81613159565b9150602083013561342d81613159565b5f805f805f60a08688031215613501575f80fd5b61350a86613387565b945061351860208701613387565b935061352660408701613387565b925061353460608701613387565b915061354260808701613387565b90509295509295909350565b5f805f8060808587031215613561575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156135cc578085048111156135b0576135b061357d565b60018416156135be57908102905b60019390931c928002613595565b935093915050565b5f826135e2575060016109ff565b816135ee57505f6109ff565b8160018114613604576002811461360e5761362a565b60019150506109ff565b60ff84111561361f5761361f61357d565b50506001821b6109ff565b5060208310610133831016604e8410600b841016171561364d575081810a6109ff565b6136595f198484613591565b805f190482111561366c5761366c61357d565b029392505050565b5f6129a460ff8416836135d4565b80820281158282048414176109ff576109ff61357d565b818103818111156109ff576109ff61357d565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f61ffff821661ffff81036137025761370261357d565b60010192915050565b808201808211156109ff576109ff61357d565b5f8261373857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b5f80604083850312156137ab575f80fd5b82516137b681613159565b602084015190925061342d81613159565b5f80604083850312156137d8575f80fd5b505080516020909101519092909150565b5f602082840312156137f9575f80fd5b5051919050565b5f60208284031215613810575f80fd5b81516129a4816133f4565b5f6020828403121561382b575f80fd5b81516129a481613159565b61ffff81811683821601908111156109ff576109ff61357d565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156138ee5783516001600160a01b03168352602093840193909201916001016138c7565b50506001600160a01b03959095166060840152505060800152939250505056fea26469706673582212206060d307674f637928a64709f121de333beb8b830ca6d3aa12baf627d7755cba64736f6c634300081a0033

Deployed Bytecode Sourcemap

3889:21329:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5502:73;;;;;;;;;;;;5533:42;5502:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5502:73:0;;;;;;;;6281:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;6281:28:0;222:177:1;4902:107:0;;;;;;;;;;-1:-1:-1;4902:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;630:6:1;618:19;;;600:38;;674:19;;;669:2;654:18;;647:47;730:19;;710:18;;;703:47;;;;588:2;573:18;4902:107:0;404:352:1;9846:80:0;;;;;;;;;;-1:-1:-1;9918:5:0;;;;;;;;;;;;-1:-1:-1;;;9918:5:0;;;;9846:80;;;;;;;:::i;5441:26::-;;;;;;;;;;-1:-1:-1;5441:26:0;;;;;;;-1:-1:-1;;;;;5441:26:0;;;5408;;;;;;;;;;-1:-1:-1;5408:26:0;;;;;;;;;;;1574:14:1;;1567:22;1549:41;;1537:2;1522:18;5408:26:0;1409:187:1;10454:161:0;;;;;;;;;;-1:-1:-1;10454:161:0;;;;;:::i;:::-;;:::i;13540:140::-;;;;;;;;;;-1:-1:-1;13540:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;13638:34:0;13614:4;13638:34;;;:25;:34;;;;;;;;;13540:140;9581:83;;;;;;;;;;;;;:::i;11124:306::-;;;;;;;;;;-1:-1:-1;11124:306:0;;;;;:::i;:::-;;:::i;23131:447::-;;;;;;;;;;-1:-1:-1;23131:447:0;;;;;:::i;:::-;;:::i;:::-;;6389:33;;;;;;;;;;;;;;;;13844:141;;;;;;;;;;;;;:::i;5202:43::-;;;;;;;;;;;;5240:5;5202:43;;6316:25;;;;;;;;;;;;;;;;9670:80;;;;;;;;;;-1:-1:-1;9670:80:0;;4526:2;5564:36:1;;5552:2;5537:18;9670:80:0;5422:184:1;14183:453:0;;;;;;;;;;-1:-1:-1;14183:453:0;;;;;:::i;:::-;;:::i;5474:21::-;;;;;;;;;;-1:-1:-1;5474:21:0;;;;-1:-1:-1;;;;;5474:21:0;;;6429:34;;;;;;;;;;-1:-1:-1;6429:34:0;;;;;;;;15821:189;;;;;;;;;;-1:-1:-1;15821:189:0;;;;;:::i;:::-;;:::i;16725:217::-;;;;;;;;;;-1:-1:-1;16725:217:0;;;;;:::i;:::-;;:::i;8219:654::-;;;;;;;;;;-1:-1:-1;8219:654:0;;;;;:::i;:::-;;:::i;13263:127::-;;;;;;;;;;-1:-1:-1;13263:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;13354:28:0;13330:4;13354:28;;;:19;:28;;;;;;;;;13263:127;6470:36;;;;;;;;;;-1:-1:-1;6470:36:0;;;;;;;;;;;13398:134;;;;;;;;;;-1:-1:-1;13398:134:0;;;;;:::i;:::-;;:::i;6543:26::-;;;;;;;;;;;;;;;;12698:557;;;;;;;;;;-1:-1:-1;12698:557:0;;;;;:::i;:::-;;:::i;10156:117::-;;;;;;;;;;-1:-1:-1;10156:117:0;;;;;:::i;:::-;;:::i;8881:310::-;;;;;;;;;;;;;:::i;13993:182::-;;;;;;;;;;;;;:::i;12126:564::-;;;;;;;;;;-1:-1:-1;12126:564:0;;;;;:::i;:::-;;:::i;15208:605::-;;;;;;;;;;-1:-1:-1;15208:605:0;;;;;:::i;:::-;;:::i;9932:79::-;;;;;;;;;;-1:-1:-1;10002:6:0;;-1:-1:-1;;;;;10002:6:0;9932:79;;10941:175;;;;;;;;;;;;;:::i;21934:695::-;;;;;;;;;;;;;:::i;9756:84::-;;;;;;;;;;-1:-1:-1;9830:7:0;;;;;;;;;;;;-1:-1:-1;;;9830:7:0;;;;9756:84;;10281:165;;;;;;;;;;-1:-1:-1;10281:165:0;;;;;:::i;:::-;;:::i;22827:296::-;;;;;;;;;;-1:-1:-1;22827:296:0;;;;;:::i;:::-;;:::i;6348:34::-;;;;;;;;;;-1:-1:-1;6348:34:0;;;;;;;;16950:263;;;;;;;;;;-1:-1:-1;16950:263:0;;;;;:::i;:::-;;:::i;5018:175::-;;;;;;;;;;-1:-1:-1;5018:175:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5018:175:0;;;;;-1:-1:-1;;;5018:175:0;;;;;-1:-1:-1;;;5018:175:0;;;;;;;;;8393:6:1;8381:19;;;8363:38;;8437:19;;;8432:2;8417:18;;8410:47;8493:19;;;8473:18;;;8466:47;;;;8549:19;;;8544:2;8529:18;;8522:47;8606:19;;8600:3;8585:19;;8578:48;8663:19;;;8657:3;8642:19;;8635:48;8350:3;8335:19;5018:175:0;8088:601:1;10017:133:0;;;;;;;;;;-1:-1:-1;10017:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10119:19:0;;;10101:7;10119:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10017:133;11438:680;;;;;;;;;;-1:-1:-1;11438:680:0;;;;;:::i;:::-;;:::i;22637:182::-;;;;;;;;;;;;;:::i;14644:556::-;;;;;;;;;;-1:-1:-1;14644:556:0;;;;;:::i;:::-;;:::i;5793:411::-;;;;;;;;;;-1:-1:-1;5793:411:0;;;;;;;;;;;;-1:-1:-1;;;;;5793:411:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9923:32:1;;;9905:51;;9992:32;;;9987:2;9972:18;;9965:60;10061:32;;;10041:18;;;10034:60;;;;10130:32;;10125:2;10110:18;;10103:60;10200:32;;;10194:3;10179:19;;10172:61;9892:3;9877:19;5793:411:0;9566:673:1;16018:699:0;;;;;;;;;;-1:-1:-1;16018:699:0;;;;;:::i;:::-;;:::i;6235:39::-;;;;;;;;;;-1:-1:-1;6235:39:0;;;;;;;;;;;13688:148;;;;;;;;;;-1:-1:-1;13688:148:0;;;;;:::i;:::-;;:::i;10454:161::-;10531:4;10548:37;10557:10;10569:7;10578:6;10548:8;:37::i;:::-;-1:-1:-1;10603:4:0;10454:161;;;;;:::o;9581:83::-;9636:7;4587:13;4526:2;4587;:13;:::i;:::-;4570:30;;4367:11;4570:30;:::i;:::-;9647:14;;9581:83;:::o;11124:306::-;-1:-1:-1;;;;;11245:19:0;;11224:4;11245:19;;;:11;:19;;;;;;;;11265:10;11245:31;;;;;;;;-1:-1:-1;;11245:52:0;11241:126;;-1:-1:-1;;;;;11314:19:0;;;;;;:11;:19;;;;;;;;11334:10;11314:31;;;;;;;:41;;11349:6;;11314:19;:41;;11349:6;;11314:41;:::i;:::-;;;;-1:-1:-1;;11241:126:0;11386:36;11396:6;11404:9;11415:6;11386:9;:36::i;:::-;11379:43;11124:306;-1:-1:-1;;;;11124:306:0:o;23131:447::-;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;;;;;;;;;23266:7:::1;:14;23247:8;:15;:33;23239:67;;;::::0;-1:-1:-1;;;23239:67:0;;13254:2:1;23239:67:0::1;::::0;::::1;13236:21:1::0;13293:2;13273:18;;;13266:30;-1:-1:-1;;;13312:18:1;;;13305:51;13373:18;;23239:67:0::1;13052:345:1::0;23239:67:0::1;23322:8;23317:254;23340:8;:15;23336:1;:19;;;23317:254;;;23421:13;4526:2;23421;:13;:::i;:::-;23410:7;23418:1;23410:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23385:21;23395:10;23385:9;:21::i;:::-;:49;;23377:80;;;::::0;-1:-1:-1;;;23377:80:0;;13736:2:1;23377:80:0::1;::::0;::::1;13718:21:1::0;13775:2;13755:18;;;13748:30;-1:-1:-1;;;13794:18:1;;;13787:48;13852:18;;23377:80:0::1;13534:342:1::0;23377:80:0::1;23472:87;23489:10;23501:8;23510:1;23501:11;;;;;;;;;;:::i;:::-;;;;;;;4526:2;23525;:13;;;;:::i;:::-;23514:7;23522:1;23514:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23540:5;23547::::0;23554:4:::1;23472:16;:87::i;:::-;-1:-1:-1::0;23357:3:0;::::1;::::0;::::1;:::i;:::-;;;;23317:254;;;;23131:447:::0;;:::o;13844:141::-;13897:7;13954:21;13972:1;13954:9;:21::i;:::-;13936:15;5533:42;13936:9;:15::i;:::-;:39;;;;:::i;:::-;4587:13;4526:2;4587;:13;:::i;:::-;4570:30;;4367:11;4570:30;:::i;:::-;13925:51;;;;:::i;14183:453::-;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;14291:14:::1;::::0;::::1;;14290:15;14282:45;;;::::0;-1:-1:-1;;;14282:45:0;;14398:2:1;14282:45:0::1;::::0;::::1;14380:21:1::0;14437:2;14417:18;;;14410:30;-1:-1:-1;;;14456:18:1;;;14449:47;14513:18;;14282:45:0::1;14196:341:1::0;14282:45:0::1;5240:5;14346:6;:21;;;;:65;;;;;5291:5;14388:7;:23;;;;14346:65;:117;;;;;5346:5;14432:11;:31;;;;14346:117;14338:170;;;::::0;-1:-1:-1;;;14338:170:0;;14744:2:1;14338:170:0::1;::::0;::::1;14726:21:1::0;14783:2;14763:18;;;14756:30;14822:25;14802:18;;;14795:53;14865:18;;14338:170:0::1;14542:347:1::0;14338:170:0::1;14519:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;14555:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;14593:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;14183:453::o;15821:189::-;15950:6;;15912:7;;5394:5;;15960:21;;15940:17;;-1:-1:-1;;;;;15950:6:0;15940:9;:17::i;:::-;:41;;;;:::i;:::-;15939:62;;;;:::i;16725:217::-;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;16855:3:::1;16829:22;:29;;16821:64;;;::::0;-1:-1:-1;;;16821:64:0;;15318:2:1;16821:64:0::1;::::0;::::1;15300:21:1::0;15357:2;15337:18;;;15330:30;-1:-1:-1;;;15376:18:1;;;15369:52;15438:18;;16821:64:0::1;15116:346:1::0;16821:64:0::1;16896:13;:38:::0;16725:217::o;8219:654::-;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8298:22:0;::::1;8290:96;;;;-1:-1:-1::0;;;8290:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;8405:16:0;::::1;::::0;8397:90:::1;;;;-1:-1:-1::0;;;8397:90:0::1;;;;;;;:::i;:::-;8518:6;::::0;8498:34:::1;::::0;-1:-1:-1;;;;;8518:6:0::1;;8498:19;:34::i;:::-;8543:35;8563:8;8573:4;8543:19;:35::i;:::-;8613:6;::::0;8623:1:::1;::::0;8603:17:::1;::::0;-1:-1:-1;;;;;8613:6:0::1;8603:9;:17::i;:::-;:21;8599:127;;;8658:6;::::0;8641:73:::1;::::0;-1:-1:-1;;;;;8658:6:0::1;8666:8:::0;8676:17:::1;8658:6:::0;8676:9:::1;:17::i;8641:73::-;;8599:127;8765:6;::::0;;-1:-1:-1;;;;;8782:17:0;;::::1;-1:-1:-1::0;;;;;;8782:17:0;::::1;::::0;::::1;::::0;;;8815:40:::1;::::0;8765:6;::::1;::::0;8782:17;8765:6;;8815:40:::1;::::0;8746:16:::1;::::0;8815:40:::1;8279:594;8219:654:::0;:::o;13398:134::-;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13486:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13486:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13398:134::o;12698:557::-;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;12773:14:::1;::::0;::::1;;12772:15;12764:24;;;::::0;::::1;;12823:4;-1:-1:-1::0;;;;;12807:21:0;::::1;::::0;12799:48:::1;;;::::0;-1:-1:-1;;;12799:48:0;;16099:2:1;12799:48:0::1;::::0;::::1;16081:21:1::0;16138:2;16118:18;;;16111:30;-1:-1:-1;;;16157:18:1;;;16150:44;16211:18;;12799:48:0::1;15897:338:1::0;12799:48:0::1;12858:11;:31:::0;;-1:-1:-1;;;;;;12858:31:0::1;::::0;-1:-1:-1;;;;;12858:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12904:23:::1;::::0;;-1:-1:-1;;;12904:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;12904:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;12904:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;12904:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;12900:348;;13237:8;::::0;::::1;12900:348;12991:9;:29:::0;;-1:-1:-1;;;;;;12991:29:0::1;;-1:-1:-1::0;;;;;12991:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;13022:6:::1;:22:::0;;-1:-1:-1;;;;;;13022:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13046:15:0;;;-1:-1:-1;13046:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;13046:22:0::1;::::0;;::::1;::::0;;13093:6:::1;::::0;13109:9;;13084:55:::1;::::0;13093:6;::::1;::::0;13109:9;;::::1;;-1:-1:-1::0;;13084:8:0::1;:55::i;:::-;13186:9;::::0;13154:62:::1;::::0;13171:4:::1;::::0;13186:9:::1;::::0;::::1;-1:-1:-1::0;;;;;13186:9:0::1;-1:-1:-1::0;;13154:8:0::1;:62::i;12900:348::-;12698:557:::0;:::o;10156:117::-;-1:-1:-1;;;;;10249:16:0;10222:7;10249:16;;;;;;;;;;;;10156:117::o;8881:310::-;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;8948:14:::1;::::0;::::1;;8940:74;;;::::0;-1:-1:-1;;;8940:74:0;;16832:2:1;8940:74:0::1;::::0;::::1;16814:21:1::0;16871:2;16851:18;;;16844:30;16910:34;16890:18;;;16883:62;-1:-1:-1;;;16961:18:1;;;16954:45;17016:19;;8940:74:0::1;16630:411:1::0;8940:74:0::1;9045:6;::::0;9025:34:::1;::::0;-1:-1:-1;;;;;9045:6:0::1;;9025:19;:34::i;:::-;9089:6;::::0;;-1:-1:-1;;;;;;9106:19:0;::::1;::::0;;;9141:42:::1;::::0;-1:-1:-1;;;;;9089:6:0;;::::1;::::0;9070:16:::1;::::0;9089:6;;9141:42:::1;::::0;9070:16;;9141:42:::1;8929:262;8881:310::o:0;13993:182::-;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;14146:14:::1;:21:::0;;-1:-1:-1;;14146:21:0::1;14163:4;14146:21;::::0;;13993:182::o;12126:564::-;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;12208:7:::1;12203:480;;-1:-1:-1::0;;;;;12232:13:0;;::::1;12248:5;12232:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12232:21:0::1;::::0;;12268:11:::1;::::0;:34;;-1:-1:-1;;;12268:34:0;;::::1;::::0;::::1;17214:51:1::0;;;;17281:18;;;17274:50;;;;12268:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;17187:18:1;;12268:34:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12126:564:::0;;:::o;12203:480::-:1;12339:17;::::0;:22;12335:135:::1;;12428:6;12408:17;;12390:15;:35;;;;:::i;:::-;:44;12382:72;;;::::0;-1:-1:-1;;;12382:72:0;;17537:2:1;12382:72:0::1;::::0;::::1;17519:21:1::0;17576:2;17556:18;;;17549:30;-1:-1:-1;;;17595:18:1;;;17588:45;17650:18;;12382:72:0::1;17335:339:1::0;12382:72:0::1;-1:-1:-1::0;;;;;12493:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;12492:14;12484:54;;;::::0;-1:-1:-1;;;12484:54:0;;17881:2:1;12484:54:0::1;::::0;::::1;17863:21:1::0;17920:2;17900:18;;;17893:30;17959:29;17939:18;;;17932:57;18006:18;;12484:54:0::1;17679:351:1::0;12484:54:0::1;-1:-1:-1::0;;;;;12553:13:0;;::::1;;::::0;;;12569:4:::1;12553:13;::::0;;;;;;;;:20;;-1:-1:-1;;12553:20:0::1;::::0;::::1;::::0;;12608:15:::1;12588:17;:35:::0;12638:11:::1;::::0;:33;;-1:-1:-1;;;12638:33:0;;::::1;::::0;::::1;17214:51:1::0;;;;17281:18;;;17274:50;12638:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;17187:18:1;;12638:33:0::1;17046:284:1::0;12203:480:0::1;12126:564:::0;;:::o;15208:605::-;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15396:23:0;::::1;::::0;;::::1;::::0;:49:::1;;-1:-1:-1::0;;;;;;15423:22:0;::::1;::::0;::::1;15396:49;:78;;;;-1:-1:-1::0;;;;;;15449:25:0;::::1;::::0;::::1;15396:78;:100;;;;-1:-1:-1::0;;;;;;15478:18:0;::::1;::::0;::::1;15396:100;:126;;;;-1:-1:-1::0;;;;;;15500:22:0;::::1;::::0;::::1;15396:126;15388:162;;;::::0;-1:-1:-1;;;15388:162:0;;18237:2:1;15388:162:0::1;::::0;::::1;18219:21:1::0;18276:2;18256:18;;;18249:30;18315:25;18295:18;;;18288:53;18358:18;;15388:162:0::1;18035:347:1::0;15388:162:0::1;15561:11;:42:::0;;-1:-1:-1;;;;;;15561:42:0;;::::1;-1:-1:-1::0;;;;;15561:42:0;;::::1;;::::0;;;15614:23;:46;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;15671:20;:40;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;15722:16;:32;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;15765:20;:40;;;;::::1;::::0;;;::::1;;::::0;;15208:605::o;10941:175::-;8073:6;;11007:4;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;11056:9:::1;::::0;11024:62:::1;::::0;11041:4:::1;::::0;11056:9:::1;::::0;::::1;-1:-1:-1::0;;;;;11056:9:0::1;-1:-1:-1::0;;11024:8:0::1;:62::i;:::-;-1:-1:-1::0;11104:4:0::1;10941:175:::0;:::o;21934:695::-;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;21996:14:::1;::::0;::::1;;21995:15;21987:52;;;::::0;-1:-1:-1;;;21987:52:0;;18589:2:1;21987:52:0::1;::::0;::::1;18571:21:1::0;18628:2;18608:18;;;18601:30;18667:26;18647:18;;;18640:54;18711:18;;21987:52:0::1;18387:348:1::0;21987:52:0::1;22058:16;::::0;::::1;::::0;::::1;;;22050:53;;;::::0;-1:-1:-1;;;22050:53:0;;18942:2:1;22050:53:0::1;::::0;::::1;18924:21:1::0;18981:2;18961:18;;;18954:30;19020:26;19000:18;;;18993:54;19064:18;;22050:53:0::1;18740:348:1::0;22050:53:0::1;22126:11;::::0;;;::::1;-1:-1:-1::0;;;;;22126:11:0::1;22114:106;;22168:11;:40:::0;;-1:-1:-1;;;;;;22168:40:0::1;22202:4;22168:40:::0;::::1;;::::0;;22114:106:::1;22234:11;::::0;22256:6:::1;::::0;22234:87:::1;::::0;-1:-1:-1;;;22234:87:0;;-1:-1:-1;;;;;22256:6:0;;::::1;22234:87;::::0;::::1;19316:51:1::0;19415:10;22271:12:0::1;19403:23:1::0;19383:18;;;19376:51;19475:18;22293:15:0::1;19463:31:1::0;19443:18;;;19436:59;4526:2:0::1;19511:18:1::0;;;19504:45;22234:11:0;;;::::1;;::::0;:21:::1;::::0;19288:19:1;;22234:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;22230:103:::0;22347:11:::1;::::0;22378:6:::1;::::0;-1:-1:-1;;;;;22347:11:0;;;::::1;::::0;::::1;::::0;:20:::1;::::0;22368:17:::1;::::0;22378:6:::1;22368:9;:17::i;:::-;22347:39;;;;;;;;;;;;;368:25:1::0;;356:2;341:18;;222:177;22347:39:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;22347:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;22347:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;22343:207:::0;::::1;;22458:13;:29:::0;;;;22502:10:::1;:27:::0;22343:207:::1;22560:14;:21:::0;;-1:-1:-1;;22560:21:0::1;22577:4;22560:21;::::0;;22606:15:::1;22592:11;:29:::0;21934:695::o;10281:165::-;10359:4;10376:40;10386:10;10398:9;10409:6;10376:9;:40::i;:::-;-1:-1:-1;10434:4:0;;10281:165;-1:-1:-1;;;10281:165:0:o;22827:296::-;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;22905:16:::1;::::0;::::1;::::0;::::1;;;22901:111;;;22963:4;-1:-1:-1::0;;;;;22946:22:0;::::1;::::0;22938:62:::1;;;::::0;-1:-1:-1;;;22938:62:0;;20110:2:1;22938:62:0::1;::::0;::::1;20092:21:1::0;20149:2;20129:18;;;20122:30;20188:29;20168:18;;;20161:57;20235:18;;22938:62:0::1;19908:351:1::0;22938:62:0::1;23076:6;::::0;23084:30:::1;::::0;-1:-1:-1;;;23084:30:0;;23108:4:::1;23084:30;::::0;::::1;160:51:1::0;23044:5:0;;-1:-1:-1;;;;;23061:14:0;;::::1;::::0;::::1;::::0;23076:6;;;::::1;::::0;23061:14;;23084:15:::1;::::0;133:18:1;;23084:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23061:54;::::0;-1:-1:-1;;;;;;23061:54:0::1;::::0;;;;;;-1:-1:-1;;;;;20691:32:1;;;23061:54:0::1;::::0;::::1;20673:51:1::0;20740:18;;;20733:34;20646:18;;23061:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16950:263::-:0;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;17059:19:::1;:33:::0;;-1:-1:-1;;17059:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;17103:22:::1;:47:::0;;-1:-1:-1;;17103:47:0::1;::::0;::::1;;;::::0;;17166:39:::1;::::0;1549:41:1;;;17166:39:0::1;::::0;1537:2:1;1522:18;17166:39:0::1;;;;;;;;16950:263:::0;;:::o;11438:680::-;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;11518:16:::1;::::0;::::1;::::0;::::1;;;11517:17;11509:60;;;::::0;-1:-1:-1;;;11509:60:0;;21230:2:1;11509:60:0::1;::::0;::::1;21212:21:1::0;21269:2;21249:18;;;21242:30;21308:32;21288:18;;;21281:60;21358:18;;11509:60:0::1;21028:354:1::0;11509:60:0::1;11580:20;11613:9;11580:43;;11634:16;11664:10;-1:-1:-1::0;;;;;11664:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11653:40:0::1;;11702:4;11709:10;-1:-1:-1::0;;;;;11709:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11653:74;::::0;-1:-1:-1;;;;;;11653:74:0::1;::::0;;;;;;-1:-1:-1;;;;;21835:32:1;;;11653:74:0::1;::::0;::::1;21817:51:1::0;21904:32;;21884:18;;;21877:60;21790:18;;11653:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11746:6;::::0;-1:-1:-1;;;;;11746:6:0;;::::1;11756:5;11738:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;11738:23:0::1;::::0;;11634:93;;-1:-1:-1;11776:22:0;::::1;11772:200;;11835:10;-1:-1:-1::0;;;;;11835:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11824:43:0::1;;11876:4;11883:10;-1:-1:-1::0;;;;;11883:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11824:77;::::0;-1:-1:-1;;;;;;11824:77:0::1;::::0;;;;;;-1:-1:-1;;;;;21835:32:1;;;11824:77:0::1;::::0;::::1;21817:51:1::0;21904:32;;21884:18;;;21877:60;21790:18;;11824:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11815:6;:86:::0;;-1:-1:-1;;;;;;11815:86:0::1;-1:-1:-1::0;;;;;11815:86:0;;;::::1;::::0;;;::::1;::::0;;11772:200:::1;;;11943:6;:17:::0;;-1:-1:-1;;;;;;11943:17:0::1;-1:-1:-1::0;;;;;11943:17:0;::::1;;::::0;;11772:200:::1;11982:9;:22:::0;;-1:-1:-1;;;;;;11982:22:0::1;;-1:-1:-1::0;;;;;11982:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12023:6:::1;::::0;;::::1;-1:-1:-1::0;12015:15:0;;;-1:-1:-1;12015:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12015:22:0::1;::::0;;::::1;::::0;;12080:9;;12048:62:::1;::::0;12065:4:::1;::::0;12080:9;::::1;;-1:-1:-1::0;;12048:8:0::1;:62::i;22637:182::-:0;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;22704:16:::1;::::0;::::1;::::0;::::1;;;22703:17;22695:58;;;::::0;-1:-1:-1;;;22695:58:0;;22150:2:1;22695:58:0::1;::::0;::::1;22132:21:1::0;22189:2;22169:18;;;22162:30;22228;22208:18;;;22201:58;22276:18;;22695:58:0::1;21948:352:1::0;22695:58:0::1;22772:6;::::0;22764:47:::1;::::0;-1:-1:-1;;;;;22772:6:0;;::::1;::::0;22789:21:::1;22764:47:::0;::::1;;;::::0;22772:6:::1;22764:47:::0;22772:6;22764:47;22789:21;22772:6;22764:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;14644:556:::0;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;14778:7:::1;:29:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;14818:33:0;;;;;;;;;;::::1;;;-1:-1:-1::0;;14892:27:0;-1:-1:-1;;;14862:19:0;;::::1;;-1:-1:-1::0;;14892:27:0;;;;;::::1;;;-1:-1:-1::0;;14930:27:0::1;-1:-1:-1::0;;;14930:27:0;;::::1;::::0;;;::::1;;::::0;;;14862:19;14818:33;14988:20:::1;14892:27:::0;14778:29;14988:20:::1;:::i;:::-;:34;;;;:::i;:::-;:41;;;;:::i;:::-;:52;;;;:::i;:::-;14968:7;:72:::0;;-1:-1:-1;;;;14968:72:0::1;-1:-1:-1::0;;;14968:72:0::1;::::0;;::::1;;;::::0;;15086:9:::1;:17:::0;-1:-1:-1;;15067:36:0::1;::::0;15086:17;;::::1;::::0;::::1;::::0;15067:16:::1;:36;:::i;:::-;15122:7;:17:::0;15051:52:::1;::::0;;::::1;::::0;-1:-1:-1;;;;15122:17:0;::::1;;:26:::0;-1:-1:-1;15122:26:0::1;15114:78;;;::::0;-1:-1:-1;;;15114:78:0;;22667:2:1;15114:78:0::1;::::0;::::1;22649:21:1::0;22706:2;22686:18;;;22679:30;22745:34;22725:18;;;22718:62;-1:-1:-1;;;22796:18:1;;;22789:37;22843:19;;15114:78:0::1;22465:403:1::0;16018:699:0;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;16218:16;16198;4587:13:::1;4526:2;4587;:13;:::i;:::-;4570:30;::::0;4367:11:::1;4570:30;:::i;:::-;16188:26;;;;:::i;:::-;16187:47;;;;:::i;:::-;16171:13;:63:::0;16286:13;16269;4587::::1;4526:2;4587;:13;:::i;:::-;4570:30;::::0;4367:11:::1;4570:30;:::i;:::-;16259:23;;;;:::i;:::-;16258:41;;;;:::i;:::-;16245:10;:54:::0;;;16318:13:::1;::::0;:27:::1;;16310:73;;;::::0;-1:-1:-1;;;16310:73:0;;23075:2:1;16310:73:0::1;::::0;::::1;23057:21:1::0;23114:2;23094:18;;;23087:30;23153:34;23133:18;;;23126:62;-1:-1:-1;;;23204:18:1;;;23197:31;23245:19;;16310:73:0::1;22873:397:1::0;16310:73:0::1;16427:6;::::0;5394:5:::1;::::0;16417:17:::1;::::0;-1:-1:-1;;;;;16427:6:0::1;16417:9;:17::i;:::-;:23;::::0;16437:3:::1;16417:23;:::i;:::-;16416:44;;;;:::i;:::-;16402:10;;:58;;16394:106;;;::::0;-1:-1:-1;;;16394:106:0;;23477:2:1;16394:106:0::1;::::0;::::1;23459:21:1::0;23516:2;23496:18;;;23489:30;23555:34;23535:18;;;23528:62;-1:-1:-1;;;23606:18:1;;;23599:33;23649:19;;16394:106:0::1;23275:399:1::0;16394:106:0::1;16543:9;4587:13;4526:2;4587;:13;:::i;:::-;4570:30;::::0;4367:11:::1;4570:30;:::i;:::-;16533:19;;;;:::i;:::-;16519:10;;:33;;16511:92;;;;-1:-1:-1::0;;;16511:92:0::1;;;;;;;:::i;:::-;16649:9;4587:13;4526:2;4587;:13;:::i;:::-;4570:30;::::0;4367:11:::1;4570:30;:::i;:::-;16639:19;;;;:::i;:::-;16622:13;;:36;;16614:95;;;;-1:-1:-1::0;;;16614:95:0::1;;;;;;;:::i;:::-;16018:699:::0;;;;:::o;13688:148::-;8073:6;;-1:-1:-1;;;;;8073:6:0;8083:10;8073:20;8065:50;;;;-1:-1:-1;;;8065:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13784:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;13784:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13688:148::o;10623:310::-;-1:-1:-1;;;;;10718:20:0;;10710:52;;;;-1:-1:-1;;;10710:52:0;;24296:2:1;10710:52:0;;;24278:21:1;24335:2;24315:18;;;24308:30;-1:-1:-1;;;24354:18:1;;;24347:49;24413:18;;10710:52:0;24094:343:1;10710:52:0;-1:-1:-1;;;;;10781:21:0;;10773:53;;;;-1:-1:-1;;;10773:53:0;;24296:2:1;10773:53:0;;;24278:21:1;24335:2;24315:18;;;24308:30;-1:-1:-1;;;24354:18:1;;;24347:49;24413:18;;10773:53:0;24094:343:1;10773:53:0;-1:-1:-1;;;;;10839:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10892:33;;368:25:1;;;10892:33:0;;341:18:1;10892:33:0;;;;;;;10623:310;;;:::o;17675:1673::-;17754:4;-1:-1:-1;;;;;17779:18:0;;17771:68;;;;-1:-1:-1;;;17771:68:0;;24644:2:1;17771:68:0;;;24626:21:1;24683:2;24663:18;;;24656:30;24722:34;24702:18;;;24695:62;-1:-1:-1;;;24773:18:1;;;24766:35;24818:19;;17771:68:0;24442:401:1;17771:68:0;-1:-1:-1;;;;;17858:16:0;;17850:64;;;;-1:-1:-1;;;17850:64:0;;25050:2:1;17850:64:0;;;25032:21:1;25089:2;25069:18;;;25062:30;25128:34;25108:18;;;25101:62;-1:-1:-1;;;25179:18:1;;;25172:33;25222:19;;17850:64:0;24848:399:1;17850:64:0;17942:1;17933:6;:10;17925:64;;;;-1:-1:-1;;;17925:64:0;;25454:2:1;17925:64:0;;;25436:21:1;25493:2;25473:18;;;25466:30;25532:34;25512:18;;;25505:62;-1:-1:-1;;;25583:18:1;;;25576:39;25632:19;;17925:64:0;25252:405:1;17925:64:0;-1:-1:-1;;;;;18088:13:0;;18000:8;18088:13;;;:7;:13;;;;;;18000:8;;;;18088:13;;18084:162;;;18124:4;18118:10;;18084:162;;;-1:-1:-1;;;;;18150:11:0;;;;;;:7;:11;;;;;;;;18146:100;;;18185:4;18178:11;;18146:100;;;-1:-1:-1;18230:4:0;18146:100;18260:20;18271:4;18277:2;18260:10;:20::i;:::-;18256:371;;;18301:14;;;;18297:319;;18341:5;18336:265;;18371:34;;-1:-1:-1;;;18371:34:0;;25864:2:1;18371:34:0;;;25846:21:1;25903:2;25883:18;;;25876:30;25942:26;25922:18;;;25915:54;25986:18;;18371:34:0;25662:348:1;18336:265:0;-1:-1:-1;;;;;18436:31:0;;;;;;:25;:31;;;;;;;;18435:32;:66;;;;-1:-1:-1;;;;;;18472:29:0;;;;;;:25;:29;;;;;;;;18471:30;18435:66;18431:170;;;18526:55;;-1:-1:-1;;;18526:55:0;;26217:2:1;18526:55:0;;;26199:21:1;26256:2;26236:18;;;26229:30;26295:34;26275:18;;;26268:62;-1:-1:-1;;;26346:18:1;;;26339:43;26399:19;;18526:55:0;26015:409:1;18431:170:0;18643:4;18639:632;;;18669:6;;;;18664:596;;18700:19;;;;;;;18696:549;;;18744:28;18775:24;18793:4;18775:9;:24::i;:::-;18744:55;;18850:13;;18826:20;:37;18822:404;;18910:10;;18951:22;;;;18947:97;;;19008:13;;18998:6;;5394:5;;19008:13;18988:17;;-1:-1:-1;;;;;18998:6:0;18988:9;:17::i;:::-;:33;;;;:::i;:::-;18987:54;;;;:::i;:::-;18977:64;;18947:97;19098:7;19074:20;:31;19070:72;;19132:7;19109:30;;19070:72;19168:34;19181:20;19168:12;:34::i;:::-;18865:361;18822:404;18721:524;18696:549;19288:52;19305:4;19311:2;19315:6;19323:3;19328:4;19334:5;19288:16;:52::i;:::-;19281:59;17675:1673;-1:-1:-1;;;;;;;17675:1673:0:o;23586:817::-;-1:-1:-1;;;;;23756:25:0;;23705:4;23756:25;;;:19;:25;;;;;;23737:4;;23756:25;;;:52;;-1:-1:-1;;;;;;23785:23:0;;;;;;:19;:23;;;;;;;;23756:52;23752:99;;;-1:-1:-1;23834:5:0;23752:99;-1:-1:-1;;;;;23861:13:0;;:7;:13;;;;;;;;;;:23;;23878:6;;23861:7;:23;;23878:6;;23861:23;:::i;:::-;;;;-1:-1:-1;23895:22:0;;-1:-1:-1;23921:7:0;23920:55;;23969:6;23920:55;;;23932:34;23942:4;23948:6;23956:3;23961:4;23932:9;:34::i;:::-;23895:80;;24001:14;23986:7;:11;23994:2;-1:-1:-1;;;;;23986:11:0;-1:-1:-1;;;;;23986:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;24046:2;-1:-1:-1;;;;;24031:34:0;24040:4;-1:-1:-1;;;;;24031:34:0;;24050:14;24031:34;;;;368:25:1;;356:2;341:18;;222:177;24031:34:0;;;;;;;;24081:16;;;;;;;24076:298;;24114:28;24133:4;24139:2;24114:18;:28::i;:::-;24162:16;;;;;;;24161:17;:41;;;;;24182:20;24193:4;24199:2;24182:10;:20::i;:::-;24161:77;;;;-1:-1:-1;;;;;;24207:31:0;;;;;;:25;:31;;;;;;;;24206:32;24161:77;:111;;;;-1:-1:-1;;;;;;24243:29:0;;;;;;:25;:29;;;;;;;;24242:30;24161:111;:121;;;;;24277:5;24276:6;24161:121;24157:206;;;24303:44;;-1:-1:-1;;;24303:44:0;;26631:2:1;24303:44:0;;;26613:21:1;26670:2;26650:18;;;26643:30;26709:34;26689:18;;;26682:62;-1:-1:-1;;;26760:18:1;;;26753:32;26802:19;;24303:44:0;26429:398:1;24157:206:0;-1:-1:-1;24391:4:0;;23586:817;-1:-1:-1;;;;;;;;23586:817:0:o;17221:446::-;17322:6;;17290:4;;-1:-1:-1;;;;;17314:14:0;;;17322:6;;17314:14;;;;:43;;-1:-1:-1;17351:6:0;;-1:-1:-1;;;;;17345:12:0;;;17351:6;;17345:12;;17314:43;:79;;;;-1:-1:-1;17387:6:0;;-1:-1:-1;;;;;17387:6:0;17374:9;:19;;17314:79;:118;;;;-1:-1:-1;;;;;;17411:21:0;;;;;;:17;:21;;;;;;;;17410:22;17314:118;:159;;;;-1:-1:-1;;;;;;17450:23:0;;;;;;:17;:23;;;;;;;;17449:24;17314:159;:186;;;;-1:-1:-1;;;;;;17490:10:0;;5533:42;17490:10;;17314:186;:219;;;;-1:-1:-1;;;;;;17517:16:0;;;;17314:219;:257;;;;-1:-1:-1;;;;;;17550:21:0;;17566:4;17550:21;;17314:257;:302;;;;-1:-1:-1;17604:11:0;;-1:-1:-1;;;;;17588:28:0;;;17604:11;;;;;17588:28;;17314:302;:345;;;;-1:-1:-1;17647:11:0;;-1:-1:-1;;;;;17633:26:0;;;17647:11;;;;;17633:26;;17314:345;17307:352;17221:446;-1:-1:-1;;;17221:446:0:o;19356:1999::-;6734:6;:13;;-1:-1:-1;;6734:13:0;6743:4;6734:13;;;19439:30:::1;::::0;;::::1;::::0;::::1;::::0;;19462:7:::1;19439:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;19439:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;19439:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;19439:30:0;::::1;::::0;;::::1;::::0;;;;;;6734:6;19484:21;19480:60:::1;;19522:7;;;19480:60;19576:4;19556:26;::::0;;;:11:::1;:26;::::0;;;;;;;19591:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;19591:9:0::1;19556:46:::0;;;;;;;;-1:-1:-1;;19556:67:0::1;19552:166;;19660:4;19640:26;::::0;;;:11:::1;:26;::::0;;;;;;;19675:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;19675:9:0::1;19640:46:::0;;;;;;;-1:-1:-1;;19640:66:0;;19552:166:::1;19761:16;::::0;;19775:1:::1;19761:16:::0;;;;;::::1;::::0;;19737:21:::1;::::0;19761:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19761:16:0::1;19737:40;;19806:4;19788;19793:1;19788:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;19788:23:0::1;;;-1:-1:-1::0;;;;;19788:23:0::1;;;::::0;::::1;19832:9;;;;;;;;;-1:-1:-1::0;;;;;19832:9:0::1;-1:-1:-1::0;;;;;19832:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19822:4;19827:1;19822:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19822:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;19865:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;19865:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;19940:20;;19975:1:::1;::::0;19991:4;;20018::::1;::::0;20038:15:::1;::::0;19865:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19861:246;;20089:7;;;;19861:246;20119:18;20140:21;20119:42;;20172:12;20195:23:::0;20254:6:::1;:16;;;20221:49;;20235:6;:15;;;20222:28;;:10;:28;;;;:::i;:::-;20221:49;;;;:::i;:::-;20195:75;;20281:26;20346:6;:16;;;20310:52;;20324:6;:18;;;20311:31;;:10;:31;;;;:::i;:::-;20310:52;;;;:::i;:::-;20281:81;;20373:19;20424:6;:16;;;20395:45;;20409:6;:11;;;20396:24;;:10;:24;;;;:::i;:::-;20395:45;;;;:::i;:::-;20373:67;;20451:23;20510:6;:16;;;20477:49;;20491:6;:15;;;20478:28;;:10;:28;;;;:::i;:::-;20477:49;;;;:::i;:::-;20451:75:::0;-1:-1:-1;20537:24:0::1;20635:11:::0;20451:75;20578:36:::1;20596:18:::0;20578:15;:36:::1;:::i;:::-;:54;;;;:::i;:::-;:68;;;;:::i;:::-;20564:83;::::0;:10;:83:::1;:::i;:::-;20662:16:::0;;20537:110;;-1:-1:-1;20662:20:0::1;;::::0;20658:133:::1;;20712:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;20712:21:0;;::::1;::::0;20769:5:::1;::::0;20746:16;;20712:67:::1;::::0;;;20746:16;20712:21;20769:5;20712:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20699:80:0;;-1:-1:-1;;20658:133:0::1;20805:15;::::0;::::1;::::0;:19:::1;;::::0;20801:130:::1;;20854:20:::0;;:65:::1;::::0;-1:-1:-1;;;;;20854:20:0;;::::1;::::0;20909:5:::1;::::0;20887:15;;20854:65:::1;::::0;;;20887:15;20854:20;20909:5;20854:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20841:78:0;;-1:-1:-1;;20801:130:0::1;20945:18;::::0;::::1;::::0;:22:::1;;::::0;20941:139:::1;;20997:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;20997:23:0;;::::1;::::0;21058:5:::1;::::0;21033:18;;20997:71:::1;::::0;;;21033:18;20997:23;21058:5;20997:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20984:84:0;;-1:-1:-1;;20941:139:0::1;21094:11;::::0;::::1;::::0;:15:::1;;::::0;21090:118:::1;;21139:16:::0;;:57:::1;::::0;-1:-1:-1;;;;;21139:16:0;;::::1;::::0;21186:5:::1;::::0;21168:11;;21139:57:::1;::::0;;;21168:11;21139:16;21186:5;21139:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;21126:70:0;;-1:-1:-1;;21090:118:0::1;21222:15;::::0;::::1;::::0;:19:::1;;::::0;21218:130:::1;;21271:20:::0;;:65:::1;::::0;-1:-1:-1;;;;;21271:20:0;;::::1;::::0;21326:5:::1;::::0;21304:15;;21271:65:::1;::::0;;;21304:15;21271:20;21326:5;21271:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;21258:78:0;;-1:-1:-1;;21218:130:0::1;19428:1927;;;;;;;;;6758:1;-1:-1:-1::0;6770:6:0;:14;;-1:-1:-1;;6770:14:0;;;19356:1999::o;24411:804::-;24499:7;24519:18;24552:3;24548:205;;;-1:-1:-1;24585:9:0;:16;;;24548:205;;;24623:4;24619:134;;;-1:-1:-1;24657:9:0;:17;;;;;;24619:134;;;-1:-1:-1;24720:9:0;:21;;;;;;24619:134;24767:10;24781:1;24767:15;24763:39;;24793:6;24786:13;;;;;24763:39;24824:11;;;;;-1:-1:-1;;;;;24824:11:0;24848:4;24816:37;:110;;;;;24871:13;24888:1;24871:18;:54;;;;24906:13;24923:2;24906:19;24871:54;24812:138;;;-1:-1:-1;24943:4:0;24812:138;24960:17;5394:5;24980:19;24989:10;24980:6;:19;:::i;:::-;:38;;;;:::i;:::-;24960:58;-1:-1:-1;25033:13:0;;25029:141;;25079:4;25063:7;:22;;;;;;;;;;:35;;25089:9;;25063:7;:35;;25089:9;;25063:35;:::i;:::-;;;;-1:-1:-1;;25118:40:0;;368:25:1;;;25141:4:0;;-1:-1:-1;;;;;25118:40:0;;;;;356:2:1;341:18;25118:40:0;;;;;;;25029:141;25189:18;25198:9;25189:6;:18;:::i;21363:563::-;21446:16;;;;;;;21445:17;21437:65;;;;-1:-1:-1;;;21437:65:0;;28208:2:1;21437:65:0;;;28190:21:1;28247:2;28227:18;;;28220:30;28286:34;28266:18;;;28259:62;-1:-1:-1;;;28337:18:1;;;28330:33;28380:19;;21437:65:0;28006:399:1;21437:65:0;21518:20;21529:4;21535:2;21518:10;:20::i;:::-;21517:21;:37;;;;-1:-1:-1;21548:6:0;;-1:-1:-1;;;;;21542:12:0;;;21548:6;;21542:12;21517:37;21513:406;;;-1:-1:-1;;;;;21571:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;21571:30:0;;;21597:4;21571:30;;;;;;21616:19;:25;;;;;:32;;;;;;;;;;21663:16;:23;;-1:-1:-1;;21663:23:0;21571:30;21663:23;;;;;21713:11;;;;21701:114;;21759:11;:40;;-1:-1:-1;;;;;;21759:40:0;21793:4;21759:40;;;;;21701:114;21829:19;:26;;-1:-1:-1;;21829:26:0;;;;;21875:32;;-1:-1:-1;1549:41:1;;21875:32:0;;1537:2:1;1522:18;21875:32:0;1409:187:1;761:418;910:2;899:9;892:21;873:4;942:6;936:13;985:6;980:2;969:9;965:18;958:34;1044:6;1039:2;1031:6;1027:15;1022:2;1011:9;1007:18;1001:50;1100:1;1095:2;1086:6;1075:9;1071:22;1067:31;1060:42;1170:2;1163;1159:7;1154:2;1146:6;1142:15;1138:29;1127:9;1123:45;1119:54;1111:62;;;761:418;;;;:::o;1601:131::-;-1:-1:-1;;;;;1676:31:1;;1666:42;;1656:70;;1722:1;1719;1712:12;1737:367;1805:6;1813;1866:2;1854:9;1845:7;1841:23;1837:32;1834:52;;;1882:1;1879;1872:12;1834:52;1921:9;1908:23;1940:31;1965:5;1940:31;:::i;:::-;1990:5;2068:2;2053:18;;;;2040:32;;-1:-1:-1;;;1737:367:1:o;2109:247::-;2168:6;2221:2;2209:9;2200:7;2196:23;2192:32;2189:52;;;2237:1;2234;2227:12;2189:52;2276:9;2263:23;2295:31;2320:5;2295:31;:::i;2361:508::-;2438:6;2446;2454;2507:2;2495:9;2486:7;2482:23;2478:32;2475:52;;;2523:1;2520;2513:12;2475:52;2562:9;2549:23;2581:31;2606:5;2581:31;:::i;:::-;2631:5;-1:-1:-1;2688:2:1;2673:18;;2660:32;2701:33;2660:32;2701:33;:::i;:::-;2361:508;;2753:7;;-1:-1:-1;;;2833:2:1;2818:18;;;;2805:32;;2361:508::o;2874:127::-;2935:10;2930:3;2926:20;2923:1;2916:31;2966:4;2963:1;2956:15;2990:4;2987:1;2980:15;3006:275;3077:2;3071:9;3142:2;3123:13;;-1:-1:-1;;3119:27:1;3107:40;;3177:18;3162:34;;3198:22;;;3159:62;3156:88;;;3224:18;;:::i;:::-;3260:2;3253:22;3006:275;;-1:-1:-1;3006:275:1:o;3286:183::-;3346:4;3379:18;3371:6;3368:30;3365:56;;;3401:18;;:::i;:::-;-1:-1:-1;3446:1:1;3442:14;3458:4;3438:25;;3286:183::o;3474:723::-;3528:5;3581:3;3574:4;3566:6;3562:17;3558:27;3548:55;;3599:1;3596;3589:12;3548:55;3639:6;3626:20;3666:64;3682:47;3722:6;3682:47;:::i;:::-;3666:64;:::i;:::-;3754:3;3778:6;3773:3;3766:19;3810:4;3805:3;3801:14;3794:21;;3871:4;3861:6;3858:1;3854:14;3846:6;3842:27;3838:38;3824:52;;3899:3;3891:6;3888:15;3885:35;;;3916:1;3913;3906:12;3885:35;3952:4;3944:6;3940:17;3966:200;3982:6;3977:3;3974:15;3966:200;;;4074:17;;4104:18;;4151:4;4142:14;;;;3999;3966:200;;;-1:-1:-1;4184:7:1;3474:723;-1:-1:-1;;;;;3474:723:1:o;4202:1215::-;4320:6;4328;4381:2;4369:9;4360:7;4356:23;4352:32;4349:52;;;4397:1;4394;4387:12;4349:52;4437:9;4424:23;4470:18;4462:6;4459:30;4456:50;;;4502:1;4499;4492:12;4456:50;4525:22;;4578:4;4570:13;;4566:27;-1:-1:-1;4556:55:1;;4607:1;4604;4597:12;4556:55;4647:2;4634:16;4670:64;4686:47;4726:6;4686:47;:::i;4670:64::-;4756:3;4780:6;4775:3;4768:19;4812:4;4807:3;4803:14;4796:21;;4869:4;4859:6;4856:1;4852:14;4848:2;4844:23;4840:34;4826:48;;4897:7;4889:6;4886:19;4883:39;;;4918:1;4915;4908:12;4883:39;4950:4;4946:2;4942:13;4931:24;;4964:221;4980:6;4975:3;4972:15;4964:221;;;5062:3;5049:17;5079:31;5104:5;5079:31;:::i;:::-;5123:18;;5170:4;4997:14;;;;5161;;;;4964:221;;;5204:5;-1:-1:-1;;;;5262:4:1;5247:20;;5234:34;5293:18;5280:32;;5277:52;;;5325:1;5322;5315:12;5277:52;5348:63;5403:7;5392:8;5381:9;5377:24;5348:63;:::i;:::-;5338:73;;;4202:1215;;;;;:::o;5611:159::-;5678:20;;5738:6;5727:18;;5717:29;;5707:57;;5760:1;5757;5750:12;5707:57;5611:159;;;:::o;5775:328::-;5849:6;5857;5865;5918:2;5906:9;5897:7;5893:23;5889:32;5886:52;;;5934:1;5931;5924:12;5886:52;5957:28;5975:9;5957:28;:::i;:::-;5947:38;;6004:37;6037:2;6026:9;6022:18;6004:37;:::i;:::-;5994:47;;6060:37;6093:2;6082:9;6078:18;6060:37;:::i;:::-;6050:47;;5775:328;;;;;:::o;6108:226::-;6167:6;6220:2;6208:9;6199:7;6195:23;6191:32;6188:52;;;6236:1;6233;6226:12;6188:52;-1:-1:-1;6281:23:1;;6108:226;-1:-1:-1;6108:226:1:o;6339:118::-;6425:5;6418:13;6411:21;6404:5;6401:32;6391:60;;6447:1;6444;6437:12;6462:382;6527:6;6535;6588:2;6576:9;6567:7;6563:23;6559:32;6556:52;;;6604:1;6601;6594:12;6556:52;6643:9;6630:23;6662:31;6687:5;6662:31;:::i;:::-;6712:5;-1:-1:-1;6769:2:1;6754:18;;6741:32;6782:30;6741:32;6782:30;:::i;:::-;6831:7;6821:17;;;6462:382;;;;;:::o;6849:853::-;6984:6;6992;7000;7008;7016;7069:3;7057:9;7048:7;7044:23;7040:33;7037:53;;;7086:1;7083;7076:12;7037:53;7125:9;7112:23;7144:31;7169:5;7144:31;:::i;:::-;7194:5;-1:-1:-1;7251:2:1;7236:18;;7223:32;7264:33;7223:32;7264:33;:::i;:::-;7316:7;-1:-1:-1;7375:2:1;7360:18;;7347:32;7388:33;7347:32;7388:33;:::i;:::-;7440:7;-1:-1:-1;7499:2:1;7484:18;;7471:32;7512:33;7471:32;7512:33;:::i;:::-;7564:7;-1:-1:-1;7623:3:1;7608:19;;7595:33;7637;7595;7637;:::i;:::-;7689:7;7679:17;;;6849:853;;;;;;;;:::o;7707:376::-;7769:6;7777;7830:2;7818:9;7809:7;7805:23;7801:32;7798:52;;;7846:1;7843;7836:12;7798:52;7885:9;7872:23;7904:28;7926:5;7904:28;:::i;8694:388::-;8762:6;8770;8823:2;8811:9;8802:7;8798:23;8794:32;8791:52;;;8839:1;8836;8829:12;8791:52;8878:9;8865:23;8897:31;8922:5;8897:31;:::i;:::-;8947:5;-1:-1:-1;9004:2:1;8989:18;;8976:32;9017:33;8976:32;9017:33;:::i;9087:474::-;9177:6;9185;9193;9201;9209;9262:3;9250:9;9241:7;9237:23;9233:33;9230:53;;;9279:1;9276;9269:12;9230:53;9302:28;9320:9;9302:28;:::i;:::-;9292:38;;9349:37;9382:2;9371:9;9367:18;9349:37;:::i;:::-;9339:47;;9405:37;9438:2;9427:9;9423:18;9405:37;:::i;:::-;9395:47;;9461:37;9494:2;9483:9;9479:18;9461:37;:::i;:::-;9451:47;;9517:38;9550:3;9539:9;9535:19;9517:38;:::i;:::-;9507:48;;9087:474;;;;;;;;:::o;10244:587::-;10330:6;10338;10346;10354;10407:3;10395:9;10386:7;10382:23;10378:33;10375:53;;;10424:1;10421;10414:12;10375:53;-1:-1:-1;;10469:23:1;;;10589:2;10574:18;;10561:32;;-1:-1:-1;10692:2:1;10677:18;;10664:32;;10795:2;10780:18;10767:32;;-1:-1:-1;10244:587:1;-1:-1:-1;10244:587:1:o;10836:127::-;10897:10;10892:3;10888:20;10885:1;10878:31;10928:4;10925:1;10918:15;10952:4;10949:1;10942:15;10968:375;11056:1;11074:5;11088:249;11109:1;11099:8;11096:15;11088:249;;;11159:4;11154:3;11150:14;11144:4;11141:24;11138:50;;;11168:18;;:::i;:::-;11218:1;11208:8;11204:16;11201:49;;;11232:16;;;;11201:49;11315:1;11311:16;;;;;11271:15;;11088:249;;;10968:375;;;;;;:::o;11348:902::-;11397:5;11427:8;11417:80;;-1:-1:-1;11468:1:1;11482:5;;11417:80;11516:4;11506:76;;-1:-1:-1;11553:1:1;11567:5;;11506:76;11598:4;11616:1;11611:59;;;;11684:1;11679:174;;;;11591:262;;11611:59;11641:1;11632:10;;11655:5;;;11679:174;11716:3;11706:8;11703:17;11700:43;;;11723:18;;:::i;:::-;-1:-1:-1;;11779:1:1;11765:16;;11838:5;;11591:262;;11937:2;11927:8;11924:16;11918:3;11912:4;11909:13;11905:36;11899:2;11889:8;11886:16;11881:2;11875:4;11872:12;11868:35;11865:77;11862:203;;;-1:-1:-1;11974:19:1;;;12050:5;;11862:203;12097:42;-1:-1:-1;;12122:8:1;12116:4;12097:42;:::i;:::-;12175:6;12171:1;12167:6;12163:19;12154:7;12151:32;12148:58;;;12186:18;;:::i;:::-;12224:20;;11348:902;-1:-1:-1;;;11348:902:1:o;12255:140::-;12313:5;12342:47;12383:4;12373:8;12369:19;12363:4;12342:47;:::i;12400:168::-;12473:9;;;12504;;12521:15;;;12515:22;;12501:37;12491:71;;12542:18;;:::i;12573:128::-;12640:9;;;12661:11;;;12658:37;;;12675:18;;:::i;12706:341::-;12908:2;12890:21;;;12947:2;12927:18;;;12920:30;-1:-1:-1;;;12981:2:1;12966:18;;12959:47;13038:2;13023:18;;12706:341::o;13402:127::-;13463:10;13458:3;13454:20;13451:1;13444:31;13494:4;13491:1;13484:15;13518:4;13515:1;13508:15;13881:180;13919:3;13963:6;13956:5;13952:18;13994:6;13985:7;13982:19;13979:45;;14004:18;;:::i;:::-;14053:1;14040:15;;13881:180;-1:-1:-1;;13881:180:1:o;14066:125::-;14131:9;;;14152:10;;;14149:36;;;14165:18;;:::i;14894:217::-;14934:1;14960;14950:132;;15004:10;14999:3;14995:20;14992:1;14985:31;15039:4;15036:1;15029:15;15067:4;15064:1;15057:15;14950:132;-1:-1:-1;15096:9:1;;14894:217::o;15467:425::-;15669:2;15651:21;;;15708:2;15688:18;;;15681:30;15747:34;15742:2;15727:18;;15720:62;15818:31;15813:2;15798:18;;15791:59;15882:3;15867:19;;15467:425::o;16240:385::-;16319:6;16327;16380:2;16368:9;16359:7;16355:23;16351:32;16348:52;;;16396:1;16393;16386:12;16348:52;16428:9;16422:16;16447:31;16472:5;16447:31;:::i;:::-;16547:2;16532:18;;16526:25;16497:5;;-1:-1:-1;16560:33:1;16526:25;16560:33;:::i;19560:343::-;19639:6;19647;19700:2;19688:9;19679:7;19675:23;19671:32;19668:52;;;19716:1;19713;19706:12;19668:52;-1:-1:-1;;19761:16:1;;19867:2;19852:18;;;19846:25;19761:16;;19846:25;;-1:-1:-1;19560:343:1:o;20264:230::-;20334:6;20387:2;20375:9;20366:7;20362:23;20358:32;20355:52;;;20403:1;20400;20393:12;20355:52;-1:-1:-1;20448:16:1;;20264:230;-1:-1:-1;20264:230:1:o;20778:245::-;20845:6;20898:2;20886:9;20877:7;20873:23;20869:32;20866:52;;;20914:1;20911;20904:12;20866:52;20946:9;20940:16;20965:28;20987:5;20965:28;:::i;21387:251::-;21457:6;21510:2;21498:9;21489:7;21485:23;21481:32;21478:52;;;21526:1;21523;21516:12;21478:52;21558:9;21552:16;21577:31;21602:5;21577:31;:::i;22305:155::-;22396:6;22373:14;;;22389;;;22369:35;;22416:15;;22413:41;;;22434:18;;:::i;23679:410::-;23881:2;23863:21;;;23920:2;23900:18;;;23893:30;23959:34;23954:2;23939:18;;23932:62;-1:-1:-1;;;24025:2:1;24010:18;;24003:44;24079:3;24064:19;;23679:410::o;26832:959::-;27094:4;27142:3;27131:9;27127:19;27173:6;27162:9;27155:25;27216:6;27211:2;27200:9;27196:18;27189:34;27259:3;27254:2;27243:9;27239:18;27232:31;27283:6;27318;27312:13;27349:6;27341;27334:22;27387:3;27376:9;27372:19;27365:26;;27426:2;27418:6;27414:15;27400:29;;27447:1;27457:195;27471:6;27468:1;27465:13;27457:195;;;27536:13;;-1:-1:-1;;;;;27532:39:1;27520:52;;27601:2;27627:15;;;;27592:12;;;;27568:1;27486:9;27457:195;;;-1:-1:-1;;;;;;;27708:32:1;;;;27703:2;27688:18;;27681:60;-1:-1:-1;;27772:3:1;27757:19;27750:35;27669:3;26832:959;-1:-1:-1;;;26832:959:1:o

Swarm Source

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