ETH Price: $3,179.50 (-8.12%)
Gas: 3 Gwei

Token

Ape Food (APEFOOD)
 

Overview

Max Total Supply

1,000,000,000,000 APEFOOD

Holders

32

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
champoonk.eth
Balance
28,492,247.574454201 APEFOOD

Value
$0.00
0xb130a894187664b22b823de7bb886e5c09e27d51
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:
APEFOOD

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.6;

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

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

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

    library SafeMath {

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

            return c;
        }

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

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

            return c;
        }

        function mul(uint256 a, uint256 b) internal pure returns (uint256) {
            if (a == 0) {
                return 0;
            }

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

            return c;
        }

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

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

            return c;
        }

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

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

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

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

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

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

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

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

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

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

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

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

    contract Ownable is Context {
        address private _owner;
        address private _previousOwner;

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

        constructor () {
            address msgSender = _msgSender();
            _owner = msgSender;
            emit OwnershipTransferred(address(0), msgSender);
        }

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

        modifier onlyOwner() {
            require(_owner == _msgSender(), "Ownable: caller is not the owner");
            _;
        }
        
        function renounceOwnership() public virtual onlyOwner {
            emit OwnershipTransferred(_owner, address(0));
            _owner = address(0);
        }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        function initialize(address, address) external;
    }

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

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

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

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

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

    // Contract implementarion
    contract APEFOOD is Context, IERC20, Ownable {
        using SafeMath for uint256;
        using Address for address;

        mapping (address => uint256) private _rOwned;
        mapping (address => uint256) private _tOwned;
        mapping (address => mapping (address => uint256)) private _allowances;

        mapping (address => bool) private _isExcludedFromFee;

        mapping (address => bool) private _isExcluded;
        address[] private _excluded;
        
        mapping(address => uint256) private buycooldown;
        
        mapping (address => bool) private _isBlackListedBot;
        address[] private _blackListedBots;
    
        uint256 private constant MAX = ~uint256(0);
        uint256 private _tTotal = 1000000 * 10**6 * 10**9;
        uint256 private _rTotal = (MAX - (MAX % _tTotal));
        uint256 private _tFeeTotal;

        string private _name = 'Ape Food';
        string private _symbol = 'APEFOOD';
        uint8 private _decimals = 9;
        
        uint256 private _taxFee = 4; //4% redistribution to all holders (including burn wallet)
        uint256 private _devFee = 6; //3% marketing && 3% dev respectively
        
        bool private inSwap = false;
        bool private swapEnabled = false;
        bool private cooldownEnabled = false;

        address payable public _devWalletAddress;
        address payable public _marketingWalletAddress;

        IUniswapV2Router02 public uniswapV2Router;
        address public uniswapV2Pair;

        uint256 private _maxTxAmount = 3000 * 10**6 * 10**9;
        // We will set a minimum amount of tokens to be swaped => 50k
        uint256 private _numOfTokensToExchangeFordev = 5 * 10**4 * 10**9;

        event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
        event SwapEnabledUpdated(bool enabled);

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

        constructor (address payable devWalletAddress, address payable marketingWalletAddress) {
            _devWalletAddress = devWalletAddress;
            _marketingWalletAddress = marketingWalletAddress;
            _rOwned[_msgSender()] = _rTotal;

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

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

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

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

        function decimals() public view returns (uint8) {
            return _decimals;
        }

        function totalSupply() public view override returns (uint256) {
            return _tTotal;
        }

        function balanceOf(address account) public view override returns (uint256) {
            if (_isExcluded[account]) return _tOwned[account];
            return tokenFromReflection(_rOwned[account]);
        }

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

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

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

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

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

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

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

        function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
            _isExcludedFromFee[account] = excluded;
        }
        
        function addBotToBlackList(address account) external onlyOwner() {
            require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not blacklist Uniswap router.');
            require(!_isBlackListedBot[account], "Account is already blacklisted");
            _isBlackListedBot[account] = true;
            _blackListedBots.push(account);
        }

        function removeBotFromBlackList(address account) external onlyOwner() {
            require(_isBlackListedBot[account], "Account is not blacklisted");
            for (uint256 i = 0; i < _blackListedBots.length; i++) {
                if (_blackListedBots[i] == account) {
                    _blackListedBots[i] = _blackListedBots[_blackListedBots.length - 1];
                    _isBlackListedBot[account] = false;
                    _blackListedBots.pop();
                    break;
                }
            }
        }

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

        function deliver(uint256 tAmount) public {
            address sender = _msgSender();
            require(!_isExcluded[sender], "Excluded addresses cannot call this function");
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rTotal = _rTotal.sub(rAmount);
            _tFeeTotal = _tFeeTotal.add(tAmount);
        }

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

        function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
            require(rAmount <= _rTotal, "Amount must be less than total reflections");
            uint256 currentRate =  _getRate();
            return rAmount.div(currentRate);
        }
        
        function addLiquidity() external onlyOwner() {
            IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            uniswapV2Router = _uniswapV2Router;
            _approve(address(this), address(uniswapV2Router), _tTotal);
            uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
            uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
            swapEnabled = true;
            cooldownEnabled = true;
            IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type(uint256).max);
        }
        
        function removeAllFee() private {
            if(_taxFee == 0 && _devFee == 0) return;
            
            _taxFee = 0;
            _devFee = 0;
        }
    
        function restoreAllFee() private {
            _taxFee = 4;
            _devFee = 6;
        }
    
        function isExcludedFromFee(address account) public view returns(bool) {
            return _isExcludedFromFee[account];
        }

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

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

        function _transfer(address sender, address recipient, uint256 amount) private {
            require(sender != address(0), "ERC20: transfer from the zero address");
            require(recipient != address(0), "ERC20: transfer to the zero address");
            require(amount > 0, "Transfer amount must be greater than zero");
            
            require(!_isBlackListedBot[recipient], "Beep Boop - GTFO");
            require(!_isBlackListedBot[msg.sender], "Beep Boop - GTFO");
            require(!_isBlackListedBot[sender], "Beep Boop - GTFO");
            
            if(sender == uniswapV2Pair && recipient != address(uniswapV2Router) && recipient != owner()) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                if(cooldownEnabled)
                    require(buycooldown[recipient] < block.timestamp);
                    buycooldown[recipient] = block.timestamp + (30 seconds);
            }


            uint256 contractTokenBalance = balanceOf(address(this));
            
            if(contractTokenBalance >= _maxTxAmount) {
                contractTokenBalance = _maxTxAmount;
            }
            
            bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeFordev;
            if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) {
                // We need to swap the current tokens to ETH and send to the dev wallet
                swapTokensForEth(contractTokenBalance);
                
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToTeam(address(this).balance);
                }
            }
            
            //indicates if fee should be deducted from transfer
            bool takeFee = true;
            
            //if any account belongs to _isExcludedFromFee account then remove the fee
            if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
                takeFee = false;
            }
            
            //transfer amount, it will take tax and dev fee
            _tokenTransfer(sender,recipient,amount,takeFee);
        }

        function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{
            // generate the uniswap pair path of token -> weth
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = uniswapV2Router.WETH();

            _approve(address(this), address(uniswapV2Router), tokenAmount);

            // make the swap
            uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokenAmount,
                0, // accept any amount of ETH
                path,
                address(this),
                block.timestamp
            );
        }
        
        function sendETHToTeam(uint256 amount) private {
            _devWalletAddress.transfer(amount.div(2));
            _marketingWalletAddress.transfer(amount.div(2));
        }
        
        // We are exposing these functions to be able to manual swap and send
        // in case the token is highly valued and 50k becomes too much
        function manualSwap() external {
            require(_msgSender() == _devWalletAddress || _msgSender() == _marketingWalletAddress);
            uint256 contractBalance = balanceOf(address(this));
            swapTokensForEth(contractBalance);
        }
        
        function manualSend() external {
            require(_msgSender() == _devWalletAddress || _msgSender() == _marketingWalletAddress);
            uint256 contractETHBalance = address(this).balance;
            sendETHToTeam(contractETHBalance);
        }
        
        function setCooldownEnabled(bool onoff) external onlyOwner() {
            cooldownEnabled = onoff;
        }
        
        function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
            if(!takeFee)
                removeAllFee();

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

            if(!takeFee)
                restoreAllFee();
        }

        function _transferStandard(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tdev) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
            _takedev(tdev);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tdev) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);    
            _takedev(tdev);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tdev) = _getValues(tAmount);
            _tOwned[sender] = _tOwned[sender].sub(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
            _takedev(tdev); 
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tdev) = _getValues(tAmount);
            _tOwned[sender] = _tOwned[sender].sub(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
            _takedev(tdev);
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _takedev(uint256 tdev) private {
            uint256 currentRate =  _getRate();
            uint256 rdev = tdev.mul(currentRate);
            _rOwned[address(this)] = _rOwned[address(this)].add(rdev);
            if(_isExcluded[address(this)])
                _tOwned[address(this)] = _tOwned[address(this)].add(tdev);
        }

        function _reflectFee(uint256 rFee, uint256 tFee) private {
            _rTotal = _rTotal.sub(rFee);
            _tFeeTotal = _tFeeTotal.add(tFee);
        }

         //to recieve ETH from uniswapV2Router when swaping
        receive() external payable {}

        function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
            (uint256 tTransferAmount, uint256 tFee, uint256 tDev) = _getTValues(tAmount, _taxFee, _devFee);
            uint256 currentRate =  _getRate();
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tDev, currentRate);
            return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tDev);
        }

        function _getTValues(uint256 tAmount, uint256 taxFee, uint256 devFee) private pure returns (uint256, uint256, uint256) {
            uint256 tFee = tAmount.mul(taxFee).div(100);
            uint256 tdev = tAmount.mul(devFee).div(100);
            uint256 tTransferAmount = tAmount.sub(tFee).sub(tFee).sub(tdev); //subtract tFee 2x for burn + redistribution
            return (tTransferAmount, tFee, tdev);
        }

        function _getRValues(uint256 tAmount, uint256 tFee, uint256 tDev, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
            uint256 rAmount = tAmount.mul(currentRate);
            uint256 rFee = tFee.mul(currentRate);
            uint256 rDev = tDev.mul(currentRate);
            uint256 rTransferAmount = rAmount.sub(rFee).sub(rFee).sub(rDev); //subtract rFee 2x for burn + redistribution
            return (rAmount, rTransferAmount, rFee);
        }

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

        function _getCurrentSupply() private view returns(uint256, uint256) {
            uint256 rSupply = _rTotal;
            uint256 tSupply = _tTotal;      
            for (uint256 i = 0; i < _excluded.length; i++) {
                if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
                rSupply = rSupply.sub(_rOwned[_excluded[i]]);
                tSupply = tSupply.sub(_tOwned[_excluded[i]]);
            }
            if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
            return (rSupply, tSupply);
        }
        
        function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
            require(maxTxAmount >= (3000 * 10**6 * 10**9) , 'maxTxAmount should be greater than 3 billion');
            _maxTxAmount = maxTxAmount;
        }
    }

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"devWalletAddress","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","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":"_devWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBotToBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBotFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea00000600b55600b5460001962000023919062000674565b600019620000329190620005c5565b600c556040518060400160405280600881526020017f41706520466f6f64000000000000000000000000000000000000000000000000815250600e90805190602001906200008292919062000489565b506040518060400160405280600781526020017f415045464f4f4400000000000000000000000000000000000000000000000000815250600f9080519060200190620000d092919062000489565b506009601060006101000a81548160ff021916908360ff160217905550600460115560066012556000601360006101000a81548160ff0219169083151502179055506000601360016101000a81548160ff0219169083151502179055506000601360026101000a81548160ff0219169083151502179055506729a2241af62c0000601755652d79883d20006018553480156200016b57600080fd5b5060405162005f0538038062005f05833981810160405281019062000191919062000550565b6000620001a36200045860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081601360036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c5460026000620002da6200045860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560006200032e6200046060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003e76200045860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b54604051620004489190620005a8565b60405180910390a3505062000758565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b82805462000497906200063e565b90600052602060002090601f016020900481019282620004bb576000855562000507565b82601f10620004d657805160ff191683800117855562000507565b8280016001018555821562000507579182015b8281111562000506578251825591602001919060010190620004e9565b5b5090506200051691906200051a565b5090565b5b80821115620005355760008160009055506001016200051b565b5090565b6000815190506200054a816200073e565b92915050565b600080604083850312156200056a576200056962000739565b5b60006200057a8582860162000539565b92505060206200058d8582860162000539565b9150509250929050565b620005a28162000634565b82525050565b6000602082019050620005bf600083018462000597565b92915050565b6000620005d28262000634565b9150620005df8362000634565b925082821015620005f557620005f4620006ac565b5b828203905092915050565b60006200060d8262000614565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200065757607f821691505b602082108114156200066e576200066d6200070a565b5b50919050565b6000620006818262000634565b91506200068e8362000634565b925082620006a157620006a0620006db565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b620007498162000600565b81146200075557600080fd5b50565b61579d80620007686000396000f3fe6080604052600436106101e75760003560e01c80635342acb411610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610727578063e8078d9414610764578063f2fde38b1461077b578063f4293890146107a4576101ee565b8063a9059cbb14610659578063af9549e014610696578063b425bac3146106bf578063cba0e996146106ea576101ee565b80637ded4d6a116100d15780637ded4d6a1461059d5780638da5cb5b146105c657806395d89b41146105f1578063a457c2d71461061c576101ee565b80635342acb4146104e35780635932ead11461052057806370a0823114610549578063715018a614610586576101ee565b8063313ce5671161017a5780634303443d116101495780634303443d1461043b5780634549b0391461046457806349bd5a5e146104a157806351bc3c85146104cc576101ee565b8063313ce5671461037f57806339509351146103aa5780633bd5d173146103e75780634144d9e414610410576101ee565b806318160ddd116101b657806318160ddd146102b15780631bbae6e0146102dc57806323b872dd146103055780632d83811914610342576101ee565b806306fdde03146101f3578063095ea7b31461021e57806313114a9d1461025b5780631694505e14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b506102086107bb565b6040516102159190614b54565b60405180910390f35b34801561022a57600080fd5b506102456004803603810190610240919061453e565b61084d565b6040516102529190614b1e565b60405180910390f35b34801561026757600080fd5b5061027061086b565b60405161027d9190614db6565b60405180910390f35b34801561029257600080fd5b5061029b610875565b6040516102a89190614b39565b60405180910390f35b3480156102bd57600080fd5b506102c661089b565b6040516102d39190614db6565b60405180910390f35b3480156102e857600080fd5b5061030360048036038101906102fe91906145d8565b6108a5565b005b34801561031157600080fd5b5061032c600480360381019061032791906144ab565b61098f565b6040516103399190614b1e565b60405180910390f35b34801561034e57600080fd5b50610369600480360381019061036491906145d8565b610a68565b6040516103769190614db6565b60405180910390f35b34801561038b57600080fd5b50610394610ad6565b6040516103a19190614e2b565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc919061453e565b610aed565b6040516103de9190614b1e565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906145d8565b610ba0565b005b34801561041c57600080fd5b50610425610d1b565b6040516104329190614a50565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d9190614411565b610d41565b005b34801561047057600080fd5b5061048b60048036038101906104869190614605565b610fa4565b6040516104989190614db6565b60405180910390f35b3480156104ad57600080fd5b506104b6611028565b6040516104c39190614a35565b60405180910390f35b3480156104d857600080fd5b506104e161104e565b005b3480156104ef57600080fd5b5061050a60048036038101906105059190614411565b611127565b6040516105179190614b1e565b60405180910390f35b34801561052c57600080fd5b506105476004803603810190610542919061457e565b61117d565b005b34801561055557600080fd5b50610570600480360381019061056b9190614411565b61122f565b60405161057d9190614db6565b60405180910390f35b34801561059257600080fd5b5061059b61131a565b005b3480156105a957600080fd5b506105c460048036038101906105bf9190614411565b61146d565b005b3480156105d257600080fd5b506105db611777565b6040516105e89190614a35565b60405180910390f35b3480156105fd57600080fd5b506106066117a0565b6040516106139190614b54565b60405180910390f35b34801561062857600080fd5b50610643600480360381019061063e919061453e565b611832565b6040516106509190614b1e565b60405180910390f35b34801561066557600080fd5b50610680600480360381019061067b919061453e565b6118ff565b60405161068d9190614b1e565b60405180910390f35b3480156106a257600080fd5b506106bd60048036038101906106b891906144fe565b61191d565b005b3480156106cb57600080fd5b506106d4611a0d565b6040516106e19190614a50565b60405180910390f35b3480156106f657600080fd5b50610711600480360381019061070c9190614411565b611a33565b60405161071e9190614b1e565b60405180910390f35b34801561073357600080fd5b5061074e6004803603810190610749919061446b565b611a89565b60405161075b9190614db6565b60405180910390f35b34801561077057600080fd5b50610779611b10565b005b34801561078757600080fd5b506107a2600480360381019061079d9190614411565b611feb565b005b3480156107b057600080fd5b506107b96121ad565b005b6060600e80546107ca90615080565b80601f01602080910402602001604051908101604052809291908181526020018280546107f690615080565b80156108435780601f1061081857610100808354040283529160200191610843565b820191906000526020600020905b81548152906001019060200180831161082657829003601f168201915b5050505050905090565b600061086161085a61227e565b8484612286565b6001905092915050565b6000600d54905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b6108ad61227e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461093a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093190614c96565b60405180910390fd5b6729a2241af62c0000811015610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90614d36565b60405180910390fd5b8060178190555050565b600061099c848484612451565b610a5d846109a861227e565b610a588560405180606001604052806028815260200161571b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a0e61227e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa09092919063ffffffff16565b612286565b600190509392505050565b6000600c54821115610aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa690614b96565b60405180910390fd5b6000610ab9612b04565b9050610ace8184612b2f90919063ffffffff16565b915050919050565b6000601060009054906101000a900460ff16905090565b6000610b96610afa61227e565b84610b918560046000610b0b61227e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b612286565b6001905092915050565b6000610baa61227e565b9050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3090614d76565b60405180910390fd5b6000610c4483612bd7565b50505050509050610c9d81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610cf581600c54612c3f90919063ffffffff16565b600c81905550610d1083600d54612b7990919063ffffffff16565b600d81905550505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d4961227e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90614c96565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5090614cf6565b60405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edd90614c16565b60405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600b54831115610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290614c36565b60405180910390fd5b8161100b576000610ffb84612bd7565b5050505050905080915050611022565b600061101684612bd7565b50505050915050809150505b92915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661108f61227e565b73ffffffffffffffffffffffffffffffffffffffff1614806111055750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110ed61227e565b73ffffffffffffffffffffffffffffffffffffffff16145b61110e57600080fd5b60006111193061122f565b905061112481612c89565b50565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61118561227e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120990614c96565b60405180910390fd5b80601360026101000a81548160ff02191690831515021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112ca57600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611315565b611312600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a68565b90505b919050565b61132261227e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690614c96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61147561227e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f990614c96565b60405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661158e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158590614cd6565b60405180910390fd5b60005b600a80549050811015611773578173ffffffffffffffffffffffffffffffffffffffff16600a82815481106115c9576115c86151b7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561176057600a6001600a805490506116249190614f7c565b81548110611635576116346151b7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a8281548110611674576116736151b7565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a80548061172657611725615188565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611773565b808061176b906150b2565b915050611591565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600f80546117af90615080565b80601f01602080910402602001604051908101604052809291908181526020018280546117db90615080565b80156118285780601f106117fd57610100808354040283529160200191611828565b820191906000526020600020905b81548152906001019060200180831161180b57829003601f168201915b5050505050905090565b60006118f561183f61227e565b846118f085604051806060016040528060258152602001615743602591396004600061186961227e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa09092919063ffffffff16565b612286565b6001905092915050565b600061191361190c61227e565b8484612451565b6001905092915050565b61192561227e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a990614c96565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b1861227e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90614c96565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c2e30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b54612286565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611c7457600080fd5b505afa158015611c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cac919061443e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611d0e57600080fd5b505afa158015611d22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d46919061443e565b6040518363ffffffff1660e01b8152600401611d63929190614a6b565b602060405180830381600087803b158015611d7d57600080fd5b505af1158015611d91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db5919061443e565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611e3e3061122f565b600080611e49611777565b426040518863ffffffff1660e01b8152600401611e6b96959493929190614abd565b6060604051808303818588803b158015611e8457600080fd5b505af1158015611e98573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ebd9190614645565b5050506001601360016101000a81548160ff0219169083151502179055506001601360026101000a81548160ff021916908315150217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611f95929190614a94565b602060405180830381600087803b158015611faf57600080fd5b505af1158015611fc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe791906145ab565b5050565b611ff361227e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207790614c96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e790614bb6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166121ee61227e565b73ffffffffffffffffffffffffffffffffffffffff1614806122645750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661224c61227e565b73ffffffffffffffffffffffffffffffffffffffff16145b61226d57600080fd5b600047905061227b81612f11565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ed90614d56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235d90614bd6565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124449190614db6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b890614d16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252890614b76565b60405180910390fd5b60008111612574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256b90614cb6565b60405180910390fd5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f890614d96565b60405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561268e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268590614d96565b60405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561271b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271290614d96565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156127c65750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561280557506127d5611777565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156129015760175481111561284f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284690614c56565b60405180910390fd5b601360029054906101000a900460ff16156128b05742600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106128af57600080fd5b5b601e426128bd9190614e9b565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600061290c3061122f565b9050601754811061291d5760175490505b60006018548210159050601360009054906101000a900460ff161580156129505750601360019054906101000a900460ff165b80156129595750805b80156129b35750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156129db576129c182612c89565b600047905060008111156129d9576129d847612f11565b5b505b600060019050600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a825750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a8c57600090505b612a988686868461300c565b505050505050565b6000838311158290612ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adf9190614b54565b60405180910390fd5b5060008385612af79190614f7c565b9050809150509392505050565b6000806000612b1161331d565b91509150612b288183612b2f90919063ffffffff16565b9250505090565b6000612b7183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135d0565b905092915050565b6000808284612b889190614e9b565b905083811015612bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc490614bf6565b60405180910390fd5b8091505092915050565b6000806000806000806000806000612bf48a601154601254613633565b9250925092506000612c04612b04565b90506000806000612c178e8787876136db565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612c8183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612aa0565b905092915050565b6001601360006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612cc157612cc06151e6565b5b604051908082528060200260200182016040528015612cef5781602001602082028036833780820191505090505b5090503081600081518110612d0757612d066151b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612da957600080fd5b505afa158015612dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de1919061443e565b81600181518110612df557612df46151b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e5c30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612286565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ec0959493929190614dd1565b600060405180830381600087803b158015612eda57600080fd5b505af1158015612eee573d6000803e3d6000fd5b50505050506000601360006101000a81548160ff02191690831515021790555050565b601360039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612f61600284612b2f90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612f8c573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612fdd600284612b2f90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613008573d6000803e3d6000fd5b5050565b8061301a57613019613776565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130bd5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130d2576130cd8484846137a7565b613309565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131755750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561318a57613185848484613a07565b613308565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561322e5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132435761323e848484613c67565b613307565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132e55750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132fa576132f5848484613e32565b613306565b613305848484613c67565b5b5b5b5b8061331757613316614127565b5b50505050565b6000806000600c5490506000600b54905060005b60078054905081101561359357826002600060078481548110613357576133566151b7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061344557508160036000600784815481106133dd576133dc6151b7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561345c57600c54600b54945094505050506135cc565b6134ec6002600060078481548110613477576134766151b7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612c3f90919063ffffffff16565b925061357e6003600060078481548110613509576135086151b7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612c3f90919063ffffffff16565b9150808061358b906150b2565b915050613331565b506135ab600b54600c54612b2f90919063ffffffff16565b8210156135c357600c54600b549350935050506135cc565b81819350935050505b9091565b60008083118290613617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161360e9190614b54565b60405180910390fd5b50600083856136269190614ef1565b9050809150509392505050565b60008060008061365f6064613651888a61413990919063ffffffff16565b612b2f90919063ffffffff16565b90506000613689606461367b888b61413990919063ffffffff16565b612b2f90919063ffffffff16565b905060006136c4826136b6856136a8878e612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806136f4858961413990919063ffffffff16565b9050600061370b868961413990919063ffffffff16565b90506000613722878961413990919063ffffffff16565b9050600061375d8261374f856137418789612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600060115414801561378a57506000601254145b15613794576137a5565b600060118190555060006012819055505b565b6000806000806000806137b987612bd7565b95509550955095509550955061381787600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138ac86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061394185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061398d816141b4565b6139978483614359565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139f49190614db6565b60405180910390a3505050505050505050565b600080600080600080613a1987612bd7565b955095509550955095509550613a7786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b0c83600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ba185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bed816141b4565b613bf78483614359565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c549190614db6565b60405180910390a3505050505050505050565b600080600080600080613c7987612bd7565b955095509550955095509550613cd786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d6c85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613db8816141b4565b613dc28483614359565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613e1f9190614db6565b60405180910390a3505050505050505050565b600080600080600080613e4487612bd7565b955095509550955095509550613ea287600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f3786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fcc83600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061406185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140ad816141b4565b6140b78483614359565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516141149190614db6565b60405180910390a3505050505050505050565b60046011819055506006601281905550565b60008083141561414c57600090506141ae565b6000828461415a9190614f22565b90508284826141699190614ef1565b146141a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141a090614c76565b60405180910390fd5b809150505b92915050565b60006141be612b04565b905060006141d5828461413990919063ffffffff16565b905061422981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156143545761431083600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61436e82600c54612c3f90919063ffffffff16565b600c8190555061438981600d54612b7990919063ffffffff16565b600d819055505050565b6000813590506143a2816156d5565b92915050565b6000815190506143b7816156d5565b92915050565b6000813590506143cc816156ec565b92915050565b6000815190506143e1816156ec565b92915050565b6000813590506143f681615703565b92915050565b60008151905061440b81615703565b92915050565b60006020828403121561442757614426615215565b5b600061443584828501614393565b91505092915050565b60006020828403121561445457614453615215565b5b6000614462848285016143a8565b91505092915050565b6000806040838503121561448257614481615215565b5b600061449085828601614393565b92505060206144a185828601614393565b9150509250929050565b6000806000606084860312156144c4576144c3615215565b5b60006144d286828701614393565b93505060206144e386828701614393565b92505060406144f4868287016143e7565b9150509250925092565b6000806040838503121561451557614514615215565b5b600061452385828601614393565b9250506020614534858286016143bd565b9150509250929050565b6000806040838503121561455557614554615215565b5b600061456385828601614393565b9250506020614574858286016143e7565b9150509250929050565b60006020828403121561459457614593615215565b5b60006145a2848285016143bd565b91505092915050565b6000602082840312156145c1576145c0615215565b5b60006145cf848285016143d2565b91505092915050565b6000602082840312156145ee576145ed615215565b5b60006145fc848285016143e7565b91505092915050565b6000806040838503121561461c5761461b615215565b5b600061462a858286016143e7565b925050602061463b858286016143bd565b9150509250929050565b60008060006060848603121561465e5761465d615215565b5b600061466c868287016143fc565b935050602061467d868287016143fc565b925050604061468e868287016143fc565b9150509250925092565b60006146a483836146bf565b60208301905092915050565b6146b981614fc2565b82525050565b6146c881614fb0565b82525050565b6146d781614fb0565b82525050565b60006146e882614e56565b6146f28185614e79565b93506146fd83614e46565b8060005b8381101561472e5781516147158882614698565b975061472083614e6c565b925050600181019050614701565b5085935050505092915050565b61474481614fd4565b82525050565b61475381615017565b82525050565b6147628161503b565b82525050565b600061477382614e61565b61477d8185614e8a565b935061478d81856020860161504d565b6147968161521a565b840191505092915050565b60006147ae602383614e8a565b91506147b98261522b565b604082019050919050565b60006147d1602a83614e8a565b91506147dc8261527a565b604082019050919050565b60006147f4602683614e8a565b91506147ff826152c9565b604082019050919050565b6000614817602283614e8a565b915061482282615318565b604082019050919050565b600061483a601b83614e8a565b915061484582615367565b602082019050919050565b600061485d601e83614e8a565b915061486882615390565b602082019050919050565b6000614880601f83614e8a565b915061488b826153b9565b602082019050919050565b60006148a3602883614e8a565b91506148ae826153e2565b604082019050919050565b60006148c6602183614e8a565b91506148d182615431565b604082019050919050565b60006148e9602083614e8a565b91506148f482615480565b602082019050919050565b600061490c602983614e8a565b9150614917826154a9565b604082019050919050565b600061492f601a83614e8a565b915061493a826154f8565b602082019050919050565b6000614952602483614e8a565b915061495d82615521565b604082019050919050565b6000614975602583614e8a565b915061498082615570565b604082019050919050565b6000614998602c83614e8a565b91506149a3826155bf565b604082019050919050565b60006149bb602483614e8a565b91506149c68261560e565b604082019050919050565b60006149de602c83614e8a565b91506149e98261565d565b604082019050919050565b6000614a01601083614e8a565b9150614a0c826156ac565b602082019050919050565b614a2081615000565b82525050565b614a2f8161500a565b82525050565b6000602082019050614a4a60008301846146ce565b92915050565b6000602082019050614a6560008301846146b0565b92915050565b6000604082019050614a8060008301856146ce565b614a8d60208301846146ce565b9392505050565b6000604082019050614aa960008301856146ce565b614ab66020830184614a17565b9392505050565b600060c082019050614ad260008301896146ce565b614adf6020830188614a17565b614aec6040830187614759565b614af96060830186614759565b614b0660808301856146ce565b614b1360a0830184614a17565b979650505050505050565b6000602082019050614b33600083018461473b565b92915050565b6000602082019050614b4e600083018461474a565b92915050565b60006020820190508181036000830152614b6e8184614768565b905092915050565b60006020820190508181036000830152614b8f816147a1565b9050919050565b60006020820190508181036000830152614baf816147c4565b9050919050565b60006020820190508181036000830152614bcf816147e7565b9050919050565b60006020820190508181036000830152614bef8161480a565b9050919050565b60006020820190508181036000830152614c0f8161482d565b9050919050565b60006020820190508181036000830152614c2f81614850565b9050919050565b60006020820190508181036000830152614c4f81614873565b9050919050565b60006020820190508181036000830152614c6f81614896565b9050919050565b60006020820190508181036000830152614c8f816148b9565b9050919050565b60006020820190508181036000830152614caf816148dc565b9050919050565b60006020820190508181036000830152614ccf816148ff565b9050919050565b60006020820190508181036000830152614cef81614922565b9050919050565b60006020820190508181036000830152614d0f81614945565b9050919050565b60006020820190508181036000830152614d2f81614968565b9050919050565b60006020820190508181036000830152614d4f8161498b565b9050919050565b60006020820190508181036000830152614d6f816149ae565b9050919050565b60006020820190508181036000830152614d8f816149d1565b9050919050565b60006020820190508181036000830152614daf816149f4565b9050919050565b6000602082019050614dcb6000830184614a17565b92915050565b600060a082019050614de66000830188614a17565b614df36020830187614759565b8181036040830152614e0581866146dd565b9050614e1460608301856146ce565b614e216080830184614a17565b9695505050505050565b6000602082019050614e406000830184614a26565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614ea682615000565b9150614eb183615000565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614ee657614ee56150fb565b5b828201905092915050565b6000614efc82615000565b9150614f0783615000565b925082614f1757614f1661512a565b5b828204905092915050565b6000614f2d82615000565b9150614f3883615000565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f7157614f706150fb565b5b828202905092915050565b6000614f8782615000565b9150614f9283615000565b925082821015614fa557614fa46150fb565b5b828203905092915050565b6000614fbb82614fe0565b9050919050565b6000614fcd82614fe0565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061502282615029565b9050919050565b600061503482614fe0565b9050919050565b600061504682615000565b9050919050565b60005b8381101561506b578082015181840152602081019050615050565b8381111561507a576000848401525b50505050565b6000600282049050600182168061509857607f821691505b602082108114156150ac576150ab615159565b5b50919050565b60006150bd82615000565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156150f0576150ef6150fb565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c726561647920626c61636b6c69737465640000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000600082015250565b7f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f7560008201527f7465722e00000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008201527f616e20332062696c6c696f6e0000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b7f4265657020426f6f70202d204754464f00000000000000000000000000000000600082015250565b6156de81614fb0565b81146156e957600080fd5b50565b6156f581614fd4565b811461570057600080fd5b50565b61570c81615000565b811461571757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c3ab0c67b481338e1fd68c33072fa40b251e9a3da4f1eb90b01ddfd50217e60c64736f6c634300080600330000000000000000000000000b29f56cdbc898a51293eb0f3197c87677216c12000000000000000000000000a85c04f088ff01dcb30e9ddfdd1b7e39f4eaff02

Deployed Bytecode

0x6080604052600436106101e75760003560e01c80635342acb411610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610727578063e8078d9414610764578063f2fde38b1461077b578063f4293890146107a4576101ee565b8063a9059cbb14610659578063af9549e014610696578063b425bac3146106bf578063cba0e996146106ea576101ee565b80637ded4d6a116100d15780637ded4d6a1461059d5780638da5cb5b146105c657806395d89b41146105f1578063a457c2d71461061c576101ee565b80635342acb4146104e35780635932ead11461052057806370a0823114610549578063715018a614610586576101ee565b8063313ce5671161017a5780634303443d116101495780634303443d1461043b5780634549b0391461046457806349bd5a5e146104a157806351bc3c85146104cc576101ee565b8063313ce5671461037f57806339509351146103aa5780633bd5d173146103e75780634144d9e414610410576101ee565b806318160ddd116101b657806318160ddd146102b15780631bbae6e0146102dc57806323b872dd146103055780632d83811914610342576101ee565b806306fdde03146101f3578063095ea7b31461021e57806313114a9d1461025b5780631694505e14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b506102086107bb565b6040516102159190614b54565b60405180910390f35b34801561022a57600080fd5b506102456004803603810190610240919061453e565b61084d565b6040516102529190614b1e565b60405180910390f35b34801561026757600080fd5b5061027061086b565b60405161027d9190614db6565b60405180910390f35b34801561029257600080fd5b5061029b610875565b6040516102a89190614b39565b60405180910390f35b3480156102bd57600080fd5b506102c661089b565b6040516102d39190614db6565b60405180910390f35b3480156102e857600080fd5b5061030360048036038101906102fe91906145d8565b6108a5565b005b34801561031157600080fd5b5061032c600480360381019061032791906144ab565b61098f565b6040516103399190614b1e565b60405180910390f35b34801561034e57600080fd5b50610369600480360381019061036491906145d8565b610a68565b6040516103769190614db6565b60405180910390f35b34801561038b57600080fd5b50610394610ad6565b6040516103a19190614e2b565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc919061453e565b610aed565b6040516103de9190614b1e565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906145d8565b610ba0565b005b34801561041c57600080fd5b50610425610d1b565b6040516104329190614a50565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d9190614411565b610d41565b005b34801561047057600080fd5b5061048b60048036038101906104869190614605565b610fa4565b6040516104989190614db6565b60405180910390f35b3480156104ad57600080fd5b506104b6611028565b6040516104c39190614a35565b60405180910390f35b3480156104d857600080fd5b506104e161104e565b005b3480156104ef57600080fd5b5061050a60048036038101906105059190614411565b611127565b6040516105179190614b1e565b60405180910390f35b34801561052c57600080fd5b506105476004803603810190610542919061457e565b61117d565b005b34801561055557600080fd5b50610570600480360381019061056b9190614411565b61122f565b60405161057d9190614db6565b60405180910390f35b34801561059257600080fd5b5061059b61131a565b005b3480156105a957600080fd5b506105c460048036038101906105bf9190614411565b61146d565b005b3480156105d257600080fd5b506105db611777565b6040516105e89190614a35565b60405180910390f35b3480156105fd57600080fd5b506106066117a0565b6040516106139190614b54565b60405180910390f35b34801561062857600080fd5b50610643600480360381019061063e919061453e565b611832565b6040516106509190614b1e565b60405180910390f35b34801561066557600080fd5b50610680600480360381019061067b919061453e565b6118ff565b60405161068d9190614b1e565b60405180910390f35b3480156106a257600080fd5b506106bd60048036038101906106b891906144fe565b61191d565b005b3480156106cb57600080fd5b506106d4611a0d565b6040516106e19190614a50565b60405180910390f35b3480156106f657600080fd5b50610711600480360381019061070c9190614411565b611a33565b60405161071e9190614b1e565b60405180910390f35b34801561073357600080fd5b5061074e6004803603810190610749919061446b565b611a89565b60405161075b9190614db6565b60405180910390f35b34801561077057600080fd5b50610779611b10565b005b34801561078757600080fd5b506107a2600480360381019061079d9190614411565b611feb565b005b3480156107b057600080fd5b506107b96121ad565b005b6060600e80546107ca90615080565b80601f01602080910402602001604051908101604052809291908181526020018280546107f690615080565b80156108435780601f1061081857610100808354040283529160200191610843565b820191906000526020600020905b81548152906001019060200180831161082657829003601f168201915b5050505050905090565b600061086161085a61227e565b8484612286565b6001905092915050565b6000600d54905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b6108ad61227e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461093a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093190614c96565b60405180910390fd5b6729a2241af62c0000811015610985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097c90614d36565b60405180910390fd5b8060178190555050565b600061099c848484612451565b610a5d846109a861227e565b610a588560405180606001604052806028815260200161571b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a0e61227e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa09092919063ffffffff16565b612286565b600190509392505050565b6000600c54821115610aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa690614b96565b60405180910390fd5b6000610ab9612b04565b9050610ace8184612b2f90919063ffffffff16565b915050919050565b6000601060009054906101000a900460ff16905090565b6000610b96610afa61227e565b84610b918560046000610b0b61227e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b612286565b6001905092915050565b6000610baa61227e565b9050600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3090614d76565b60405180910390fd5b6000610c4483612bd7565b50505050509050610c9d81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610cf581600c54612c3f90919063ffffffff16565b600c81905550610d1083600d54612b7990919063ffffffff16565b600d81905550505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d4961227e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90614c96565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5090614cf6565b60405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edd90614c16565b60405180910390fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600b54831115610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290614c36565b60405180910390fd5b8161100b576000610ffb84612bd7565b5050505050905080915050611022565b600061101684612bd7565b50505050915050809150505b92915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661108f61227e565b73ffffffffffffffffffffffffffffffffffffffff1614806111055750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110ed61227e565b73ffffffffffffffffffffffffffffffffffffffff16145b61110e57600080fd5b60006111193061122f565b905061112481612c89565b50565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61118561227e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120990614c96565b60405180910390fd5b80601360026101000a81548160ff02191690831515021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112ca57600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611315565b611312600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a68565b90505b919050565b61132261227e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690614c96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61147561227e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f990614c96565b60405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661158e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158590614cd6565b60405180910390fd5b60005b600a80549050811015611773578173ffffffffffffffffffffffffffffffffffffffff16600a82815481106115c9576115c86151b7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561176057600a6001600a805490506116249190614f7c565b81548110611635576116346151b7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a8281548110611674576116736151b7565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a80548061172657611725615188565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611773565b808061176b906150b2565b915050611591565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600f80546117af90615080565b80601f01602080910402602001604051908101604052809291908181526020018280546117db90615080565b80156118285780601f106117fd57610100808354040283529160200191611828565b820191906000526020600020905b81548152906001019060200180831161180b57829003601f168201915b5050505050905090565b60006118f561183f61227e565b846118f085604051806060016040528060258152602001615743602591396004600061186961227e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa09092919063ffffffff16565b612286565b6001905092915050565b600061191361190c61227e565b8484612451565b6001905092915050565b61192561227e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a990614c96565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601360039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b1861227e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90614c96565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c2e30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b54612286565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611c7457600080fd5b505afa158015611c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cac919061443e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611d0e57600080fd5b505afa158015611d22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d46919061443e565b6040518363ffffffff1660e01b8152600401611d63929190614a6b565b602060405180830381600087803b158015611d7d57600080fd5b505af1158015611d91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db5919061443e565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611e3e3061122f565b600080611e49611777565b426040518863ffffffff1660e01b8152600401611e6b96959493929190614abd565b6060604051808303818588803b158015611e8457600080fd5b505af1158015611e98573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ebd9190614645565b5050506001601360016101000a81548160ff0219169083151502179055506001601360026101000a81548160ff021916908315150217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611f95929190614a94565b602060405180830381600087803b158015611faf57600080fd5b505af1158015611fc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe791906145ab565b5050565b611ff361227e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207790614c96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e790614bb6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166121ee61227e565b73ffffffffffffffffffffffffffffffffffffffff1614806122645750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661224c61227e565b73ffffffffffffffffffffffffffffffffffffffff16145b61226d57600080fd5b600047905061227b81612f11565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ed90614d56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235d90614bd6565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124449190614db6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b890614d16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252890614b76565b60405180910390fd5b60008111612574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256b90614cb6565b60405180910390fd5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f890614d96565b60405180910390fd5b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561268e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268590614d96565b60405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561271b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271290614d96565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156127c65750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561280557506127d5611777565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156129015760175481111561284f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284690614c56565b60405180910390fd5b601360029054906101000a900460ff16156128b05742600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106128af57600080fd5b5b601e426128bd9190614e9b565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600061290c3061122f565b9050601754811061291d5760175490505b60006018548210159050601360009054906101000a900460ff161580156129505750601360019054906101000a900460ff165b80156129595750805b80156129b35750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156129db576129c182612c89565b600047905060008111156129d9576129d847612f11565b5b505b600060019050600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a825750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a8c57600090505b612a988686868461300c565b505050505050565b6000838311158290612ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adf9190614b54565b60405180910390fd5b5060008385612af79190614f7c565b9050809150509392505050565b6000806000612b1161331d565b91509150612b288183612b2f90919063ffffffff16565b9250505090565b6000612b7183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135d0565b905092915050565b6000808284612b889190614e9b565b905083811015612bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc490614bf6565b60405180910390fd5b8091505092915050565b6000806000806000806000806000612bf48a601154601254613633565b9250925092506000612c04612b04565b90506000806000612c178e8787876136db565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612c8183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612aa0565b905092915050565b6001601360006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612cc157612cc06151e6565b5b604051908082528060200260200182016040528015612cef5781602001602082028036833780820191505090505b5090503081600081518110612d0757612d066151b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612da957600080fd5b505afa158015612dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de1919061443e565b81600181518110612df557612df46151b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e5c30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612286565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ec0959493929190614dd1565b600060405180830381600087803b158015612eda57600080fd5b505af1158015612eee573d6000803e3d6000fd5b50505050506000601360006101000a81548160ff02191690831515021790555050565b601360039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612f61600284612b2f90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612f8c573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc612fdd600284612b2f90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015613008573d6000803e3d6000fd5b5050565b8061301a57613019613776565b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130bd5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130d2576130cd8484846137a7565b613309565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131755750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561318a57613185848484613a07565b613308565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561322e5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132435761323e848484613c67565b613307565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132e55750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132fa576132f5848484613e32565b613306565b613305848484613c67565b5b5b5b5b8061331757613316614127565b5b50505050565b6000806000600c5490506000600b54905060005b60078054905081101561359357826002600060078481548110613357576133566151b7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061344557508160036000600784815481106133dd576133dc6151b7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561345c57600c54600b54945094505050506135cc565b6134ec6002600060078481548110613477576134766151b7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612c3f90919063ffffffff16565b925061357e6003600060078481548110613509576135086151b7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612c3f90919063ffffffff16565b9150808061358b906150b2565b915050613331565b506135ab600b54600c54612b2f90919063ffffffff16565b8210156135c357600c54600b549350935050506135cc565b81819350935050505b9091565b60008083118290613617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161360e9190614b54565b60405180910390fd5b50600083856136269190614ef1565b9050809150509392505050565b60008060008061365f6064613651888a61413990919063ffffffff16565b612b2f90919063ffffffff16565b90506000613689606461367b888b61413990919063ffffffff16565b612b2f90919063ffffffff16565b905060006136c4826136b6856136a8878e612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806136f4858961413990919063ffffffff16565b9050600061370b868961413990919063ffffffff16565b90506000613722878961413990919063ffffffff16565b9050600061375d8261374f856137418789612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b612c3f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600060115414801561378a57506000601254145b15613794576137a5565b600060118190555060006012819055505b565b6000806000806000806137b987612bd7565b95509550955095509550955061381787600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138ac86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061394185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061398d816141b4565b6139978483614359565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139f49190614db6565b60405180910390a3505050505050505050565b600080600080600080613a1987612bd7565b955095509550955095509550613a7786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b0c83600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ba185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bed816141b4565b613bf78483614359565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c549190614db6565b60405180910390a3505050505050505050565b600080600080600080613c7987612bd7565b955095509550955095509550613cd786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d6c85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613db8816141b4565b613dc28483614359565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613e1f9190614db6565b60405180910390a3505050505050505050565b600080600080600080613e4487612bd7565b955095509550955095509550613ea287600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f3786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c3f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fcc83600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061406185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140ad816141b4565b6140b78483614359565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516141149190614db6565b60405180910390a3505050505050505050565b60046011819055506006601281905550565b60008083141561414c57600090506141ae565b6000828461415a9190614f22565b90508284826141699190614ef1565b146141a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141a090614c76565b60405180910390fd5b809150505b92915050565b60006141be612b04565b905060006141d5828461413990919063ffffffff16565b905061422981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156143545761431083600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b7990919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61436e82600c54612c3f90919063ffffffff16565b600c8190555061438981600d54612b7990919063ffffffff16565b600d819055505050565b6000813590506143a2816156d5565b92915050565b6000815190506143b7816156d5565b92915050565b6000813590506143cc816156ec565b92915050565b6000815190506143e1816156ec565b92915050565b6000813590506143f681615703565b92915050565b60008151905061440b81615703565b92915050565b60006020828403121561442757614426615215565b5b600061443584828501614393565b91505092915050565b60006020828403121561445457614453615215565b5b6000614462848285016143a8565b91505092915050565b6000806040838503121561448257614481615215565b5b600061449085828601614393565b92505060206144a185828601614393565b9150509250929050565b6000806000606084860312156144c4576144c3615215565b5b60006144d286828701614393565b93505060206144e386828701614393565b92505060406144f4868287016143e7565b9150509250925092565b6000806040838503121561451557614514615215565b5b600061452385828601614393565b9250506020614534858286016143bd565b9150509250929050565b6000806040838503121561455557614554615215565b5b600061456385828601614393565b9250506020614574858286016143e7565b9150509250929050565b60006020828403121561459457614593615215565b5b60006145a2848285016143bd565b91505092915050565b6000602082840312156145c1576145c0615215565b5b60006145cf848285016143d2565b91505092915050565b6000602082840312156145ee576145ed615215565b5b60006145fc848285016143e7565b91505092915050565b6000806040838503121561461c5761461b615215565b5b600061462a858286016143e7565b925050602061463b858286016143bd565b9150509250929050565b60008060006060848603121561465e5761465d615215565b5b600061466c868287016143fc565b935050602061467d868287016143fc565b925050604061468e868287016143fc565b9150509250925092565b60006146a483836146bf565b60208301905092915050565b6146b981614fc2565b82525050565b6146c881614fb0565b82525050565b6146d781614fb0565b82525050565b60006146e882614e56565b6146f28185614e79565b93506146fd83614e46565b8060005b8381101561472e5781516147158882614698565b975061472083614e6c565b925050600181019050614701565b5085935050505092915050565b61474481614fd4565b82525050565b61475381615017565b82525050565b6147628161503b565b82525050565b600061477382614e61565b61477d8185614e8a565b935061478d81856020860161504d565b6147968161521a565b840191505092915050565b60006147ae602383614e8a565b91506147b98261522b565b604082019050919050565b60006147d1602a83614e8a565b91506147dc8261527a565b604082019050919050565b60006147f4602683614e8a565b91506147ff826152c9565b604082019050919050565b6000614817602283614e8a565b915061482282615318565b604082019050919050565b600061483a601b83614e8a565b915061484582615367565b602082019050919050565b600061485d601e83614e8a565b915061486882615390565b602082019050919050565b6000614880601f83614e8a565b915061488b826153b9565b602082019050919050565b60006148a3602883614e8a565b91506148ae826153e2565b604082019050919050565b60006148c6602183614e8a565b91506148d182615431565b604082019050919050565b60006148e9602083614e8a565b91506148f482615480565b602082019050919050565b600061490c602983614e8a565b9150614917826154a9565b604082019050919050565b600061492f601a83614e8a565b915061493a826154f8565b602082019050919050565b6000614952602483614e8a565b915061495d82615521565b604082019050919050565b6000614975602583614e8a565b915061498082615570565b604082019050919050565b6000614998602c83614e8a565b91506149a3826155bf565b604082019050919050565b60006149bb602483614e8a565b91506149c68261560e565b604082019050919050565b60006149de602c83614e8a565b91506149e98261565d565b604082019050919050565b6000614a01601083614e8a565b9150614a0c826156ac565b602082019050919050565b614a2081615000565b82525050565b614a2f8161500a565b82525050565b6000602082019050614a4a60008301846146ce565b92915050565b6000602082019050614a6560008301846146b0565b92915050565b6000604082019050614a8060008301856146ce565b614a8d60208301846146ce565b9392505050565b6000604082019050614aa960008301856146ce565b614ab66020830184614a17565b9392505050565b600060c082019050614ad260008301896146ce565b614adf6020830188614a17565b614aec6040830187614759565b614af96060830186614759565b614b0660808301856146ce565b614b1360a0830184614a17565b979650505050505050565b6000602082019050614b33600083018461473b565b92915050565b6000602082019050614b4e600083018461474a565b92915050565b60006020820190508181036000830152614b6e8184614768565b905092915050565b60006020820190508181036000830152614b8f816147a1565b9050919050565b60006020820190508181036000830152614baf816147c4565b9050919050565b60006020820190508181036000830152614bcf816147e7565b9050919050565b60006020820190508181036000830152614bef8161480a565b9050919050565b60006020820190508181036000830152614c0f8161482d565b9050919050565b60006020820190508181036000830152614c2f81614850565b9050919050565b60006020820190508181036000830152614c4f81614873565b9050919050565b60006020820190508181036000830152614c6f81614896565b9050919050565b60006020820190508181036000830152614c8f816148b9565b9050919050565b60006020820190508181036000830152614caf816148dc565b9050919050565b60006020820190508181036000830152614ccf816148ff565b9050919050565b60006020820190508181036000830152614cef81614922565b9050919050565b60006020820190508181036000830152614d0f81614945565b9050919050565b60006020820190508181036000830152614d2f81614968565b9050919050565b60006020820190508181036000830152614d4f8161498b565b9050919050565b60006020820190508181036000830152614d6f816149ae565b9050919050565b60006020820190508181036000830152614d8f816149d1565b9050919050565b60006020820190508181036000830152614daf816149f4565b9050919050565b6000602082019050614dcb6000830184614a17565b92915050565b600060a082019050614de66000830188614a17565b614df36020830187614759565b8181036040830152614e0581866146dd565b9050614e1460608301856146ce565b614e216080830184614a17565b9695505050505050565b6000602082019050614e406000830184614a26565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614ea682615000565b9150614eb183615000565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614ee657614ee56150fb565b5b828201905092915050565b6000614efc82615000565b9150614f0783615000565b925082614f1757614f1661512a565b5b828204905092915050565b6000614f2d82615000565b9150614f3883615000565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f7157614f706150fb565b5b828202905092915050565b6000614f8782615000565b9150614f9283615000565b925082821015614fa557614fa46150fb565b5b828203905092915050565b6000614fbb82614fe0565b9050919050565b6000614fcd82614fe0565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061502282615029565b9050919050565b600061503482614fe0565b9050919050565b600061504682615000565b9050919050565b60005b8381101561506b578082015181840152602081019050615050565b8381111561507a576000848401525b50505050565b6000600282049050600182168061509857607f821691505b602082108114156150ac576150ab615159565b5b50919050565b60006150bd82615000565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156150f0576150ef6150fb565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c726561647920626c61636b6c69737465640000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000600082015250565b7f57652063616e206e6f7420626c61636b6c69737420556e697377617020726f7560008201527f7465722e00000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008201527f616e20332062696c6c696f6e0000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b7f4265657020426f6f70202d204754464f00000000000000000000000000000000600082015250565b6156de81614fb0565b81146156e957600080fd5b50565b6156f581614fd4565b811461570057600080fd5b50565b61570c81615000565b811461571757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220c3ab0c67b481338e1fd68c33072fa40b251e9a3da4f1eb90b01ddfd50217e60c64736f6c63430008060033

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

0000000000000000000000000b29f56cdbc898a51293eb0f3197c87677216c12000000000000000000000000a85c04f088ff01dcb30e9ddfdd1b7e39f4eaff02

-----Decoded View---------------
Arg [0] : devWalletAddress (address): 0x0b29F56CDbc898A51293eB0F3197c87677216C12
Arg [1] : marketingWalletAddress (address): 0xA85c04f088Ff01dcB30E9ddFdD1B7E39f4EAfF02

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000b29f56cdbc898a51293eb0f3197c87677216c12
Arg [1] : 000000000000000000000000a85c04f088ff01dcb30e9ddfdd1b7e39f4eaff02


Deployed Bytecode Sourcemap

15852:18996:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18354:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19358:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21650:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17297:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18667:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34611:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19543:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22658:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18564:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19884:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21757:405;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17238:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20714:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22174:472;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17349:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27785:256;;;;;;;;;;;;;:::i;:::-;;23983:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28337:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18782:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6675:160;;;;;;;;;;;;;:::i;:::-;;21098:540;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6425:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18457:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20126:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19004:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20549:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17187:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20419:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19195:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22947:723;;;;;;;;;;;;;:::i;:::-;;6847:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28061:256;;;;;;;;;;;;;:::i;:::-;;18354:91;18391:13;18428:5;18421:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18354:91;:::o;19358:173::-;19433:4;19454:39;19463:12;:10;:12::i;:::-;19477:7;19486:6;19454:8;:39::i;:::-;19515:4;19508:11;;19358:173;;;;:::o;21650:95::-;21692:7;21723:10;;21716:17;;21650:95;:::o;17297:41::-;;;;;;;;;;;;;:::o;18667:103::-;18720:7;18751;;18744:14;;18667:103;:::o;34611:230::-;6578:12;:10;:12::i;:::-;6568:22;;:6;;;;;;;;;;:22;;;6560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34717:20:::1;34701:11;:37;;34693:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;34818:11;34803:12;:26;;;;34611:230:::0;:::o;19543:329::-;19641:4;19662:36;19672:6;19680:9;19691:6;19662:9;:36::i;:::-;19713:121;19722:6;19730:12;:10;:12::i;:::-;19744:89;19782:6;19744:89;;;;;;;;;;;;;;;;;:11;:19;19756:6;19744:19;;;;;;;;;;;;;;;:33;19764:12;:10;:12::i;:::-;19744:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;19713:8;:121::i;:::-;19856:4;19849:11;;19543:329;;;;;:::o;22658:269::-;22724:7;22767;;22756;:18;;22748:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22836:19;22859:10;:8;:10::i;:::-;22836:33;;22891:24;22903:11;22891:7;:11;;:24;;;;:::i;:::-;22884:31;;;22658:269;;;:::o;18564:91::-;18605:5;18634:9;;;;;;;;;;;18627:16;;18564:91;:::o;19884:230::-;19972:4;19993:83;20002:12;:10;:12::i;:::-;20016:7;20025:50;20064:10;20025:11;:25;20037:12;:10;:12::i;:::-;20025:25;;;;;;;;;;;;;;;:34;20051:7;20025:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19993:8;:83::i;:::-;20098:4;20091:11;;19884:230;;;;:::o;21757:405::-;21813:14;21830:12;:10;:12::i;:::-;21813:29;;21866:11;:19;21878:6;21866:19;;;;;;;;;;;;;;;;;;;;;;;;;21865:20;21857:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;21950:15;21974:19;21985:7;21974:10;:19::i;:::-;21949:44;;;;;;;22026:28;22046:7;22026;:15;22034:6;22026:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;22008:7;:15;22016:6;22008:15;;;;;;;;;;;;;;;:46;;;;22079:20;22091:7;22079;;:11;;:20;;;;:::i;:::-;22069:7;:30;;;;22127:23;22142:7;22127:10;;:14;;:23;;;;:::i;:::-;22114:10;:36;;;;21798:364;;21757:405;:::o;17238:46::-;;;;;;;;;;;;;:::o;20714:372::-;6578:12;:10;:12::i;:::-;6568:22;;:6;;;;;;;;;;:22;;;6560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20813:42:::1;20802:53;;:7;:53;;;;20794:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;20920:17;:26;20938:7;20920:26;;;;;;;;;;;;;;;;;;;;;;;;;20919:27;20911:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21025:4;20996:17;:26;21014:7;20996:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;21044:16;21066:7;21044:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20714:372:::0;:::o;22174:472::-;22264:7;22307;;22296;:18;;22288:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;22370:17;22365:270;;22409:15;22433:19;22444:7;22433:10;:19::i;:::-;22408:44;;;;;;;22478:7;22471:14;;;;;22365:270;22528:23;22559:19;22570:7;22559:10;:19::i;:::-;22526:52;;;;;;;22604:15;22597:22;;;22174:472;;;;;:::o;17349:28::-;;;;;;;;;;;;;:::o;27785:256::-;27855:17;;;;;;;;;;;27839:33;;:12;:10;:12::i;:::-;:33;;;:76;;;;27892:23;;;;;;;;;;;27876:39;;:12;:10;:12::i;:::-;:39;;;27839:76;27831:85;;;;;;27931:23;27957:24;27975:4;27957:9;:24::i;:::-;27931:50;;27996:33;28013:15;27996:16;:33::i;:::-;27816:225;27785:256::o;23983:131::-;24047:4;24075:18;:27;24094:7;24075:27;;;;;;;;;;;;;;;;;;;;;;;;;24068:34;;23983:131;;;:::o;28337:111::-;6578:12;:10;:12::i;:::-;6568:22;;:6;;;;;;;;;;:22;;;6560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28431:5:::1;28413:15;;:23;;;;;;;;;;;;;;;;;;28337:111:::0;:::o;18782:210::-;18848:7;18876:11;:20;18888:7;18876:20;;;;;;;;;;;;;;;;;;;;;;;;;18872:49;;;18905:7;:16;18913:7;18905:16;;;;;;;;;;;;;;;;18898:23;;;;18872:49;18943:37;18963:7;:16;18971:7;18963:16;;;;;;;;;;;;;;;;18943:19;:37::i;:::-;18936:44;;18782:210;;;;:::o;6675:160::-;6578:12;:10;:12::i;:::-;6568:22;;:6;;;;;;;;;;:22;;;6560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6786:1:::1;6749:40;;6770:6;::::0;::::1;;;;;;;;6749:40;;;;;;;;;;;;6821:1;6804:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6675:160::o:0;21098:540::-;6578:12;:10;:12::i;:::-;6568:22;;:6;;;;;;;;;;:22;;;6560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21191:17:::1;:26;21209:7;21191:26;;;;;;;;;;;;;;;;;;;;;;;;;21183:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;21268:9;21263:364;21287:16;:23;;;;21283:1;:27;21263:364;;;21363:7;21340:30;;:16;21357:1;21340:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:30;;;21336:276;;;21417:16;21460:1;21434:16;:23;;;;:27;;;;:::i;:::-;21417:45;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21395:16;21412:1;21395:19;;;;;;;;:::i;:::-;;;;;;;;;;:67;;;;;;;;;;;;;;;;;;21514:5;21485:17;:26;21503:7;21485:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;21542:16;:22;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;21587:5;;21336:276;21312:3;;;;;:::i;:::-;;;;21263:364;;;;21098:540:::0;:::o;6425:87::-;6463:7;6494:6;;;;;;;;;;;6487:13;;6425:87;:::o;18457:95::-;18496:13;18533:7;18526:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18457:95;:::o;20126:281::-;20219:4;20240:129;20249:12;:10;:12::i;:::-;20263:7;20272:96;20311:15;20272:96;;;;;;;;;;;;;;;;;:11;:25;20284:12;:10;:12::i;:::-;20272:25;;;;;;;;;;;;;;;:34;20298:7;20272:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;20240:8;:129::i;:::-;20391:4;20384:11;;20126:281;;;;:::o;19004:179::-;19082:4;19103:42;19113:12;:10;:12::i;:::-;19127:9;19138:6;19103:9;:42::i;:::-;19167:4;19160:11;;19004:179;;;;:::o;20549:145::-;6578:12;:10;:12::i;:::-;6568:22;;:6;;;;;;;;;;:22;;;6560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20674:8:::1;20644:18;:27;20663:7;20644:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;20549:145:::0;;:::o;17187:40::-;;;;;;;;;;;;;:::o;20419:118::-;20477:4;20505:11;:20;20517:7;20505:20;;;;;;;;;;;;;;;;;;;;;;;;;20498:27;;20419:118;;;:::o;19195:151::-;19276:7;19307:11;:18;19319:5;19307:18;;;;;;;;;;;;;;;:27;19326:7;19307:27;;;;;;;;;;;;;;;;19300:34;;19195:151;;;;:::o;22947:723::-;6578:12;:10;:12::i;:::-;6568:22;;:6;;;;;;;;;;:22;;;6560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23007:35:::1;23064:42;23007:100;;23140:16;23122:15;;:34;;;;;;;;;;;;;;;;;;23171:58;23188:4;23203:15;;;;;;;;;;;23221:7;;23171:8;:58::i;:::-;23278:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23260:56;;;23325:4;23332:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23260:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23244:13;;:112;;;;;;;;;;;;;;;;;;23371:15;;;;;;;;;;;:31;;;23410:21;23441:4;23447:24;23465:4;23447:9;:24::i;:::-;23472:1;23474::::0;23476:7:::1;:5;:7::i;:::-;23484:15;23371:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23529:4;23515:11;;:18;;;;;;;;;;;;;;;;;;23566:4;23548:15;;:22;;;;;;;;;;;;;;;;;;23592:13;;;;;;;;;;;23585:29;;;23623:15;;;;;;;;;;;23640:17;23585:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22992:678;22947:723::o:0;6847:260::-;6578:12;:10;:12::i;:::-;6568:22;;:6;;;;;;;;;;:22;;;6560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6960:1:::1;6940:22;;:8;:22;;;;6932:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7054:8;7025:38;;7046:6;::::0;::::1;;;;;;;;7025:38;;;;;;;;;;;;7087:8;7078:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6847:260:::0;:::o;28061:256::-;28131:17;;;;;;;;;;;28115:33;;:12;:10;:12::i;:::-;:33;;;:76;;;;28168:23;;;;;;;;;;;28152:39;;:12;:10;:12::i;:::-;:39;;;28115:76;28107:85;;;;;;28207:26;28236:21;28207:50;;28272:33;28286:18;28272:13;:33::i;:::-;28092:225;28061:256::o;108:123::-;161:15;208:10;193:26;;108:123;:::o;24126:357::-;24240:1;24223:19;;:5;:19;;;;24215:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24325:1;24306:21;;:7;:21;;;;24298:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24413:6;24383:11;:18;24395:5;24383:18;;;;;;;;;;;;;;;:27;24402:7;24383:27;;;;;;;;;;;;;;;:36;;;;24455:7;24439:32;;24448:5;24439:32;;;24464:6;24439:32;;;;;;:::i;:::-;;;;;;;;24126:357;;;:::o;24495:2254::-;24614:1;24596:20;;:6;:20;;;;24588:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24702:1;24681:23;;:9;:23;;;;24673:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;24776:1;24767:6;:10;24759:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24861:17;:28;24879:9;24861:28;;;;;;;;;;;;;;;;;;;;;;;;;24860:29;24852:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;24934:17;:29;24952:10;24934:29;;;;;;;;;;;;;;;;;;;;;;;;;24933:30;24925:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;25008:17;:25;25026:6;25008:25;;;;;;;;;;;;;;;;;;;;;;;;;25007:26;24999:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;25096:13;;;;;;;;;;;25086:23;;:6;:23;;;:64;;;;;25134:15;;;;;;;;;;;25113:37;;:9;:37;;;;25086:64;:88;;;;;25167:7;:5;:7::i;:::-;25154:20;;:9;:20;;;;25086:88;25083:390;;;25213:12;;25203:6;:22;;25195:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;25292:15;;;;;;;;;;;25289:90;;;25363:15;25338:11;:22;25350:9;25338:22;;;;;;;;;;;;;;;;:40;25330:49;;;;;;25289:90;25446:10;25427:15;:30;;;;:::i;:::-;25402:11;:22;25414:9;25402:22;;;;;;;;;;;;;;;:55;;;;25083:390;25491:28;25522:24;25540:4;25522:9;:24::i;:::-;25491:55;;25602:12;;25578:20;:36;25575:111;;25658:12;;25635:35;;25575:111;25714:24;25765:28;;25741:20;:52;;25714:79;;25813:6;;;;;;;;;;;25812:7;:22;;;;;25823:11;;;;;;;;;;;25812:22;:45;;;;;25838:19;25812:45;:72;;;;;25871:13;;;;;;;;;;;25861:23;;:6;:23;;;;25812:72;25808:451;;;25994:38;26011:20;25994:16;:38::i;:::-;26069:26;26098:21;26069:50;;26162:1;26141:18;:22;26138:106;;;26188:36;26202:21;26188:13;:36::i;:::-;26138:106;25886:373;25808:451;26352:12;26367:4;26352:19;;26491:18;:26;26510:6;26491:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;26521:18;:29;26540:9;26521:29;;;;;;;;;;;;;;;;;;;;;;;;;26491:59;26488:113;;;26580:5;26570:15;;26488:113;26690:47;26705:6;26712:9;26722:6;26729:7;26690:14;:47::i;:::-;24573:2176;;;24495:2254;;;:::o;1615:208::-;1701:7;1738:1;1733;:6;;1741:12;1725:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1769:9;1785:1;1781;:5;;;;:::i;:::-;1769:17;;1810:1;1803:8;;;1615:208;;;;;:::o;33803:175::-;33844:7;33869:15;33886;33905:19;:17;:19::i;:::-;33868:56;;;;33946:20;33958:7;33946;:11;;:20;;;;:::i;:::-;33939:27;;;;33803:175;:::o;2125:140::-;2183:7;2214:39;2218:1;2221;2214:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2207:46;;2125:140;;;;:::o;1250:197::-;1308:7;1332:9;1348:1;1344;:5;;;;:::i;:::-;1332:17;;1377:1;1372;:6;;1364:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1434:1;1427:8;;;1250:197;;;;:::o;32378:484::-;32437:7;32446;32455;32464;32473;32482;32507:23;32532:12;32546;32562:38;32574:7;32583;;32592;;32562:11;:38::i;:::-;32506:94;;;;;;32615:19;32638:10;:8;:10::i;:::-;32615:33;;32664:15;32681:23;32706:12;32722:45;32734:7;32743:4;32749;32755:11;32722;:45::i;:::-;32663:104;;;;;;32790:7;32799:15;32816:4;32822:15;32839:4;32845;32782:68;;;;;;;;;;;;;;;;;;;32378:484;;;;;;;:::o;1459:144::-;1517:7;1548:43;1552:1;1555;1548:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1541:50;;1459:144;;;;:::o;26761:656::-;17768:4;17759:6;;:13;;;;;;;;;;;;;;;;;;26906:21:::1;26944:1;26930:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26906:40;;26979:4;26961;26966:1;26961:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;27009:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26999:4;27004:1;26999:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;27048:62;27065:4;27080:15;;;;;;;;;;;27098:11;27048:8;:62::i;:::-;27157:15;;;;;;;;;;;:66;;;27242:11;27272:1;27320:4;27351;27375:15;27157:248;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26827:590;17812:5:::0;17803:6;;:14;;;;;;;;;;;;;;;;;;26761:656;:::o;27437:177::-;27499:17;;;;;;;;;;;:26;;:41;27526:13;27537:1;27526:6;:10;;:13;;;;:::i;:::-;27499:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27555:23;;;;;;;;;;;:32;;:47;27588:13;27599:1;27588:6;:10;;:13;;;;:::i;:::-;27555:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27437:177;:::o;28468:883::-;28584:7;28580:44;;28610:14;:12;:14::i;:::-;28580:44;28645:11;:19;28657:6;28645:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;28669:11;:22;28681:9;28669:22;;;;;;;;;;;;;;;;;;;;;;;;;28668:23;28645:46;28641:637;;;28712:48;28734:6;28742:9;28753:6;28712:21;:48::i;:::-;28641:637;;;28787:11;:19;28799:6;28787:19;;;;;;;;;;;;;;;;;;;;;;;;;28786:20;:46;;;;;28810:11;:22;28822:9;28810:22;;;;;;;;;;;;;;;;;;;;;;;;;28786:46;28782:496;;;28853:46;28873:6;28881:9;28892:6;28853:19;:46::i;:::-;28782:496;;;28926:11;:19;28938:6;28926:19;;;;;;;;;;;;;;;;;;;;;;;;;28925:20;:47;;;;;28950:11;:22;28962:9;28950:22;;;;;;;;;;;;;;;;;;;;;;;;;28949:23;28925:47;28921:357;;;28993:44;29011:6;29019:9;29030:6;28993:17;:44::i;:::-;28921:357;;;29063:11;:19;29075:6;29063:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;29086:11;:22;29098:9;29086:22;;;;;;;;;;;;;;;;;;;;;;;;;29063:45;29059:219;;;29129:48;29151:6;29159:9;29170:6;29129:21;:48::i;:::-;29059:219;;;29218:44;29236:6;29244:9;29255:6;29218:17;:44::i;:::-;29059:219;28921:357;28782:496;28641:637;29298:7;29294:45;;29324:15;:13;:15::i;:::-;29294:45;28468:883;;;;:::o;33990:601::-;34040:7;34049;34073:15;34091:7;;34073:25;;34113:15;34131:7;;34113:25;;34164:9;34159:305;34183:9;:16;;;;34179:1;:20;34159:305;;;34253:7;34229;:21;34237:9;34247:1;34237:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34229:21;;;;;;;;;;;;;;;;:31;:66;;;;34288:7;34264;:21;34272:9;34282:1;34272:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34264:21;;;;;;;;;;;;;;;;:31;34229:66;34225:97;;;34305:7;;34314;;34297:25;;;;;;;;;34225:97;34351:34;34363:7;:21;34371:9;34381:1;34371:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34363:21;;;;;;;;;;;;;;;;34351:7;:11;;:34;;;;:::i;:::-;34341:44;;34414:34;34426:7;:21;34434:9;34444:1;34434:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;34426:21;;;;;;;;;;;;;;;;34414:7;:11;;:34;;;;:::i;:::-;34404:44;;34201:3;;;;;:::i;:::-;;;;34159:305;;;;34492:20;34504:7;;34492;;:11;;:20;;;;:::i;:::-;34482:7;:30;34478:61;;;34522:7;;34531;;34514:25;;;;;;;;34478:61;34562:7;34571;34554:25;;;;;;33990:601;;;:::o;2277:298::-;2363:7;2399:1;2395;:5;2402:12;2387:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2430:9;2446:1;2442;:5;;;;:::i;:::-;2430:17;;2562:1;2555:8;;;2277:298;;;;;:::o;32874:421::-;32966:7;32975;32984;33008:12;33023:28;33047:3;33023:19;33035:6;33023:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;33008:43;;33066:12;33081:28;33105:3;33081:19;33093:6;33081:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;33066:43;;33124:23;33150:37;33182:4;33150:27;33172:4;33150:17;33162:4;33150:7;:11;;:17;;;;:::i;:::-;:21;;:27;;;;:::i;:::-;:31;;:37;;;;:::i;:::-;33124:63;;33255:15;33272:4;33278;33247:36;;;;;;;;;32874:421;;;;;;;:::o;33307:484::-;33416:7;33425;33434;33458:15;33476:24;33488:11;33476:7;:11;;:24;;;;:::i;:::-;33458:42;;33515:12;33530:21;33539:11;33530:4;:8;;:21;;;;:::i;:::-;33515:36;;33566:12;33581:21;33590:11;33581:4;:8;;:21;;;;:::i;:::-;33566:36;;33617:23;33643:37;33675:4;33643:27;33665:4;33643:17;33655:4;33643:7;:11;;:17;;;;:::i;:::-;:21;;:27;;;;:::i;:::-;:31;;:37;;;;:::i;:::-;33617:63;;33748:7;33757:15;33774:4;33740:39;;;;;;;;;;33307:484;;;;;;;;:::o;23690:164::-;23751:1;23740:7;;:12;:28;;;;;23767:1;23756:7;;:12;23740:28;23737:40;;;23770:7;;23737:40;23815:1;23805:7;:11;;;;23841:1;23831:7;:11;;;;23690:164;:::o;30492:579::-;30599:15;30616:23;30641:12;30655:23;30680:12;30694;30710:19;30721:7;30710:10;:19::i;:::-;30598:131;;;;;;;;;;;;30762:28;30782:7;30762;:15;30770:6;30762:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30744:7;:15;30752:6;30744:15;;;;;;;;;;;;;;;:46;;;;30823:28;30843:7;30823;:15;30831:6;30823:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30805:7;:15;30813:6;30805:15;;;;;;;;;;;;;;;:46;;;;30887:39;30910:15;30887:7;:18;30895:9;30887:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30866:7;:18;30874:9;30866:18;;;;;;;;;;;;;;;:60;;;;30942:14;30951:4;30942:8;:14::i;:::-;30972:23;30984:4;30990;30972:11;:23::i;:::-;31032:9;31015:44;;31024:6;31015:44;;;31043:15;31015:44;;;;;;:::i;:::-;;;;;;;;30583:488;;;;;;30492:579;;;:::o;29887:593::-;29992:15;30009:23;30034:12;30048:23;30073:12;30087;30103:19;30114:7;30103:10;:19::i;:::-;29991:131;;;;;;;;;;;;30155:28;30175:7;30155;:15;30163:6;30155:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30137:7;:15;30145:6;30137:15;;;;;;;;;;;;;;;:46;;;;30219:39;30242:15;30219:7;:18;30227:9;30219:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30198:7;:18;30206:9;30198:18;;;;;;;;;;;;;;;:60;;;;30294:39;30317:15;30294:7;:18;30302:9;30294:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;30273:7;:18;30281:9;30273:18;;;;;;;;;;;;;;;:60;;;;30352:14;30361:4;30352:8;:14::i;:::-;30381:23;30393:4;30399;30381:11;:23::i;:::-;30441:9;30424:44;;30433:6;30424:44;;;30452:15;30424:44;;;;;;:::i;:::-;;;;;;;;29976:504;;;;;;29887:593;;;:::o;29363:512::-;29466:15;29483:23;29508:12;29522:23;29547:12;29561;29577:19;29588:7;29577:10;:19::i;:::-;29465:131;;;;;;;;;;;;29629:28;29649:7;29629;:15;29637:6;29629:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;29611:7;:15;29619:6;29611:15;;;;;;;;;;;;;;;:46;;;;29693:39;29716:15;29693:7;:18;29701:9;29693:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;29672:7;:18;29680:9;29672:18;;;;;;;;;;;;;;;:60;;;;29747:14;29756:4;29747:8;:14::i;:::-;29776:23;29788:4;29794;29776:11;:23::i;:::-;29836:9;29819:44;;29828:6;29819:44;;;29847:15;29819:44;;;;;;:::i;:::-;;;;;;;;29450:425;;;;;;29363:512;;;:::o;31083:655::-;31190:15;31207:23;31232:12;31246:23;31271:12;31285;31301:19;31312:7;31301:10;:19::i;:::-;31189:131;;;;;;;;;;;;31353:28;31373:7;31353;:15;31361:6;31353:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31335:7;:15;31343:6;31335:15;;;;;;;;;;;;;;;:46;;;;31414:28;31434:7;31414;:15;31422:6;31414:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;31396:7;:15;31404:6;31396:15;;;;;;;;;;;;;;;:46;;;;31478:39;31501:15;31478:7;:18;31486:9;31478:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31457:7;:18;31465:9;31457:18;;;;;;;;;;;;;;;:60;;;;31553:39;31576:15;31553:7;:18;31561:9;31553:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;31532:7;:18;31540:9;31532:18;;;;;;;;;;;;;;;:60;;;;31610:14;31619:4;31610:8;:14::i;:::-;31639:23;31651:4;31657;31639:11;:23::i;:::-;31699:9;31682:44;;31691:6;31682:44;;;31710:15;31682:44;;;;;;:::i;:::-;;;;;;;;31174:564;;;;;;31083:655;;;:::o;23870:97::-;23928:1;23918:7;:11;;;;23954:1;23944:7;:11;;;;23870:97::o;1835:278::-;1893:7;1926:1;1921;:6;1917:55;;;1955:1;1948:8;;;;1917:55;1988:9;2004:1;2000;:5;;;;:::i;:::-;1988:17;;2037:1;2032;2028;:5;;;;:::i;:::-;:10;2020:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2100:1;2093:8;;;1835:278;;;;;:::o;31750:343::-;31805:19;31828:10;:8;:10::i;:::-;31805:33;;31853:12;31868:21;31877:11;31868:4;:8;;:21;;;;:::i;:::-;31853:36;;31929:32;31956:4;31929:7;:22;31945:4;31929:22;;;;;;;;;;;;;;;;:26;;:32;;;;:::i;:::-;31904:7;:22;31920:4;31904:22;;;;;;;;;;;;;;;:57;;;;31979:11;:26;31999:4;31979:26;;;;;;;;;;;;;;;;;;;;;;;;;31976:105;;;32049:32;32076:4;32049:7;:22;32065:4;32049:22;;;;;;;;;;;;;;;;:26;;:32;;;;:::i;:::-;32024:7;:22;32040:4;32024:22;;;;;;;;;;;;;;;:57;;;;31976:105;31790:303;;31750:343;:::o;32105:159::-;32187:17;32199:4;32187:7;;:11;;:17;;;;:::i;:::-;32177:7;:27;;;;32232:20;32247:4;32232:10;;:14;;:20;;;;:::i;:::-;32219:10;:33;;;;32105:159;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:137::-;494:5;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;500:77;;;;:::o;583:139::-;629:5;667:6;654:20;645:29;;683:33;710:5;683:33;:::i;:::-;635:87;;;;:::o;728:143::-;785:5;816:6;810:13;801:22;;832:33;859:5;832:33;:::i;:::-;791:80;;;;:::o;877:329::-;936:6;985:2;973:9;964:7;960:23;956:32;953:2;;;991:79;;:::i;:::-;953:2;1111:1;1136:53;1181:7;1172:6;1161:9;1157:22;1136:53;:::i;:::-;1126:63;;1082:117;943:263;;;;:::o;1212:351::-;1282:6;1331:2;1319:9;1310:7;1306:23;1302:32;1299:2;;;1337:79;;:::i;:::-;1299:2;1457:1;1482:64;1538:7;1529:6;1518:9;1514:22;1482:64;:::i;:::-;1472:74;;1428:128;1289:274;;;;:::o;1569:474::-;1637:6;1645;1694:2;1682:9;1673:7;1669:23;1665:32;1662:2;;;1700:79;;:::i;:::-;1662:2;1820:1;1845:53;1890:7;1881:6;1870:9;1866:22;1845:53;:::i;:::-;1835:63;;1791:117;1947:2;1973:53;2018:7;2009:6;1998:9;1994:22;1973:53;:::i;:::-;1963:63;;1918:118;1652:391;;;;;:::o;2049:619::-;2126:6;2134;2142;2191:2;2179:9;2170:7;2166:23;2162:32;2159:2;;;2197:79;;:::i;:::-;2159:2;2317:1;2342:53;2387:7;2378:6;2367:9;2363:22;2342:53;:::i;:::-;2332:63;;2288:117;2444:2;2470:53;2515:7;2506:6;2495:9;2491:22;2470:53;:::i;:::-;2460:63;;2415:118;2572:2;2598:53;2643:7;2634:6;2623:9;2619:22;2598:53;:::i;:::-;2588:63;;2543:118;2149:519;;;;;:::o;2674:468::-;2739:6;2747;2796:2;2784:9;2775:7;2771:23;2767:32;2764:2;;;2802:79;;:::i;:::-;2764:2;2922:1;2947:53;2992:7;2983:6;2972:9;2968:22;2947:53;:::i;:::-;2937:63;;2893:117;3049:2;3075:50;3117:7;3108:6;3097:9;3093:22;3075:50;:::i;:::-;3065:60;;3020:115;2754:388;;;;;:::o;3148:474::-;3216:6;3224;3273:2;3261:9;3252:7;3248:23;3244:32;3241:2;;;3279:79;;:::i;:::-;3241:2;3399:1;3424:53;3469:7;3460:6;3449:9;3445:22;3424:53;:::i;:::-;3414:63;;3370:117;3526:2;3552:53;3597:7;3588:6;3577:9;3573:22;3552:53;:::i;:::-;3542:63;;3497:118;3231:391;;;;;:::o;3628:323::-;3684:6;3733:2;3721:9;3712:7;3708:23;3704:32;3701:2;;;3739:79;;:::i;:::-;3701:2;3859:1;3884:50;3926:7;3917:6;3906:9;3902:22;3884:50;:::i;:::-;3874:60;;3830:114;3691:260;;;;:::o;3957:345::-;4024:6;4073:2;4061:9;4052:7;4048:23;4044:32;4041:2;;;4079:79;;:::i;:::-;4041:2;4199:1;4224:61;4277:7;4268:6;4257:9;4253:22;4224:61;:::i;:::-;4214:71;;4170:125;4031:271;;;;:::o;4308:329::-;4367:6;4416:2;4404:9;4395:7;4391:23;4387:32;4384:2;;;4422:79;;:::i;:::-;4384:2;4542:1;4567:53;4612:7;4603:6;4592:9;4588:22;4567:53;:::i;:::-;4557:63;;4513:117;4374:263;;;;:::o;4643:468::-;4708:6;4716;4765:2;4753:9;4744:7;4740:23;4736:32;4733:2;;;4771:79;;:::i;:::-;4733:2;4891:1;4916:53;4961:7;4952:6;4941:9;4937:22;4916:53;:::i;:::-;4906:63;;4862:117;5018:2;5044:50;5086:7;5077:6;5066:9;5062:22;5044:50;:::i;:::-;5034:60;;4989:115;4723:388;;;;;:::o;5117:663::-;5205:6;5213;5221;5270:2;5258:9;5249:7;5245:23;5241:32;5238:2;;;5276:79;;:::i;:::-;5238:2;5396:1;5421:64;5477:7;5468:6;5457:9;5453:22;5421:64;:::i;:::-;5411:74;;5367:128;5534:2;5560:64;5616:7;5607:6;5596:9;5592:22;5560:64;:::i;:::-;5550:74;;5505:129;5673:2;5699:64;5755:7;5746:6;5735:9;5731:22;5699:64;:::i;:::-;5689:74;;5644:129;5228:552;;;;;:::o;5786:179::-;5855:10;5876:46;5918:3;5910:6;5876:46;:::i;:::-;5954:4;5949:3;5945:14;5931:28;;5866:99;;;;:::o;5971:142::-;6074:32;6100:5;6074:32;:::i;:::-;6069:3;6062:45;6052:61;;:::o;6119:108::-;6196:24;6214:5;6196:24;:::i;:::-;6191:3;6184:37;6174:53;;:::o;6233:118::-;6320:24;6338:5;6320:24;:::i;:::-;6315:3;6308:37;6298:53;;:::o;6387:732::-;6506:3;6535:54;6583:5;6535:54;:::i;:::-;6605:86;6684:6;6679:3;6605:86;:::i;:::-;6598:93;;6715:56;6765:5;6715:56;:::i;:::-;6794:7;6825:1;6810:284;6835:6;6832:1;6829:13;6810:284;;;6911:6;6905:13;6938:63;6997:3;6982:13;6938:63;:::i;:::-;6931:70;;7024:60;7077:6;7024:60;:::i;:::-;7014:70;;6870:224;6857:1;6854;6850:9;6845:14;;6810:284;;;6814:14;7110:3;7103:10;;6511:608;;;;;;;:::o;7125:109::-;7206:21;7221:5;7206:21;:::i;:::-;7201:3;7194:34;7184:50;;:::o;7240:185::-;7354:64;7412:5;7354:64;:::i;:::-;7349:3;7342:77;7332:93;;:::o;7431:147::-;7526:45;7565:5;7526:45;:::i;:::-;7521:3;7514:58;7504:74;;:::o;7584:364::-;7672:3;7700:39;7733:5;7700:39;:::i;:::-;7755:71;7819:6;7814:3;7755:71;:::i;:::-;7748:78;;7835:52;7880:6;7875:3;7868:4;7861:5;7857:16;7835:52;:::i;:::-;7912:29;7934:6;7912:29;:::i;:::-;7907:3;7903:39;7896:46;;7676:272;;;;;:::o;7954:366::-;8096:3;8117:67;8181:2;8176:3;8117:67;:::i;:::-;8110:74;;8193:93;8282:3;8193:93;:::i;:::-;8311:2;8306:3;8302:12;8295:19;;8100:220;;;:::o;8326:366::-;8468:3;8489:67;8553:2;8548:3;8489:67;:::i;:::-;8482:74;;8565:93;8654:3;8565:93;:::i;:::-;8683:2;8678:3;8674:12;8667:19;;8472:220;;;:::o;8698:366::-;8840:3;8861:67;8925:2;8920:3;8861:67;:::i;:::-;8854:74;;8937:93;9026:3;8937:93;:::i;:::-;9055:2;9050:3;9046:12;9039:19;;8844:220;;;:::o;9070:366::-;9212:3;9233:67;9297:2;9292:3;9233:67;:::i;:::-;9226:74;;9309:93;9398:3;9309:93;:::i;:::-;9427:2;9422:3;9418:12;9411:19;;9216:220;;;:::o;9442:366::-;9584:3;9605:67;9669:2;9664:3;9605:67;:::i;:::-;9598:74;;9681:93;9770:3;9681:93;:::i;:::-;9799:2;9794:3;9790:12;9783:19;;9588:220;;;:::o;9814:366::-;9956:3;9977:67;10041:2;10036:3;9977:67;:::i;:::-;9970:74;;10053:93;10142:3;10053:93;:::i;:::-;10171:2;10166:3;10162:12;10155:19;;9960:220;;;:::o;10186:366::-;10328:3;10349:67;10413:2;10408:3;10349:67;:::i;:::-;10342:74;;10425:93;10514:3;10425:93;:::i;:::-;10543:2;10538:3;10534:12;10527:19;;10332:220;;;:::o;10558:366::-;10700:3;10721:67;10785:2;10780:3;10721:67;:::i;:::-;10714:74;;10797:93;10886:3;10797:93;:::i;:::-;10915:2;10910:3;10906:12;10899:19;;10704:220;;;:::o;10930:366::-;11072:3;11093:67;11157:2;11152:3;11093:67;:::i;:::-;11086:74;;11169:93;11258:3;11169:93;:::i;:::-;11287:2;11282:3;11278:12;11271:19;;11076:220;;;:::o;11302:366::-;11444:3;11465:67;11529:2;11524:3;11465:67;:::i;:::-;11458:74;;11541:93;11630:3;11541:93;:::i;:::-;11659:2;11654:3;11650:12;11643:19;;11448:220;;;:::o;11674:366::-;11816:3;11837:67;11901:2;11896:3;11837:67;:::i;:::-;11830:74;;11913:93;12002:3;11913:93;:::i;:::-;12031:2;12026:3;12022:12;12015:19;;11820:220;;;:::o;12046:366::-;12188:3;12209:67;12273:2;12268:3;12209:67;:::i;:::-;12202:74;;12285:93;12374:3;12285:93;:::i;:::-;12403:2;12398:3;12394:12;12387:19;;12192:220;;;:::o;12418:366::-;12560:3;12581:67;12645:2;12640:3;12581:67;:::i;:::-;12574:74;;12657:93;12746:3;12657:93;:::i;:::-;12775:2;12770:3;12766:12;12759:19;;12564:220;;;:::o;12790:366::-;12932:3;12953:67;13017:2;13012:3;12953:67;:::i;:::-;12946:74;;13029:93;13118:3;13029:93;:::i;:::-;13147:2;13142:3;13138:12;13131:19;;12936:220;;;:::o;13162:366::-;13304:3;13325:67;13389:2;13384:3;13325:67;:::i;:::-;13318:74;;13401:93;13490:3;13401:93;:::i;:::-;13519:2;13514:3;13510:12;13503:19;;13308:220;;;:::o;13534:366::-;13676:3;13697:67;13761:2;13756:3;13697:67;:::i;:::-;13690:74;;13773:93;13862:3;13773:93;:::i;:::-;13891:2;13886:3;13882:12;13875:19;;13680:220;;;:::o;13906:366::-;14048:3;14069:67;14133:2;14128:3;14069:67;:::i;:::-;14062:74;;14145:93;14234:3;14145:93;:::i;:::-;14263:2;14258:3;14254:12;14247:19;;14052:220;;;:::o;14278:366::-;14420:3;14441:67;14505:2;14500:3;14441:67;:::i;:::-;14434:74;;14517:93;14606:3;14517:93;:::i;:::-;14635:2;14630:3;14626:12;14619:19;;14424:220;;;:::o;14650:118::-;14737:24;14755:5;14737:24;:::i;:::-;14732:3;14725:37;14715:53;;:::o;14774:112::-;14857:22;14873:5;14857:22;:::i;:::-;14852:3;14845:35;14835:51;;:::o;14892:222::-;14985:4;15023:2;15012:9;15008:18;15000:26;;15036:71;15104:1;15093:9;15089:17;15080:6;15036:71;:::i;:::-;14990:124;;;;:::o;15120:254::-;15229:4;15267:2;15256:9;15252:18;15244:26;;15280:87;15364:1;15353:9;15349:17;15340:6;15280:87;:::i;:::-;15234:140;;;;:::o;15380:332::-;15501:4;15539:2;15528:9;15524:18;15516:26;;15552:71;15620:1;15609:9;15605:17;15596:6;15552:71;:::i;:::-;15633:72;15701:2;15690:9;15686:18;15677:6;15633:72;:::i;:::-;15506:206;;;;;:::o;15718:332::-;15839:4;15877:2;15866:9;15862:18;15854:26;;15890:71;15958:1;15947:9;15943:17;15934:6;15890:71;:::i;:::-;15971:72;16039:2;16028:9;16024:18;16015:6;15971:72;:::i;:::-;15844:206;;;;;:::o;16056:807::-;16305:4;16343:3;16332:9;16328:19;16320:27;;16357:71;16425:1;16414:9;16410:17;16401:6;16357:71;:::i;:::-;16438:72;16506:2;16495:9;16491:18;16482:6;16438:72;:::i;:::-;16520:80;16596:2;16585:9;16581:18;16572:6;16520:80;:::i;:::-;16610;16686:2;16675:9;16671:18;16662:6;16610:80;:::i;:::-;16700:73;16768:3;16757:9;16753:19;16744:6;16700:73;:::i;:::-;16783;16851:3;16840:9;16836:19;16827:6;16783:73;:::i;:::-;16310:553;;;;;;;;;:::o;16869:210::-;16956:4;16994:2;16983:9;16979:18;16971:26;;17007:65;17069:1;17058:9;17054:17;17045:6;17007:65;:::i;:::-;16961:118;;;;:::o;17085:276::-;17205:4;17243:2;17232:9;17228:18;17220:26;;17256:98;17351:1;17340:9;17336:17;17327:6;17256:98;:::i;:::-;17210:151;;;;:::o;17367:313::-;17480:4;17518:2;17507:9;17503:18;17495:26;;17567:9;17561:4;17557:20;17553:1;17542:9;17538:17;17531:47;17595:78;17668:4;17659:6;17595:78;:::i;:::-;17587:86;;17485:195;;;;:::o;17686:419::-;17852:4;17890:2;17879:9;17875:18;17867:26;;17939:9;17933:4;17929:20;17925:1;17914:9;17910:17;17903:47;17967:131;18093:4;17967:131;:::i;:::-;17959:139;;17857:248;;;:::o;18111:419::-;18277:4;18315:2;18304:9;18300:18;18292:26;;18364:9;18358:4;18354:20;18350:1;18339:9;18335:17;18328:47;18392:131;18518:4;18392:131;:::i;:::-;18384:139;;18282:248;;;:::o;18536:419::-;18702:4;18740:2;18729:9;18725:18;18717:26;;18789:9;18783:4;18779:20;18775:1;18764:9;18760:17;18753:47;18817:131;18943:4;18817:131;:::i;:::-;18809:139;;18707:248;;;:::o;18961:419::-;19127:4;19165:2;19154:9;19150:18;19142:26;;19214:9;19208:4;19204:20;19200:1;19189:9;19185:17;19178:47;19242:131;19368:4;19242:131;:::i;:::-;19234:139;;19132:248;;;:::o;19386:419::-;19552:4;19590:2;19579:9;19575:18;19567:26;;19639:9;19633:4;19629:20;19625:1;19614:9;19610:17;19603:47;19667:131;19793:4;19667:131;:::i;:::-;19659:139;;19557:248;;;:::o;19811:419::-;19977:4;20015:2;20004:9;20000:18;19992:26;;20064:9;20058:4;20054:20;20050:1;20039:9;20035:17;20028:47;20092:131;20218:4;20092:131;:::i;:::-;20084:139;;19982:248;;;:::o;20236:419::-;20402:4;20440:2;20429:9;20425:18;20417:26;;20489:9;20483:4;20479:20;20475:1;20464:9;20460:17;20453:47;20517:131;20643:4;20517:131;:::i;:::-;20509:139;;20407:248;;;:::o;20661:419::-;20827:4;20865:2;20854:9;20850:18;20842:26;;20914:9;20908:4;20904:20;20900:1;20889:9;20885:17;20878:47;20942:131;21068:4;20942:131;:::i;:::-;20934:139;;20832:248;;;:::o;21086:419::-;21252:4;21290:2;21279:9;21275:18;21267:26;;21339:9;21333:4;21329:20;21325:1;21314:9;21310:17;21303:47;21367:131;21493:4;21367:131;:::i;:::-;21359:139;;21257:248;;;:::o;21511:419::-;21677:4;21715:2;21704:9;21700:18;21692:26;;21764:9;21758:4;21754:20;21750:1;21739:9;21735:17;21728:47;21792:131;21918:4;21792:131;:::i;:::-;21784:139;;21682:248;;;:::o;21936:419::-;22102:4;22140:2;22129:9;22125:18;22117:26;;22189:9;22183:4;22179:20;22175:1;22164:9;22160:17;22153:47;22217:131;22343:4;22217:131;:::i;:::-;22209:139;;22107:248;;;:::o;22361:419::-;22527:4;22565:2;22554:9;22550:18;22542:26;;22614:9;22608:4;22604:20;22600:1;22589:9;22585:17;22578:47;22642:131;22768:4;22642:131;:::i;:::-;22634:139;;22532:248;;;:::o;22786:419::-;22952:4;22990:2;22979:9;22975:18;22967:26;;23039:9;23033:4;23029:20;23025:1;23014:9;23010:17;23003:47;23067:131;23193:4;23067:131;:::i;:::-;23059:139;;22957:248;;;:::o;23211:419::-;23377:4;23415:2;23404:9;23400:18;23392:26;;23464:9;23458:4;23454:20;23450:1;23439:9;23435:17;23428:47;23492:131;23618:4;23492:131;:::i;:::-;23484:139;;23382:248;;;:::o;23636:419::-;23802:4;23840:2;23829:9;23825:18;23817:26;;23889:9;23883:4;23879:20;23875:1;23864:9;23860:17;23853:47;23917:131;24043:4;23917:131;:::i;:::-;23909:139;;23807:248;;;:::o;24061:419::-;24227:4;24265:2;24254:9;24250:18;24242:26;;24314:9;24308:4;24304:20;24300:1;24289:9;24285:17;24278:47;24342:131;24468:4;24342:131;:::i;:::-;24334:139;;24232:248;;;:::o;24486:419::-;24652:4;24690:2;24679:9;24675:18;24667:26;;24739:9;24733:4;24729:20;24725:1;24714:9;24710:17;24703:47;24767:131;24893:4;24767:131;:::i;:::-;24759:139;;24657:248;;;:::o;24911:419::-;25077:4;25115:2;25104:9;25100:18;25092:26;;25164:9;25158:4;25154:20;25150:1;25139:9;25135:17;25128:47;25192:131;25318:4;25192:131;:::i;:::-;25184:139;;25082:248;;;:::o;25336:222::-;25429:4;25467:2;25456:9;25452:18;25444:26;;25480:71;25548:1;25537:9;25533:17;25524:6;25480:71;:::i;:::-;25434:124;;;;:::o;25564:831::-;25827:4;25865:3;25854:9;25850:19;25842:27;;25879:71;25947:1;25936:9;25932:17;25923:6;25879:71;:::i;:::-;25960:80;26036:2;26025:9;26021:18;26012:6;25960:80;:::i;:::-;26087:9;26081:4;26077:20;26072:2;26061:9;26057:18;26050:48;26115:108;26218:4;26209:6;26115:108;:::i;:::-;26107:116;;26233:72;26301:2;26290:9;26286:18;26277:6;26233:72;:::i;:::-;26315:73;26383:3;26372:9;26368:19;26359:6;26315:73;:::i;:::-;25832:563;;;;;;;;:::o;26401:214::-;26490:4;26528:2;26517:9;26513:18;26505:26;;26541:67;26605:1;26594:9;26590:17;26581:6;26541:67;:::i;:::-;26495:120;;;;:::o;26702:132::-;26769:4;26792:3;26784:11;;26822:4;26817:3;26813:14;26805:22;;26774:60;;;:::o;26840:114::-;26907:6;26941:5;26935:12;26925:22;;26914:40;;;:::o;26960:99::-;27012:6;27046:5;27040:12;27030:22;;27019:40;;;:::o;27065:113::-;27135:4;27167;27162:3;27158:14;27150:22;;27140:38;;;:::o;27184:184::-;27283:11;27317:6;27312:3;27305:19;27357:4;27352:3;27348:14;27333:29;;27295:73;;;;:::o;27374:169::-;27458:11;27492:6;27487:3;27480:19;27532:4;27527:3;27523:14;27508:29;;27470:73;;;;:::o;27549:305::-;27589:3;27608:20;27626:1;27608:20;:::i;:::-;27603:25;;27642:20;27660:1;27642:20;:::i;:::-;27637:25;;27796:1;27728:66;27724:74;27721:1;27718:81;27715:2;;;27802:18;;:::i;:::-;27715:2;27846:1;27843;27839:9;27832:16;;27593:261;;;;:::o;27860:185::-;27900:1;27917:20;27935:1;27917:20;:::i;:::-;27912:25;;27951:20;27969:1;27951:20;:::i;:::-;27946:25;;27990:1;27980:2;;27995:18;;:::i;:::-;27980:2;28037:1;28034;28030:9;28025:14;;27902:143;;;;:::o;28051:348::-;28091:7;28114:20;28132:1;28114:20;:::i;:::-;28109:25;;28148:20;28166:1;28148:20;:::i;:::-;28143:25;;28336:1;28268:66;28264:74;28261:1;28258:81;28253:1;28246:9;28239:17;28235:105;28232:2;;;28343:18;;:::i;:::-;28232:2;28391:1;28388;28384:9;28373:20;;28099:300;;;;:::o;28405:191::-;28445:4;28465:20;28483:1;28465:20;:::i;:::-;28460:25;;28499:20;28517:1;28499:20;:::i;:::-;28494:25;;28538:1;28535;28532:8;28529:2;;;28543:18;;:::i;:::-;28529:2;28588:1;28585;28581:9;28573:17;;28450:146;;;;:::o;28602:96::-;28639:7;28668:24;28686:5;28668:24;:::i;:::-;28657:35;;28647:51;;;:::o;28704:104::-;28749:7;28778:24;28796:5;28778:24;:::i;:::-;28767:35;;28757:51;;;:::o;28814:90::-;28848:7;28891:5;28884:13;28877:21;28866:32;;28856:48;;;:::o;28910:126::-;28947:7;28987:42;28980:5;28976:54;28965:65;;28955:81;;;:::o;29042:77::-;29079:7;29108:5;29097:16;;29087:32;;;:::o;29125:86::-;29160:7;29200:4;29193:5;29189:16;29178:27;;29168:43;;;:::o;29217:180::-;29294:9;29327:64;29385:5;29327:64;:::i;:::-;29314:77;;29304:93;;;:::o;29403:140::-;29480:9;29513:24;29531:5;29513:24;:::i;:::-;29500:37;;29490:53;;;:::o;29549:121::-;29607:9;29640:24;29658:5;29640:24;:::i;:::-;29627:37;;29617:53;;;:::o;29676:307::-;29744:1;29754:113;29768:6;29765:1;29762:13;29754:113;;;29853:1;29848:3;29844:11;29838:18;29834:1;29829:3;29825:11;29818:39;29790:2;29787:1;29783:10;29778:15;;29754:113;;;29885:6;29882:1;29879:13;29876:2;;;29965:1;29956:6;29951:3;29947:16;29940:27;29876:2;29725:258;;;;:::o;29989:320::-;30033:6;30070:1;30064:4;30060:12;30050:22;;30117:1;30111:4;30107:12;30138:18;30128:2;;30194:4;30186:6;30182:17;30172:27;;30128:2;30256;30248:6;30245:14;30225:18;30222:38;30219:2;;;30275:18;;:::i;:::-;30219:2;30040:269;;;;:::o;30315:233::-;30354:3;30377:24;30395:5;30377:24;:::i;:::-;30368:33;;30423:66;30416:5;30413:77;30410:2;;;30493:18;;:::i;:::-;30410:2;30540:1;30533:5;30529:13;30522:20;;30358:190;;;:::o;30554:180::-;30602:77;30599:1;30592:88;30699:4;30696:1;30689:15;30723:4;30720:1;30713:15;30740:180;30788:77;30785:1;30778:88;30885:4;30882:1;30875:15;30909:4;30906:1;30899:15;30926:180;30974:77;30971:1;30964:88;31071:4;31068:1;31061:15;31095:4;31092:1;31085:15;31112:180;31160:77;31157:1;31150:88;31257:4;31254:1;31247:15;31281:4;31278:1;31271:15;31298:180;31346:77;31343:1;31336:88;31443:4;31440:1;31433:15;31467:4;31464:1;31457:15;31484:180;31532:77;31529:1;31522:88;31629:4;31626:1;31619:15;31653:4;31650:1;31643:15;31793:117;31902:1;31899;31892:12;31916:102;31957:6;32008:2;32004:7;31999:2;31992:5;31988:14;31984:28;31974:38;;31964:54;;;:::o;32024:222::-;32164:34;32160:1;32152:6;32148:14;32141:58;32233:5;32228:2;32220:6;32216:15;32209:30;32130:116;:::o;32252:229::-;32392:34;32388:1;32380:6;32376:14;32369:58;32461:12;32456:2;32448:6;32444:15;32437:37;32358:123;:::o;32487:225::-;32627:34;32623:1;32615:6;32611:14;32604:58;32696:8;32691:2;32683:6;32679:15;32672:33;32593:119;:::o;32718:221::-;32858:34;32854:1;32846:6;32842:14;32835:58;32927:4;32922:2;32914:6;32910:15;32903:29;32824:115;:::o;32945:177::-;33085:29;33081:1;33073:6;33069:14;33062:53;33051:71;:::o;33128:180::-;33268:32;33264:1;33256:6;33252:14;33245:56;33234:74;:::o;33314:181::-;33454:33;33450:1;33442:6;33438:14;33431:57;33420:75;:::o;33501:227::-;33641:34;33637:1;33629:6;33625:14;33618:58;33710:10;33705:2;33697:6;33693:15;33686:35;33607:121;:::o;33734:220::-;33874:34;33870:1;33862:6;33858:14;33851:58;33943:3;33938:2;33930:6;33926:15;33919:28;33840:114;:::o;33960:182::-;34100:34;34096:1;34088:6;34084:14;34077:58;34066:76;:::o;34148:228::-;34288:34;34284:1;34276:6;34272:14;34265:58;34357:11;34352:2;34344:6;34340:15;34333:36;34254:122;:::o;34382:176::-;34522:28;34518:1;34510:6;34506:14;34499:52;34488:70;:::o;34564:223::-;34704:34;34700:1;34692:6;34688:14;34681:58;34773:6;34768:2;34760:6;34756:15;34749:31;34670:117;:::o;34793:224::-;34933:34;34929:1;34921:6;34917:14;34910:58;35002:7;34997:2;34989:6;34985:15;34978:32;34899:118;:::o;35023:231::-;35163:34;35159:1;35151:6;35147:14;35140:58;35232:14;35227:2;35219:6;35215:15;35208:39;35129:125;:::o;35260:223::-;35400:34;35396:1;35388:6;35384:14;35377:58;35469:6;35464:2;35456:6;35452:15;35445:31;35366:117;:::o;35489:231::-;35629:34;35625:1;35617:6;35613:14;35606:58;35698:14;35693:2;35685:6;35681:15;35674:39;35595:125;:::o;35726:166::-;35866:18;35862:1;35854:6;35850:14;35843:42;35832:60;:::o;35898:122::-;35971:24;35989:5;35971:24;:::i;:::-;35964:5;35961:35;35951:2;;36010:1;36007;36000:12;35951:2;35941:79;:::o;36026:116::-;36096:21;36111:5;36096:21;:::i;:::-;36089:5;36086:32;36076:2;;36132:1;36129;36122:12;36076:2;36066:76;:::o;36148:122::-;36221:24;36239:5;36221:24;:::i;:::-;36214:5;36211:35;36201:2;;36260:1;36257;36250:12;36201:2;36191:79;:::o

Swarm Source

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