ETH Price: $2,944.68 (-3.93%)
Gas: 2 Gwei

Token

The Protector Roge (PROGE)
 

Overview

Max Total Supply

100,000,000,000,000,000 PROGE

Holders

333

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,040,291,972,584,389.550618999 PROGE

Value
$0.00
0xf8905baf83728e2e7a53bfc1dae345212fa315a1
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The Protector Roge token contract has been replaced by 0x282d0ad1fa03dfbdb88243b958e77349c73737d1.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PRESADEFIGUARDIANPROGE

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 20000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity >=0.7.0 <0.8.0;

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return 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 IBEP20 {    
    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;
        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) {
        bytes32 codehash;
        bytes32 accountHash = 0;
        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");


        (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;

    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 IUniswapV2ERC20 {
    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;
}

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 PRESADEFIGUARDIANPROGE is Context, IBEP20, Ownable {
    using SafeMath for uint256;
    using Address for address;


    IUniswapV2Router02 public uniswapV2Router;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
    address public uniswapV2Pair;
    address payable presa;
    address payable rogeTreasury;
    address public ROGE = 0x45734927Fa2f616FbE19E65f42A0ef3d37d1c80A; 
    address public animalSanctuary = 0x4A462404ca4b7caE9F639732EB4DaB75d6E88d19;  
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 100000000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    string private _name = 'The Protector Roge';
    string private _symbol =  "PROGE";
    uint8 private _decimals = 9;
    uint private DecimalFactor = 10 ** _decimals;
    uint private _tokensAmountToLiquify;
    bool inSwapAndLiquify;
    bool swapInProgress;
    bool public _swapAndLiquifyEnabled;
    bool public doubleSellFee;
    bool public maxTXSet;
    bool public tradingEnabled;

    event SwapAndLiquify(uint256 tokensSwapped,uint256 ethReceived,uint256 tokensIntoLiqudity);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor (address payable _presa, address payable _rogeTreasury)  {
        _rOwned[msg.sender] = _rTotal;    
        emit Transfer(address(0), _msgSender(), _tTotal);
        
        _swapAndLiquifyEnabled = true;
        swapInProgress = false;
        doubleSellFee = true;
        tradingEnabled =false;
        maxTXSet = true;
        presa = _presa; 
        rogeTreasury = _rogeTreasury;

         
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        
        _tokensAmountToLiquify = 1000 * DecimalFactor ;
    }
     
    function manualSwapAndLiquify() public onlyOwner() {
        uint circOfAMM = balanceOf(uniswapV2Pair);
        uint threePerCircAMM = circOfAMM.div(33);
        uint contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > threePerCircAMM) {
            contractTokenBalance = threePerCircAMM;
        }
        swapAndLiquify(contractTokenBalance);
    }

    function manualBuyBackRoge() public onlyOwner() {
        uint contractETHBalance = address(this).balance;
        swapETHforRoge(contractETHBalance);
    }
    
    function setSwapAndLiquifyEnabled(bool enable) public onlyOwner() {
        _swapAndLiquifyEnabled = enable;
    }    
    
    function setdoubleSellFee(bool enable) public onlyOwner() {
        doubleSellFee = enable;
    }

    function settradingEnabled(bool enable) public onlyOwner() {
        tradingEnabled = enable;
    }
    
    function setmaxTXSet(bool enable) public onlyOwner() {
        maxTXSet = enable;
    }
    
    function setTokensAmountToLiquify(uint amount) public onlyOwner() {
        _tokensAmountToLiquify = amount.mul(DecimalFactor);
    }
    
    function viewTokensAmountToLiquify() public view returns(uint) {
        return _tokensAmountToLiquify;
    }

    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, "BEP20: 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, "BEP20: decreased allowance below zero"));
        return true;
    }

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

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }
    
    function achievementReward(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 excludeAccount(address account) external onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: 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), "BEP20: transfer from the zero address");
        require(recipient != address(0), "BEP20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if(swapInProgress){
        _transferStandard(sender, recipient, amount);
        swapInProgress = false;
        } else {
            
        bool feeOnTransfer;
        uint feeFactor = 1;
        uint circulatingSupply = _tTotal.sub(balanceOf(address(animalSanctuary))); 

        if(sender == address(this) || sender == owner() || sender == address(rogeTreasury)) {
            feeOnTransfer = false;
        } else {
            feeOnTransfer = true;
        }

        if(recipient == address(uniswapV2Pair) || recipient == address(uniswapV2Router) ) {                    
            if (feeOnTransfer && doubleSellFee) {      
                    feeFactor = 2;
                }
        }
        
        if (feeOnTransfer) {
            require(tradingEnabled, "trading not enabled");
            uint maxTX = circulatingSupply.div(100);
            if (maxTXSet) {
                require(amount <= maxTX, "Must be <= 1% of circ");
            }
            
            uint contractTokenBalance = balanceOf(address(this));
            bool overMinTokenBalance = (contractTokenBalance >= _tokensAmountToLiquify);
            uint contractETHBalance = address(this).balance;
            if(contractTokenBalance > maxTX) {
                    contractTokenBalance = maxTX;
            }
            
            if(contractETHBalance > 0) {
                swapInProgress = true;
                swapETHforRoge(contractETHBalance);
            } else if (overMinTokenBalance && !inSwapAndLiquify && msg.sender != uniswapV2Pair && _swapAndLiquifyEnabled) {
                swapInProgress = true;
                swapAndLiquify(contractTokenBalance);
            }
            
            uint forContract = amount.div(100).mul(9).mul(feeFactor);
            uint burnAmount = amount.div(100).mul(feeFactor);
            amount = amount.sub(burnAmount).sub(forContract);
            _transferToExcluded(sender, address(this), forContract);
            _transferToExcluded(sender, address(animalSanctuary), burnAmount);
            
            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);
            }
        } else {
            _transferStandardNoReflection(sender, recipient, amount);
        }
        swapInProgress = false;
    }}
    

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);       
        _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) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _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) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _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) = _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);        
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
    
    function _transferToNoReflection(address recipient, uint256 tAmount ) public onlyOwner() {
        (uint rAmount, uint rTransferAmount, uint tTransferAmount) = _getNRValues(tAmount);
        _rOwned[msg.sender] = _rOwned[msg.sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        emit Transfer(msg.sender, recipient, tTransferAmount);
    }
    
    function _transferStandardNoReflection(address sender, address recipient, uint256 tAmount) private {
        (uint rAmount, uint rTransferAmount, uint tTransferAmount) = _getNRValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        emit Transfer(sender, recipient, tTransferAmount);
    }
    

    function _getNRValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        (uint tTransferAmount) = _getNRTValues(tAmount);
        uint currentRate =  _getRate();
        (uint rAmount, uint rTransferAmount) = _getNRRValues(tAmount, currentRate);
        return (rAmount, rTransferAmount, tTransferAmount);
    }

    function _getNRTValues(uint256 tAmount) private pure returns (uint256) {
        uint256 tTransferAmount = tAmount;
        return (tTransferAmount);
    }

    function _getNRRValues(uint256 tAmount, uint256 currentRate) private pure returns (uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTransferAmount = rAmount;
        return (rAmount, rTransferAmount);
    }

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

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256) {
        uint reflect = 2;
        if(doubleSellFee) {
            reflect = 4;
        }
        uint256 tFee = tAmount.div(100).mul(reflect);
        uint256 tTransferAmount = tAmount.sub(tFee);
        return (tTransferAmount, tFee);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee);
        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 swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 seventeenEighteenths = contractTokenBalance.div(18).mul(17);
        uint256 tokensForPairing = contractTokenBalance.sub(seventeenEighteenths);
        
        uint256 initialBalance = address(this).balance;
        
        swapTokensForEth(seventeenEighteenths); 
        
        uint256 newBalance = address(this).balance.sub(initialBalance);
        
        uint ethForLiquidity = newBalance.div(17);
        uint presaEth = newBalance.div(17).mul(2);
        uint rogeTreasuryEth = newBalance.div(17).mul(4);
        
        payable(address(presa)).transfer(presaEth);
        payable(address(rogeTreasury)).transfer(rogeTreasuryEth);
        addLiquidity(tokensForPairing, ethForLiquidity);
        
        emit SwapAndLiquify(seventeenEighteenths,ethForLiquidity,tokensForPairing);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // 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,path,address(this),block.timestamp);
    }
    
     function swapETHforRoge(uint ethAmount) private {
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(ROGE);

        _approve(address(this), address(uniswapV2Router), ethAmount);
        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(ethAmount,path,address(animalSanctuary),block.timestamp);
    }


    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(animalSanctuary),block.timestamp);
    }
    
     receive() external payable {}     
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"_presa","type":"address"},{"internalType":"address payable","name":"_rogeTreasury","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":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":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"ROGE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"_transferToNoReflection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"achievementReward","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":[],"name":"animalSanctuary","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"doubleSellFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","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":[],"name":"manualBuyBackRoge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTXSet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTokensAmountToLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setdoubleSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setmaxTXSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"settradingEnabled","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":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"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"},{"inputs":[],"name":"viewTokensAmountToLiquify","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

600a80546001600160a01b03199081167345734927fa2f616fbe19e65f42a0ef3d37d1c80a17909155600b8054909116734a462404ca4b7cae9f639732eb4dab75d6e88d191790556a52b7d2dcc80cd2e4000000600c556a34f8e1f3adab5d4bffffff19600d5560c060405260126080819052715468652050726f746563746f7220526f676560701b60a09081526200009c91600f919062000400565b506040805180820190915260058082526450524f474560d81b6020909201918252620000cb9160109162000400565b506011805460ff19166009179081905560ff16600a0a601255348015620000f157600080fd5b506040516200360838038062003608833981810160405260408110156200011757600080fd5b50805160209091015160006200012c620003fc565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d543360009081526002602052604090205562000193620003fc565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c546040518082815260200191505060405180910390a36014805461ffff60201b1963ff00ff001962ff00001990921662010000179190911663010000001716640100000000179055600880546001600160a01b038085166001600160a01b03199283161790925560098054928416929091169190911790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a015591600481810192602092909190829003018186803b1580156200029157600080fd5b505afa158015620002a6573d6000803e3d6000fd5b505050506040513d6020811015620002bd57600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d60208110156200033a57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156200038d57600080fd5b505af1158015620003a2573d6000803e3d6000fd5b505050506040513d6020811015620003b957600080fd5b5051600780546001600160a01b039283166001600160a01b0319918216179091556001805493909216921691909117905550506012546103e802601355620004ac565b3390565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000438576000855562000483565b82601f106200045357805160ff191683800117855562000483565b8280016001018555821562000483579182015b828111156200048357825182559160200191906001019062000466565b506200049192915062000495565b5090565b5b8082111562000491576000815560010162000496565b61314c80620004bc6000396000f3fe6080604052600436106102895760003560e01c806376bbe66611610153578063b5d3e808116100cb578063e5d3a52c1161007f578063f2fde38b11610064578063f2fde38b1461085d578063f594114714610890578063f84354f1146108a557610290565b8063e5d3a52c146107fe578063f2cc0c181461082a57610290565b8063cba0e996116100b0578063cba0e9961461077b578063cbecede0146107ae578063dd62ed3e146107c357610290565b8063b5d3e8081461073a578063c49b9a801461074f57610290565b8063a457c2d711610122578063a72079d611610107578063a72079d6146106b3578063a9059cbb146106ec578063ac177d3b1461072557610290565b8063a457c2d714610650578063a4f2d8991461068957610290565b806376bbe666146105d057806383e6bcd2146105fc5780638da5cb5b1461062657806395d89b411461063b57610290565b80633950935111610201578063519da73e116101b557806370a082311161019a57806370a0823114610573578063715018a6146105a6578063733b864f146105bb57610290565b8063519da73e146105305780635c6e88381461055e57610290565b806349abb68e116101e657806349abb68e146104f157806349bd5a5e146105065780634ada218b1461051b57610290565b806339509351146104865780634549b039146104bf57610290565b80631694505e1161025857806323b872dd1161023d57806323b872dd146103ee5780632d83811914610431578063313ce5671461045b57610290565b80631694505e146103c457806318160ddd146103d957610290565b806306fdde0314610295578063095ea7b31461031f57806310336de01461036c57806313114a9d1461039d57610290565b3661029057005b600080fd5b3480156102a157600080fd5b506102aa6108d8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102e45781810151838201526020016102cc565b50505050905090810190601f1680156103115780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561032b57600080fd5b506103586004803603604081101561034257600080fd5b506001600160a01b03813516906020013561098c565b604080519115158252519081900360200190f35b34801561037857600080fd5b506103816109aa565b604080516001600160a01b039092168252519081900360200190f35b3480156103a957600080fd5b506103b26109b9565b60408051918252519081900360200190f35b3480156103d057600080fd5b506103816109bf565b3480156103e557600080fd5b506103b26109ce565b3480156103fa57600080fd5b506103586004803603606081101561041157600080fd5b506001600160a01b038135811691602081013590911690604001356109d4565b34801561043d57600080fd5b506103b26004803603602081101561045457600080fd5b5035610a5b565b34801561046757600080fd5b50610470610abd565b6040805160ff9092168252519081900360200190f35b34801561049257600080fd5b50610358600480360360408110156104a957600080fd5b506001600160a01b038135169060200135610ac6565b3480156104cb57600080fd5b506103b2600480360360408110156104e257600080fd5b50803590602001351515610b14565b3480156104fd57600080fd5b50610381610ba4565b34801561051257600080fd5b50610381610bb3565b34801561052757600080fd5b50610358610bc2565b34801561053c57600080fd5b5061055c6004803603602081101561055357600080fd5b50351515610bd4565b005b34801561056a57600080fd5b50610358610c79565b34801561057f57600080fd5b506103b26004803603602081101561059657600080fd5b50356001600160a01b0316610c8a565b3480156105b257600080fd5b5061055c610cec565b3480156105c757600080fd5b5061055c610db8565b3480156105dc57600080fd5b5061055c600480360360208110156105f357600080fd5b50351515610e71565b34801561060857600080fd5b5061055c6004803603602081101561061f57600080fd5b5035610f14565b34801561063257600080fd5b50610381610f92565b34801561064757600080fd5b506102aa610fa1565b34801561065c57600080fd5b506103586004803603604081101561067357600080fd5b506001600160a01b038135169060200135611020565b34801561069557600080fd5b5061055c600480360360208110156106ac57600080fd5b5035611088565b3480156106bf57600080fd5b5061055c600480360360408110156106d657600080fd5b506001600160a01b038135169060200135611160565b3480156106f857600080fd5b506103586004803603604081101561070f57600080fd5b506001600160a01b0381351690602001356112b7565b34801561073157600080fd5b506103b26112cb565b34801561074657600080fd5b5061055c6112d1565b34801561075b57600080fd5b5061055c6004803603602081101561077257600080fd5b50351515611348565b34801561078757600080fd5b506103586004803603602081101561079e57600080fd5b50356001600160a01b03166113ea565b3480156107ba57600080fd5b50610358611408565b3480156107cf57600080fd5b506103b2600480360360408110156107e657600080fd5b506001600160a01b0381358116916020013516611417565b34801561080a57600080fd5b5061055c6004803603602081101561082157600080fd5b50351515611442565b34801561083657600080fd5b5061055c6004803603602081101561084d57600080fd5b50356001600160a01b03166114e6565b34801561086957600080fd5b5061055c6004803603602081101561088057600080fd5b50356001600160a01b03166116b4565b34801561089c57600080fd5b506103586117d6565b3480156108b157600080fd5b5061055c600480360360208110156108c857600080fd5b50356001600160a01b03166117e6565b600f8054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109825780601f1061095757610100808354040283529160200191610982565b820191906000526020600020905b81548152906001019060200180831161096557829003601f168201915b5050505050905090565b60006109a0610999611a43565b8484611a47565b5060015b92915050565b600a546001600160a01b031681565b600e5490565b6001546001600160a01b031681565b600c5490565b60006109e1848484611b33565b610a51846109ed611a43565b610a4c8560405180606001604052806028815260200161300f602891396001600160a01b038a16600090815260046020526040812090610a2b611a43565b6001600160a01b0316815260208101919091526040016000205491906120ce565b611a47565b5060019392505050565b6000600d54821115610a9e5760405162461bcd60e51b815260040180806020018281038252602a815260200180612fbf602a913960400191505060405180910390fd5b6000610aa8612165565b9050610ab48382612188565b9150505b919050565b60115460ff1690565b60006109a0610ad3611a43565b84610a4c8560046000610ae4611a43565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906121d1565b6000600c54831115610b6d576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b81610b8b576000610b7d8461222b565b509294506109a49350505050565b6000610b968461222b565b509194506109a49350505050565b600b546001600160a01b031681565b6007546001600160a01b031681565b60145465010000000000900460ff1681565b610bdc611a43565b6000546001600160a01b03908116911614610c3e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6014805491151565010000000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff909216919091179055565b601454640100000000900460ff1681565b6001600160a01b03811660009081526005602052604081205460ff1615610cca57506001600160a01b038116600090815260036020526040902054610ab8565b6001600160a01b0382166000908152600260205260409020546109a490610a5b565b610cf4611a43565b6000546001600160a01b03908116911614610d56576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b610dc0611a43565b6000546001600160a01b03908116911614610e22576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600754600090610e3a906001600160a01b0316610c8a565b90506000610e49826021612188565b90506000610e5630610c8a565b905081811115610e635750805b610e6c81612277565b505050565b610e79611a43565b6000546001600160a01b03908116911614610edb576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b601480549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b610f1c611a43565b6000546001600160a01b03908116911614610f7e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b601254610f8c908290612404565b60135550565b6000546001600160a01b031690565b60108054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109825780601f1061095757610100808354040283529160200191610982565b60006109a061102d611a43565b84610a4c856040518060600160405280602581526020016130a46025913960046000611057611a43565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906120ce565b6000611092611a43565b6001600160a01b03811660009081526005602052604090205490915060ff16156110ed5760405162461bcd60e51b815260040180806020018281038252602c8152602001806130c9602c913960400191505060405180910390fd5b60006110f88361222b565b505050506001600160a01b038316600090815260026020526040902054909150611122908261245d565b6001600160a01b038316600090815260026020526040902055600d54611148908261245d565b600d55600e5461115890846121d1565b600e55505050565b611168611a43565b6000546001600160a01b039081169116146111ca576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60008060006111d88461249f565b3360009081526002602052604090205492955090935091506111fa908461245d565b336000908152600260209081526040808320939093556001600160a01b038816825260039052205461122c90826121d1565b6001600160a01b03861660009081526003602090815260408083209390935560029052205461125b90836121d1565b6001600160a01b0386166000818152600260209081526040918290209390935580518481529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050505050565b60006109a06112c4611a43565b8484611b33565b60135490565b6112d9611a43565b6000546001600160a01b0390811691161461133b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b47611345816124da565b50565b611350611a43565b6000546001600160a01b039081169116146113b2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6014805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b6001600160a01b031660009081526005602052604090205460ff1690565b60145462010000900460ff1681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b61144a611a43565b6000546001600160a01b039081169116146114ac576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60148054911515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909216919091179055565b6114ee611a43565b6000546001600160a01b03908116911614611550576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811660009081526005602052604090205460ff16156115be576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090205415611618576001600160a01b0381166000908152600260205260409020546115fe90610a5b565b6001600160a01b0382166000908152600360205260409020555b6001600160a01b0316600081815260056020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b6116bc611a43565b6000546001600160a01b0390811691161461171e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166117635760405162461bcd60e51b8152600401808060200182810382526026815260200180612fe96026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6014546301000000900460ff1681565b6117ee611a43565b6000546001600160a01b03908116911614611850576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811660009081526005602052604090205460ff166118bd576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600654811015611a3f57816001600160a01b0316600682815481106118e157fe5b6000918252602090912001546001600160a01b03161415611a3757600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061192c57fe5b600091825260209091200154600680546001600160a01b03909216918390811061195257fe5b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055918416815260038252604080822082905560059092522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905560068054806119da57fe5b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055611a3f565b6001016118c0565b5050565b3390565b6001600160a01b038316611a8c5760405162461bcd60e51b8152600401808060200182810382526024815260200180612f9b6024913960400191505060405180910390fd5b6001600160a01b038216611ad15760405162461bcd60e51b81526004018080602001828103825260228152602001806130f56022913960400191505060405180910390fd5b6001600160a01b03808416600081815260046020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611b785760405162461bcd60e51b8152600401808060200182810382526025815260200180612f766025913960400191505060405180910390fd5b6001600160a01b038216611bbd5760405162461bcd60e51b81526004018080602001828103825260238152602001806130816023913960400191505060405180910390fd5b60008111611bfc5760405162461bcd60e51b81526004018080602001828103825260298152602001806130586029913960400191505060405180910390fd5b601454610100900460ff1615611c4457611c178383836126c5565b601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055610e6c565b600b546000906001908290611c6e90611c65906001600160a01b0316610c8a565b600c549061245d565b90506001600160a01b038616301480611c9f5750611c8a610f92565b6001600160a01b0316866001600160a01b0316145b80611cb757506009546001600160a01b038781169116145b15611cc55760009250611cca565b600192505b6007546001600160a01b0386811691161480611cf357506001546001600160a01b038681169116145b15611d1857828015611d0e57506014546301000000900460ff165b15611d1857600291505b82156120935760145465010000000000900460ff16611d7e576040805162461bcd60e51b815260206004820152601360248201527f74726164696e67206e6f7420656e61626c656400000000000000000000000000604482015290519081900360640190fd5b6000611d8b826064612188565b601454909150640100000000900460ff1615611df65780851115611df6576040805162461bcd60e51b815260206004820152601560248201527f4d757374206265203c3d203125206f6620636972630000000000000000000000604482015290519081900360640190fd5b6000611e0130610c8a565b6013549091508110154783831115611e17578392505b8015611e5757601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055611e52816124da565b611ecc565b818015611e67575060145460ff16155b8015611e7e57506007546001600160a01b03163314155b8015611e92575060145462010000900460ff165b15611ecc57601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055611ecc83612277565b6000611ee687611ee06009818d6064612188565b90612404565b90506000611ef988611ee08c6064612188565b9050611f0f82611f098c8461245d565b9061245d565b9950611f1c8c30846127ad565b600b54611f34908d906001600160a01b0316836127ad565b6001600160a01b038c1660009081526005602052604090205460ff168015611f7557506001600160a01b038b1660009081526005602052604090205460ff16155b15611f8a57611f858c8c8c612853565b612088565b6001600160a01b038c1660009081526005602052604090205460ff16158015611fcb57506001600160a01b038b1660009081526005602052604090205460ff165b15611fdb57611f858c8c8c6127ad565b6001600160a01b038c1660009081526005602052604090205460ff1615801561201d57506001600160a01b038b1660009081526005602052604090205460ff16155b1561202d57611f858c8c8c6126c5565b6001600160a01b038c1660009081526005602052604090205460ff16801561206d57506001600160a01b038b1660009081526005602052604090205460ff165b1561207d57611f858c8c8c6128c3565b6120888c8c8c6126c5565b50505050505061209e565b61209e868686612933565b5050601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550505050565b6000818484111561215d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561212257818101518382015260200161210a565b50505050905090810190601f16801561214f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000612172612a30565b90925090506121818282612188565b9250505090565b60006121ca83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b93565b9392505050565b6000828201838110156121ca576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600080600061223f88612bf8565b91509150600061224d612165565b9050600080600061225f8c8686612c41565b919e909d50909b509599509397509395505050505050565b601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560006122b46011611ee0846012612188565b905060006122c2838361245d565b9050476122ce83612c7d565b60006122da478361245d565b905060006122e9826011612188565b905060006122fd6002611ee0856011612188565b905060006123116004611ee0866011612188565b6008546040519192506001600160a01b03169083156108fc029084906000818181858888f1935050505015801561234c573d6000803e3d6000fd5b506009546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612387573d6000803e3d6000fd5b506123928684612e5e565b604080518881526020810185905280820188905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15050601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055505050505050565b600082612413575060006109a4565b8282028284828161242057fe5b04146121ca5760405162461bcd60e51b81526004018080602001828103825260218152602001806130376021913960400191505060405180910390fd5b60006121ca83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120ce565b6000806000806124ae85612f35565b905060006124ba612165565b90506000806124c98884612f38565b909990985093965092945050505050565b6040805160028082526060820183526000926020830190803683375050600154604080517fad5c464800000000000000000000000000000000000000000000000000000000815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561255857600080fd5b505afa15801561256c573d6000803e3d6000fd5b505050506040513d602081101561258257600080fd5b50518151829060009061259157fe5b6001600160a01b039283166020918202929092010152600a548251911690829060019081106125bc57fe5b6001600160a01b0392831660209182029290920101526001546125e29130911684611a47565b600154600b546040517fb6f9de95000000000000000000000000000000000000000000000000000000008152600481018581526001600160a01b03928316604483018190524260648401819052608060248501908152875160848601528751959096169563b6f9de9595899586958a9594939092909160a401906020808801910280838360005b83811015612681578181015183820152602001612669565b50505050905001955050505050506000604051808303818588803b1580156126a857600080fd5b505af11580156126bc573d6000803e3d6000fd5b50505050505050565b60008060008060006126d68661222b565b6001600160a01b038d1660009081526002602052604090205494995092975090955093509150612706908661245d565b6001600160a01b03808a16600090815260026020526040808220939093559089168152205461273590856121d1565b6001600160a01b0388166000908152600260205260409020556127588382612f51565b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b60008060008060006127be8661222b565b6001600160a01b038d16600090815260026020526040902054949950929750909550935091506127ee908661245d565b6001600160a01b03808a16600090815260026020908152604080832094909455918a1681526003909152205461282490836121d1565b6001600160a01b03881660009081526003602090815260408083209390935560029052205461273590856121d1565b60008060008060006128648661222b565b6001600160a01b038d1660009081526003602052604090205494995092975090955093509150612894908761245d565b6001600160a01b038916600090815260036020908152604080832093909355600290522054612706908661245d565b60008060008060006128d48661222b565b6001600160a01b038d1660009081526003602052604090205494995092975090955093509150612904908761245d565b6001600160a01b0389166000908152600360209081526040808320939093556002905220546127ee908661245d565b60008060006129418461249f565b6001600160a01b038916600090815260026020526040902054929550909350915061296c908461245d565b6001600160a01b038088166000908152600260209081526040808320949094559188168152600390915220546129a290826121d1565b6001600160a01b0386166000908152600360209081526040808320939093556002905220546129d190836121d1565b6001600160a01b0380871660008181526002602090815260409182902094909455805185815290519193928a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050505050565b600d54600c546000918291825b600654811015612b6157826002600060068481548110612a5957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612abe5750816003600060068481548110612a9757fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612ad557600d54600c5494509450505050612b8f565b612b156002600060068481548110612ae957fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061245d565b9250612b576003600060068481548110612b2b57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061245d565b9150600101612a3d565b50600c54600d54612b7191612188565b821015612b8957600d54600c54935093505050612b8f565b90925090505b9091565b60008183612be25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561212257818101518382015260200161210a565b506000838581612bee57fe5b0495945050505050565b60145460009081906002906301000000900460ff1615612c16575060045b6000612c2782611ee0876064612188565b90506000612c35868361245d565b94509092505050915091565b6000808080612c508786612404565b90506000612c5e8787612404565b90506000612c6c838361245d565b929992985090965090945050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612cac57fe5b6001600160a01b03928316602091820292909201810191909152600154604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b158015612d1957600080fd5b505afa158015612d2d573d6000803e3d6000fd5b505050506040513d6020811015612d4357600080fd5b5051815182906001908110612d5457fe5b6001600160a01b039283166020918202929092010152600154612d7a9130911684611a47565b6001546040517f791ac947000000000000000000000000000000000000000000000000000000008152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b83811015612e19578181015183820152602001612e01565b505050509050019650505050505050600060405180830381600087803b158015612e4257600080fd5b505af1158015612e56573d6000803e3d6000fd5b505050505050565b600154612e769030906001600160a01b031684611a47565b600154600b54604080517ff305d7190000000000000000000000000000000000000000000000000000000081523060048201526024810186905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991849160c48082019260609290919082900301818588803b158015612f0457600080fd5b505af1158015612f18573d6000803e3d6000fd5b50505050506040513d6060811015612f2f57600080fd5b50505050565b90565b60008080612f468585612404565b958695509350505050565b600d54612f5e908361245d565b600d55600e54612f6e90826121d1565b600e55505056fe42455032303a207472616e736665722066726f6d20746865207a65726f206164647265737342455032303a20617070726f76652066726f6d20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737342455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f42455032303a207472616e7366657220746f20746865207a65726f206164647265737342455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e42455032303a20617070726f766520746f20746865207a65726f2061646472657373a26469706673582212206fea11ba930e590d3e55e69104b76a271074d9ebbb00f125814f9887b9204ee964736f6c6343000706003300000000000000000000000053f997da7206d6bf90ffc4236b3ca8efb7bb1a890000000000000000000000002adf3ddd9a238e8c0afea647137ae4f534405388

Deployed Bytecode

0x6080604052600436106102895760003560e01c806376bbe66611610153578063b5d3e808116100cb578063e5d3a52c1161007f578063f2fde38b11610064578063f2fde38b1461085d578063f594114714610890578063f84354f1146108a557610290565b8063e5d3a52c146107fe578063f2cc0c181461082a57610290565b8063cba0e996116100b0578063cba0e9961461077b578063cbecede0146107ae578063dd62ed3e146107c357610290565b8063b5d3e8081461073a578063c49b9a801461074f57610290565b8063a457c2d711610122578063a72079d611610107578063a72079d6146106b3578063a9059cbb146106ec578063ac177d3b1461072557610290565b8063a457c2d714610650578063a4f2d8991461068957610290565b806376bbe666146105d057806383e6bcd2146105fc5780638da5cb5b1461062657806395d89b411461063b57610290565b80633950935111610201578063519da73e116101b557806370a082311161019a57806370a0823114610573578063715018a6146105a6578063733b864f146105bb57610290565b8063519da73e146105305780635c6e88381461055e57610290565b806349abb68e116101e657806349abb68e146104f157806349bd5a5e146105065780634ada218b1461051b57610290565b806339509351146104865780634549b039146104bf57610290565b80631694505e1161025857806323b872dd1161023d57806323b872dd146103ee5780632d83811914610431578063313ce5671461045b57610290565b80631694505e146103c457806318160ddd146103d957610290565b806306fdde0314610295578063095ea7b31461031f57806310336de01461036c57806313114a9d1461039d57610290565b3661029057005b600080fd5b3480156102a157600080fd5b506102aa6108d8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102e45781810151838201526020016102cc565b50505050905090810190601f1680156103115780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561032b57600080fd5b506103586004803603604081101561034257600080fd5b506001600160a01b03813516906020013561098c565b604080519115158252519081900360200190f35b34801561037857600080fd5b506103816109aa565b604080516001600160a01b039092168252519081900360200190f35b3480156103a957600080fd5b506103b26109b9565b60408051918252519081900360200190f35b3480156103d057600080fd5b506103816109bf565b3480156103e557600080fd5b506103b26109ce565b3480156103fa57600080fd5b506103586004803603606081101561041157600080fd5b506001600160a01b038135811691602081013590911690604001356109d4565b34801561043d57600080fd5b506103b26004803603602081101561045457600080fd5b5035610a5b565b34801561046757600080fd5b50610470610abd565b6040805160ff9092168252519081900360200190f35b34801561049257600080fd5b50610358600480360360408110156104a957600080fd5b506001600160a01b038135169060200135610ac6565b3480156104cb57600080fd5b506103b2600480360360408110156104e257600080fd5b50803590602001351515610b14565b3480156104fd57600080fd5b50610381610ba4565b34801561051257600080fd5b50610381610bb3565b34801561052757600080fd5b50610358610bc2565b34801561053c57600080fd5b5061055c6004803603602081101561055357600080fd5b50351515610bd4565b005b34801561056a57600080fd5b50610358610c79565b34801561057f57600080fd5b506103b26004803603602081101561059657600080fd5b50356001600160a01b0316610c8a565b3480156105b257600080fd5b5061055c610cec565b3480156105c757600080fd5b5061055c610db8565b3480156105dc57600080fd5b5061055c600480360360208110156105f357600080fd5b50351515610e71565b34801561060857600080fd5b5061055c6004803603602081101561061f57600080fd5b5035610f14565b34801561063257600080fd5b50610381610f92565b34801561064757600080fd5b506102aa610fa1565b34801561065c57600080fd5b506103586004803603604081101561067357600080fd5b506001600160a01b038135169060200135611020565b34801561069557600080fd5b5061055c600480360360208110156106ac57600080fd5b5035611088565b3480156106bf57600080fd5b5061055c600480360360408110156106d657600080fd5b506001600160a01b038135169060200135611160565b3480156106f857600080fd5b506103586004803603604081101561070f57600080fd5b506001600160a01b0381351690602001356112b7565b34801561073157600080fd5b506103b26112cb565b34801561074657600080fd5b5061055c6112d1565b34801561075b57600080fd5b5061055c6004803603602081101561077257600080fd5b50351515611348565b34801561078757600080fd5b506103586004803603602081101561079e57600080fd5b50356001600160a01b03166113ea565b3480156107ba57600080fd5b50610358611408565b3480156107cf57600080fd5b506103b2600480360360408110156107e657600080fd5b506001600160a01b0381358116916020013516611417565b34801561080a57600080fd5b5061055c6004803603602081101561082157600080fd5b50351515611442565b34801561083657600080fd5b5061055c6004803603602081101561084d57600080fd5b50356001600160a01b03166114e6565b34801561086957600080fd5b5061055c6004803603602081101561088057600080fd5b50356001600160a01b03166116b4565b34801561089c57600080fd5b506103586117d6565b3480156108b157600080fd5b5061055c600480360360208110156108c857600080fd5b50356001600160a01b03166117e6565b600f8054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109825780601f1061095757610100808354040283529160200191610982565b820191906000526020600020905b81548152906001019060200180831161096557829003601f168201915b5050505050905090565b60006109a0610999611a43565b8484611a47565b5060015b92915050565b600a546001600160a01b031681565b600e5490565b6001546001600160a01b031681565b600c5490565b60006109e1848484611b33565b610a51846109ed611a43565b610a4c8560405180606001604052806028815260200161300f602891396001600160a01b038a16600090815260046020526040812090610a2b611a43565b6001600160a01b0316815260208101919091526040016000205491906120ce565b611a47565b5060019392505050565b6000600d54821115610a9e5760405162461bcd60e51b815260040180806020018281038252602a815260200180612fbf602a913960400191505060405180910390fd5b6000610aa8612165565b9050610ab48382612188565b9150505b919050565b60115460ff1690565b60006109a0610ad3611a43565b84610a4c8560046000610ae4611a43565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906121d1565b6000600c54831115610b6d576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b81610b8b576000610b7d8461222b565b509294506109a49350505050565b6000610b968461222b565b509194506109a49350505050565b600b546001600160a01b031681565b6007546001600160a01b031681565b60145465010000000000900460ff1681565b610bdc611a43565b6000546001600160a01b03908116911614610c3e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6014805491151565010000000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff909216919091179055565b601454640100000000900460ff1681565b6001600160a01b03811660009081526005602052604081205460ff1615610cca57506001600160a01b038116600090815260036020526040902054610ab8565b6001600160a01b0382166000908152600260205260409020546109a490610a5b565b610cf4611a43565b6000546001600160a01b03908116911614610d56576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b610dc0611a43565b6000546001600160a01b03908116911614610e22576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600754600090610e3a906001600160a01b0316610c8a565b90506000610e49826021612188565b90506000610e5630610c8a565b905081811115610e635750805b610e6c81612277565b505050565b610e79611a43565b6000546001600160a01b03908116911614610edb576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b601480549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b610f1c611a43565b6000546001600160a01b03908116911614610f7e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b601254610f8c908290612404565b60135550565b6000546001600160a01b031690565b60108054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109825780601f1061095757610100808354040283529160200191610982565b60006109a061102d611a43565b84610a4c856040518060600160405280602581526020016130a46025913960046000611057611a43565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906120ce565b6000611092611a43565b6001600160a01b03811660009081526005602052604090205490915060ff16156110ed5760405162461bcd60e51b815260040180806020018281038252602c8152602001806130c9602c913960400191505060405180910390fd5b60006110f88361222b565b505050506001600160a01b038316600090815260026020526040902054909150611122908261245d565b6001600160a01b038316600090815260026020526040902055600d54611148908261245d565b600d55600e5461115890846121d1565b600e55505050565b611168611a43565b6000546001600160a01b039081169116146111ca576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60008060006111d88461249f565b3360009081526002602052604090205492955090935091506111fa908461245d565b336000908152600260209081526040808320939093556001600160a01b038816825260039052205461122c90826121d1565b6001600160a01b03861660009081526003602090815260408083209390935560029052205461125b90836121d1565b6001600160a01b0386166000818152600260209081526040918290209390935580518481529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050505050565b60006109a06112c4611a43565b8484611b33565b60135490565b6112d9611a43565b6000546001600160a01b0390811691161461133b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b47611345816124da565b50565b611350611a43565b6000546001600160a01b039081169116146113b2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6014805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b6001600160a01b031660009081526005602052604090205460ff1690565b60145462010000900460ff1681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b61144a611a43565b6000546001600160a01b039081169116146114ac576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60148054911515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909216919091179055565b6114ee611a43565b6000546001600160a01b03908116911614611550576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811660009081526005602052604090205460ff16156115be576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090205415611618576001600160a01b0381166000908152600260205260409020546115fe90610a5b565b6001600160a01b0382166000908152600360205260409020555b6001600160a01b0316600081815260056020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b6116bc611a43565b6000546001600160a01b0390811691161461171e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166117635760405162461bcd60e51b8152600401808060200182810382526026815260200180612fe96026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6014546301000000900460ff1681565b6117ee611a43565b6000546001600160a01b03908116911614611850576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811660009081526005602052604090205460ff166118bd576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600654811015611a3f57816001600160a01b0316600682815481106118e157fe5b6000918252602090912001546001600160a01b03161415611a3757600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061192c57fe5b600091825260209091200154600680546001600160a01b03909216918390811061195257fe5b600091825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055918416815260038252604080822082905560059092522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905560068054806119da57fe5b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055611a3f565b6001016118c0565b5050565b3390565b6001600160a01b038316611a8c5760405162461bcd60e51b8152600401808060200182810382526024815260200180612f9b6024913960400191505060405180910390fd5b6001600160a01b038216611ad15760405162461bcd60e51b81526004018080602001828103825260228152602001806130f56022913960400191505060405180910390fd5b6001600160a01b03808416600081815260046020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611b785760405162461bcd60e51b8152600401808060200182810382526025815260200180612f766025913960400191505060405180910390fd5b6001600160a01b038216611bbd5760405162461bcd60e51b81526004018080602001828103825260238152602001806130816023913960400191505060405180910390fd5b60008111611bfc5760405162461bcd60e51b81526004018080602001828103825260298152602001806130586029913960400191505060405180910390fd5b601454610100900460ff1615611c4457611c178383836126c5565b601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055610e6c565b600b546000906001908290611c6e90611c65906001600160a01b0316610c8a565b600c549061245d565b90506001600160a01b038616301480611c9f5750611c8a610f92565b6001600160a01b0316866001600160a01b0316145b80611cb757506009546001600160a01b038781169116145b15611cc55760009250611cca565b600192505b6007546001600160a01b0386811691161480611cf357506001546001600160a01b038681169116145b15611d1857828015611d0e57506014546301000000900460ff165b15611d1857600291505b82156120935760145465010000000000900460ff16611d7e576040805162461bcd60e51b815260206004820152601360248201527f74726164696e67206e6f7420656e61626c656400000000000000000000000000604482015290519081900360640190fd5b6000611d8b826064612188565b601454909150640100000000900460ff1615611df65780851115611df6576040805162461bcd60e51b815260206004820152601560248201527f4d757374206265203c3d203125206f6620636972630000000000000000000000604482015290519081900360640190fd5b6000611e0130610c8a565b6013549091508110154783831115611e17578392505b8015611e5757601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055611e52816124da565b611ecc565b818015611e67575060145460ff16155b8015611e7e57506007546001600160a01b03163314155b8015611e92575060145462010000900460ff165b15611ecc57601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055611ecc83612277565b6000611ee687611ee06009818d6064612188565b90612404565b90506000611ef988611ee08c6064612188565b9050611f0f82611f098c8461245d565b9061245d565b9950611f1c8c30846127ad565b600b54611f34908d906001600160a01b0316836127ad565b6001600160a01b038c1660009081526005602052604090205460ff168015611f7557506001600160a01b038b1660009081526005602052604090205460ff16155b15611f8a57611f858c8c8c612853565b612088565b6001600160a01b038c1660009081526005602052604090205460ff16158015611fcb57506001600160a01b038b1660009081526005602052604090205460ff165b15611fdb57611f858c8c8c6127ad565b6001600160a01b038c1660009081526005602052604090205460ff1615801561201d57506001600160a01b038b1660009081526005602052604090205460ff16155b1561202d57611f858c8c8c6126c5565b6001600160a01b038c1660009081526005602052604090205460ff16801561206d57506001600160a01b038b1660009081526005602052604090205460ff165b1561207d57611f858c8c8c6128c3565b6120888c8c8c6126c5565b50505050505061209e565b61209e868686612933565b5050601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550505050565b6000818484111561215d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561212257818101518382015260200161210a565b50505050905090810190601f16801561214f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000612172612a30565b90925090506121818282612188565b9250505090565b60006121ca83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b93565b9392505050565b6000828201838110156121ca576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600080600061223f88612bf8565b91509150600061224d612165565b9050600080600061225f8c8686612c41565b919e909d50909b509599509397509395505050505050565b601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560006122b46011611ee0846012612188565b905060006122c2838361245d565b9050476122ce83612c7d565b60006122da478361245d565b905060006122e9826011612188565b905060006122fd6002611ee0856011612188565b905060006123116004611ee0866011612188565b6008546040519192506001600160a01b03169083156108fc029084906000818181858888f1935050505015801561234c573d6000803e3d6000fd5b506009546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612387573d6000803e3d6000fd5b506123928684612e5e565b604080518881526020810185905280820188905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15050601480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055505050505050565b600082612413575060006109a4565b8282028284828161242057fe5b04146121ca5760405162461bcd60e51b81526004018080602001828103825260218152602001806130376021913960400191505060405180910390fd5b60006121ca83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120ce565b6000806000806124ae85612f35565b905060006124ba612165565b90506000806124c98884612f38565b909990985093965092945050505050565b6040805160028082526060820183526000926020830190803683375050600154604080517fad5c464800000000000000000000000000000000000000000000000000000000815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561255857600080fd5b505afa15801561256c573d6000803e3d6000fd5b505050506040513d602081101561258257600080fd5b50518151829060009061259157fe5b6001600160a01b039283166020918202929092010152600a548251911690829060019081106125bc57fe5b6001600160a01b0392831660209182029290920101526001546125e29130911684611a47565b600154600b546040517fb6f9de95000000000000000000000000000000000000000000000000000000008152600481018581526001600160a01b03928316604483018190524260648401819052608060248501908152875160848601528751959096169563b6f9de9595899586958a9594939092909160a401906020808801910280838360005b83811015612681578181015183820152602001612669565b50505050905001955050505050506000604051808303818588803b1580156126a857600080fd5b505af11580156126bc573d6000803e3d6000fd5b50505050505050565b60008060008060006126d68661222b565b6001600160a01b038d1660009081526002602052604090205494995092975090955093509150612706908661245d565b6001600160a01b03808a16600090815260026020526040808220939093559089168152205461273590856121d1565b6001600160a01b0388166000908152600260205260409020556127588382612f51565b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b60008060008060006127be8661222b565b6001600160a01b038d16600090815260026020526040902054949950929750909550935091506127ee908661245d565b6001600160a01b03808a16600090815260026020908152604080832094909455918a1681526003909152205461282490836121d1565b6001600160a01b03881660009081526003602090815260408083209390935560029052205461273590856121d1565b60008060008060006128648661222b565b6001600160a01b038d1660009081526003602052604090205494995092975090955093509150612894908761245d565b6001600160a01b038916600090815260036020908152604080832093909355600290522054612706908661245d565b60008060008060006128d48661222b565b6001600160a01b038d1660009081526003602052604090205494995092975090955093509150612904908761245d565b6001600160a01b0389166000908152600360209081526040808320939093556002905220546127ee908661245d565b60008060006129418461249f565b6001600160a01b038916600090815260026020526040902054929550909350915061296c908461245d565b6001600160a01b038088166000908152600260209081526040808320949094559188168152600390915220546129a290826121d1565b6001600160a01b0386166000908152600360209081526040808320939093556002905220546129d190836121d1565b6001600160a01b0380871660008181526002602090815260409182902094909455805185815290519193928a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050505050565b600d54600c546000918291825b600654811015612b6157826002600060068481548110612a5957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612abe5750816003600060068481548110612a9757fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612ad557600d54600c5494509450505050612b8f565b612b156002600060068481548110612ae957fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061245d565b9250612b576003600060068481548110612b2b57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061245d565b9150600101612a3d565b50600c54600d54612b7191612188565b821015612b8957600d54600c54935093505050612b8f565b90925090505b9091565b60008183612be25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561212257818101518382015260200161210a565b506000838581612bee57fe5b0495945050505050565b60145460009081906002906301000000900460ff1615612c16575060045b6000612c2782611ee0876064612188565b90506000612c35868361245d565b94509092505050915091565b6000808080612c508786612404565b90506000612c5e8787612404565b90506000612c6c838361245d565b929992985090965090945050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612cac57fe5b6001600160a01b03928316602091820292909201810191909152600154604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b158015612d1957600080fd5b505afa158015612d2d573d6000803e3d6000fd5b505050506040513d6020811015612d4357600080fd5b5051815182906001908110612d5457fe5b6001600160a01b039283166020918202929092010152600154612d7a9130911684611a47565b6001546040517f791ac947000000000000000000000000000000000000000000000000000000008152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b83811015612e19578181015183820152602001612e01565b505050509050019650505050505050600060405180830381600087803b158015612e4257600080fd5b505af1158015612e56573d6000803e3d6000fd5b505050505050565b600154612e769030906001600160a01b031684611a47565b600154600b54604080517ff305d7190000000000000000000000000000000000000000000000000000000081523060048201526024810186905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991849160c48082019260609290919082900301818588803b158015612f0457600080fd5b505af1158015612f18573d6000803e3d6000fd5b50505050506040513d6060811015612f2f57600080fd5b50505050565b90565b60008080612f468585612404565b958695509350505050565b600d54612f5e908361245d565b600d55600e54612f6e90826121d1565b600e55505056fe42455032303a207472616e736665722066726f6d20746865207a65726f206164647265737342455032303a20617070726f76652066726f6d20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737342455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f42455032303a207472616e7366657220746f20746865207a65726f206164647265737342455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e42455032303a20617070726f766520746f20746865207a65726f2061646472657373a26469706673582212206fea11ba930e590d3e55e69104b76a271074d9ebbb00f125814f9887b9204ee964736f6c63430007060033

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

00000000000000000000000053f997da7206d6bf90ffc4236b3ca8efb7bb1a890000000000000000000000002adf3ddd9a238e8c0afea647137ae4f534405388

-----Decoded View---------------
Arg [0] : _presa (address): 0x53F997da7206D6bF90Ffc4236b3ca8EfB7BB1A89
Arg [1] : _rogeTreasury (address): 0x2ADf3ddd9A238E8c0afea647137aE4F534405388

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000053f997da7206d6bf90ffc4236b3ca8efb7bb1a89
Arg [1] : 0000000000000000000000002adf3ddd9a238e8c0afea647137ae4f534405388


Deployed Bytecode Sourcemap

12817:19345:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16432:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17344:161;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17344:161:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;13363:64;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;13363:64:0;;;;;;;;;;;;;;18455:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12953:41;;;;;;;;;;;;;:::i;16709:95::-;;;;;;;;;;;;;:::i;17513:313::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17513:313:0;;;;;;;;;;;;;;;;;:::i;19390:253::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19390:253:0;;:::i;16618:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17834:218;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17834:218:0;;;;;;;;:::i;18948:434::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18948:434:0;;;;;;;;;:::i;13435:75::-;;;;;;;;;;;;;:::i;13265:28::-;;;;;;;;;;;;;:::i;14087:26::-;;;;;;;;;;;;;:::i;15952:101::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15952:101:0;;;;:::i;:::-;;14060:20;;;;;;;;;;;;;:::i;16812:198::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16812:198:0;-1:-1:-1;;;;;16812:198:0;;:::i;5746:148::-;;;;;;;;;;;;;:::i;15143:391::-;;;;;;;;;;;;;:::i;15845:99::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15845:99:0;;;;:::i;16166:135::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16166:135:0;;:::i;5524:79::-;;;;;;;;;;;;;:::i;16523:87::-;;;;;;;;;;;;;:::i;18060:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18060:269:0;;;;;;;;:::i;18554:386::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18554:386:0;;:::i;26324:472::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26324:472:0;;;;;;;;:::i;17018:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17018:167:0;;;;;;;;:::i;16313:111::-;;;;;;;;;;;;;:::i;15542:159::-;;;;;;;;;;;;;:::i;15713:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15713:116:0;;;;:::i;18337:110::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18337:110:0;-1:-1:-1;;;;;18337:110:0;;:::i;13987:34::-;;;;;;;;;;;;;:::i;17193:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17193:143:0;;;;;;;;;;:::i;16065:89::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16065:89:0;;;;:::i;19651:332::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19651:332:0;-1:-1:-1;;;;;19651:332:0;;:::i;5906:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5906:244:0;-1:-1:-1;;;;;5906:244:0;;:::i;14028:25::-;;;;;;;;;;;;;:::i;19991:478::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19991:478:0;-1:-1:-1;;;;;19991:478:0;;:::i;16432:83::-;16502:5;16495:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16469:13;;16495:12;;16502:5;;16495:12;;16502:5;16495:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16432:83;:::o;17344:161::-;17419:4;17436:39;17445:12;:10;:12::i;:::-;17459:7;17468:6;17436:8;:39::i;:::-;-1:-1:-1;17493:4:0;17344:161;;;;;:::o;13363:64::-;;;-1:-1:-1;;;;;13363:64:0;;:::o;18455:87::-;18524:10;;18455:87;:::o;12953:41::-;;;-1:-1:-1;;;;;12953:41:0;;:::o;16709:95::-;16789:7;;16709:95;:::o;17513:313::-;17611:4;17628:36;17638:6;17646:9;17657:6;17628:9;:36::i;:::-;17675:121;17684:6;17692:12;:10;:12::i;:::-;17706:89;17744:6;17706:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17706:19:0;;;;;;:11;:19;;;;;;17726:12;:10;:12::i;:::-;-1:-1:-1;;;;;17706:33:0;;;;;;;;;;;;-1:-1:-1;17706:33:0;;;:89;:37;:89::i;:::-;17675:8;:121::i;:::-;-1:-1:-1;17814:4:0;17513:313;;;;;:::o;19390:253::-;19456:7;19495;;19484;:18;;19476:73;;;;-1:-1:-1;;;19476:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19560:19;19583:10;:8;:10::i;:::-;19560:33;-1:-1:-1;19611:24:0;:7;19560:33;19611:11;:24::i;:::-;19604:31;;;19390:253;;;;:::o;16618:83::-;16684:9;;;;16618:83;:::o;17834:218::-;17922:4;17939:83;17948:12;:10;:12::i;:::-;17962:7;17971:50;18010:10;17971:11;:25;17983:12;:10;:12::i;:::-;-1:-1:-1;;;;;17971:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;17971:25:0;;;:34;;;;;;;;;;;:38;:50::i;18948:434::-;19038:7;19077;;19066;:18;;19058:62;;;;;-1:-1:-1;;;19058:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19136:17;19131:244;;19171:15;19194:19;19205:7;19194:10;:19::i;:::-;-1:-1:-1;19170:43:0;;-1:-1:-1;19228:14:0;;-1:-1:-1;;;;19228:14:0;19131:244;19277:23;19307:19;19318:7;19307:10;:19::i;:::-;-1:-1:-1;19275:51:0;;-1:-1:-1;19341:22:0;;-1:-1:-1;;;;19341:22:0;13435:75;;;-1:-1:-1;;;;;13435:75:0;;:::o;13265:28::-;;;-1:-1:-1;;;;;13265:28:0;;:::o;14087:26::-;;;;;;;;;:::o;15952:101::-;5665:12;:10;:12::i;:::-;5655:6;;-1:-1:-1;;;;;5655:6:0;;;:22;;;5647:67;;;;;-1:-1:-1;;;5647:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16022:14:::1;:23:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;15952:101::o;14060:20::-;;;;;;;;;:::o;16812:198::-;-1:-1:-1;;;;;16902:20:0;;16878:7;16902:20;;;:11;:20;;;;;;;;16898:49;;;-1:-1:-1;;;;;;16931:16:0;;;;;;:7;:16;;;;;;16924:23;;16898:49;-1:-1:-1;;;;;16985:16:0;;;;;;:7;:16;;;;;;16965:37;;:19;:37::i;5746:148::-;5665:12;:10;:12::i;:::-;5655:6;;-1:-1:-1;;;;;5655:6:0;;;:22;;;5647:67;;;;;-1:-1:-1;;;5647:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5853:1:::1;5837:6:::0;;5816:40:::1;::::0;-1:-1:-1;;;;;5837:6:0;;::::1;::::0;5816:40:::1;::::0;5853:1;;5816:40:::1;5884:1;5867:19:::0;;;::::1;::::0;;5746:148::o;15143:391::-;5665:12;:10;:12::i;:::-;5655:6;;-1:-1:-1;;;;;5655:6:0;;;:22;;;5647:67;;;;;-1:-1:-1;;;5647:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15232:13:::1;::::0;15205:14:::1;::::0;15222:24:::1;::::0;-1:-1:-1;;;;;15232:13:0::1;15222:9;:24::i;:::-;15205:41:::0;-1:-1:-1;15257:20:0::1;15280:17;15205:41:::0;15294:2:::1;15280:13;:17::i;:::-;15257:40;;15308:25;15336:24;15354:4;15336:9;:24::i;:::-;15308:52;;15398:15;15375:20;:38;15371:109;;;-1:-1:-1::0;15453:15:0;15371:109:::1;15490:36;15505:20;15490:14;:36::i;:::-;5725:1;;;15143:391::o:0;15845:99::-;5665:12;:10;:12::i;:::-;5655:6;;-1:-1:-1;;;;;5655:6:0;;;:22;;;5647:67;;;;;-1:-1:-1;;;5647:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15914:13:::1;:22:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;15845:99::o;16166:135::-;5665:12;:10;:12::i;:::-;5655:6;;-1:-1:-1;;;;;5655:6:0;;;:22;;;5647:67;;;;;-1:-1:-1;;;5647:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16279:13:::1;::::0;16268:25:::1;::::0;:6;;:10:::1;:25::i;:::-;16243:22;:50:::0;-1:-1:-1;16166:135:0:o;5524:79::-;5562:7;5589:6;-1:-1:-1;;;;;5589:6:0;5524:79;:::o;16523:87::-;16595:7;16588:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16562:13;;16588:14;;16595:7;;16588:14;;16595:7;16588:14;;;;;;;;;;;;;;;;;;;;;;;;18060:269;18153:4;18170:129;18179:12;:10;:12::i;:::-;18193:7;18202:96;18241:15;18202:96;;;;;;;;;;;;;;;;;:11;:25;18214:12;:10;:12::i;:::-;-1:-1:-1;;;;;18202:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;18202:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;18554:386::-;18616:14;18633:12;:10;:12::i;:::-;-1:-1:-1;;;;;18665:19:0;;;;;;:11;:19;;;;;;18616:29;;-1:-1:-1;18665:19:0;;18664:20;18656:77;;;;-1:-1:-1;;;18656:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18745:15;18768:19;18779:7;18768:10;:19::i;:::-;-1:-1:-1;;;;;;;;;18816:15:0;;;;;;:7;:15;;;;;;18744:43;;-1:-1:-1;18816:28:0;;18744:43;18816:19;:28::i;:::-;-1:-1:-1;;;;;18798:15:0;;;;;;:7;:15;;;;;:46;18865:7;;:20;;18877:7;18865:11;:20::i;:::-;18855:7;:30;18909:10;;:23;;18924:7;18909:14;:23::i;:::-;18896:10;:36;-1:-1:-1;;;18554:386:0:o;26324:472::-;5665:12;:10;:12::i;:::-;5655:6;;-1:-1:-1;;;;;5655:6:0;;;:22;;;5647:67;;;;;-1:-1:-1;;;5647:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26425:12:::1;26439:20:::0;26461::::1;26485:21;26498:7;26485:12;:21::i;:::-;26547:10;26539:19;::::0;;;:7:::1;:19;::::0;;;;;26424:82;;-1:-1:-1;26424:82:0;;-1:-1:-1;26424:82:0;-1:-1:-1;26539:32:0::1;::::0;26424:82;26539:23:::1;:32::i;:::-;26525:10;26517:19;::::0;;;:7:::1;:19;::::0;;;;;;;:54;;;;-1:-1:-1;;;;;26603:18:0;::::1;::::0;;:7:::1;:18:::0;;;;:39:::1;::::0;26626:15;26603:22:::1;:39::i;:::-;-1:-1:-1::0;;;;;26582:18:0;::::1;;::::0;;;:7:::1;:18;::::0;;;;;;;:60;;;;26674:7:::1;:18:::0;;;;:39:::1;::::0;26697:15;26674:22:::1;:39::i;:::-;-1:-1:-1::0;;;;;26653:18:0;::::1;;::::0;;;:7:::1;:18;::::0;;;;;;;;:60;;;;26740:48;;;;;;;26653:18;;26749:10:::1;::::0;26740:48:::1;::::0;;;;;;;;::::1;5725:1;;;26324:472:::0;;:::o;17018:167::-;17096:4;17113:42;17123:12;:10;:12::i;:::-;17137:9;17148:6;17113:9;:42::i;16313:111::-;16394:22;;16313:111;:::o;15542:159::-;5665:12;:10;:12::i;:::-;5655:6;;-1:-1:-1;;;;;5655:6:0;;;:22;;;5647:67;;;;;-1:-1:-1;;;5647:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15627:21:::1;15659:34;15627:21:::0;15659:14:::1;:34::i;:::-;5725:1;15542:159::o:0;15713:116::-;5665:12;:10;:12::i;:::-;5655:6;;-1:-1:-1;;;;;5655:6:0;;;:22;;;5647:67;;;;;-1:-1:-1;;;5647:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15790:22:::1;:31:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;15713:116::o;18337:110::-;-1:-1:-1;;;;;18419:20:0;18395:4;18419:20;;;:11;:20;;;;;;;;;18337:110::o;13987:34::-;;;;;;;;;:::o;17193:143::-;-1:-1:-1;;;;;17301:18:0;;;17274:7;17301:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;17193:143::o;16065:89::-;5665:12;:10;:12::i;:::-;5655:6;;-1:-1:-1;;;;;5655:6:0;;;:22;;;5647:67;;;;;-1:-1:-1;;;5647:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16129:8:::1;:17:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;16065:89::o;19651:332::-;5665:12;:10;:12::i;:::-;5655:6;;-1:-1:-1;;;;;5655:6:0;;;:22;;;5647:67;;;;;-1:-1:-1;;;5647:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19733:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;19732:21;19724:61;;;::::0;;-1:-1:-1;;;19724:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;19799:16:0;::::1;19818:1;19799:16:::0;;;:7:::1;:16;::::0;;;;;:20;19796:108:::1;;-1:-1:-1::0;;;;;19875:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;19855:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;19836:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;19796:108:::1;-1:-1:-1::0;;;;;19914:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;;::::1;19937:4;19914:27:::0;;::::1;::::0;;;19952:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;19651:332::o;5906:244::-;5665:12;:10;:12::i;:::-;5655:6;;-1:-1:-1;;;;;5655:6:0;;;:22;;;5647:67;;;;;-1:-1:-1;;;5647:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5995:22:0;::::1;5987:73;;;;-1:-1:-1::0;;;5987:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6097:6;::::0;;6076:38:::1;::::0;-1:-1:-1;;;;;6076:38:0;;::::1;::::0;6097:6;::::1;::::0;6076:38:::1;::::0;::::1;6125:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;6125:17:0;;;::::1;::::0;;;::::1;::::0;;5906:244::o;14028:25::-;;;;;;;;;:::o;19991:478::-;5665:12;:10;:12::i;:::-;5655:6;;-1:-1:-1;;;;;5655:6:0;;;:22;;;5647:67;;;;;-1:-1:-1;;;5647:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20072:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;20064:60;;;::::0;;-1:-1:-1;;;20064:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;20140:9;20135:327;20159:9;:16:::0;20155:20;::::1;20135:327;;;20217:7;-1:-1:-1::0;;;;;20201:23:0::1;:9;20211:1;20201:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;20201:12:0::1;:23;20197:254;;;20260:9;20270:16:::0;;:20;;;;20260:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;20245:9:::1;:12:::0;;-1:-1:-1;;;;;20260:31:0;;::::1;::::0;20255:1;;20245:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;;::::1;-1:-1:-1::0;;;;;20245:46:0;;::::1;;::::0;;20310:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;20349:11:::1;:20:::0;;;;:28;;;::::1;::::0;;20396:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;;20430:5:::1;;20197:254;20177:3;;20135:327;;;;19991:478:::0;:::o;103:106::-;191:10;103:106;:::o;20477:337::-;-1:-1:-1;;;;;20570:19:0;;20562:68;;;;-1:-1:-1;;;20562:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20649:21:0;;20641:68;;;;-1:-1:-1;;;20641:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20722:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20774:32;;;;;;;;;;;;;;;;;20477:337;;;:::o;20822:3219::-;-1:-1:-1;;;;;20919:20:0;;20911:70;;;;-1:-1:-1;;;20911:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21000:23:0;;20992:71;;;;-1:-1:-1;;;20992:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21091:1;21082:6;:10;21074:64;;;;-1:-1:-1;;;21074:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21162:14;;;;;;;21159:2881;;;21188:44;21206:6;21214:9;21225:6;21188:17;:44::i;:::-;21243:14;:22;;;;;;21159:2881;;;21421:15;;21308:18;;21354:1;;21308:18;;21391:48;;21403:35;;-1:-1:-1;;;;;21421:15:0;21403:9;:35::i;:::-;21391:7;;;:11;:48::i;:::-;21366:73;-1:-1:-1;;;;;;21456:23:0;;21474:4;21456:23;;:44;;;21493:7;:5;:7::i;:::-;-1:-1:-1;;;;;21483:17:0;:6;-1:-1:-1;;;;;21483:17:0;;21456:44;:79;;;-1:-1:-1;21522:12:0;;-1:-1:-1;;;;;21504:31:0;;;21522:12;;21504:31;21456:79;21453:185;;;21568:5;21552:21;;21453:185;;;21622:4;21606:20;;21453:185;21674:13;;-1:-1:-1;;;;;21653:35:0;;;21674:13;;21653:35;;:76;;-1:-1:-1;21713:15:0;;-1:-1:-1;;;;;21692:37:0;;;21713:15;;21692:37;21653:76;21650:226;;;21771:13;:30;;;;-1:-1:-1;21788:13:0;;;;;;;21771:30;21767:98;;;21844:1;21832:13;;21767:98;21900:13;21896:2104;;;21938:14;;;;;;;21930:46;;;;;-1:-1:-1;;;21930:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;21991:10;22004:26;:17;22026:3;22004:21;:26::i;:::-;22049:8;;21991:39;;-1:-1:-1;22049:8:0;;;;;22045:98;;;22096:5;22086:6;:15;;22078:49;;;;;-1:-1:-1;;;22078:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22171:25;22199:24;22217:4;22199:9;:24::i;:::-;22290:22;;22171:52;;-1:-1:-1;22266:46:0;;;22354:21;22393:28;;;22390:100;;;22469:5;22446:28;;22390:100;22521:22;;22518:356;;22564:14;:21;;;;;;;;22604:34;22619:18;22604:14;:34::i;:::-;22518:356;;;22664:19;:40;;;;-1:-1:-1;22688:16:0;;;;22687:17;22664:40;:71;;;;-1:-1:-1;22722:13:0;;-1:-1:-1;;;;;22722:13:0;22708:10;:27;;22664:71;:97;;;;-1:-1:-1;22739:22:0;;;;;;;22664:97;22660:214;;;22782:14;:21;;;;;;;;22822:36;22837:20;22822:14;:36::i;:::-;22902:16;22921:37;22948:9;22921:22;22941:1;22921:22;:6;22932:3;22921:10;:15::i;:::-;:19;;:22::i;:37::-;22902:56;-1:-1:-1;22973:15:0;22991:30;23011:9;22991:15;:6;23002:3;22991:10;:15::i;:30::-;22973:48;-1:-1:-1;23045:39:0;23072:11;23045:22;:6;22973:48;23045:10;:22::i;:::-;:26;;:39::i;:::-;23036:48;;23099:55;23119:6;23135:4;23142:11;23099:19;:55::i;:::-;23205:15;;23169:65;;23189:6;;-1:-1:-1;;;;;23205:15:0;23223:10;23169:19;:65::i;:::-;-1:-1:-1;;;;;23267:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;23291:22:0;;;;;;:11;:22;;;;;;;;23290:23;23267:46;23263:637;;;23334:48;23356:6;23364:9;23375:6;23334:21;:48::i;:::-;23263:637;;;-1:-1:-1;;;;;23409:19:0;;;;;;:11;:19;;;;;;;;23408:20;:46;;;;-1:-1:-1;;;;;;23432:22:0;;;;;;:11;:22;;;;;;;;23408:46;23404:496;;;23475:46;23495:6;23503:9;23514:6;23475:19;:46::i;23404:496::-;-1:-1:-1;;;;;23548:19:0;;;;;;:11;:19;;;;;;;;23547:20;:47;;;;-1:-1:-1;;;;;;23572:22:0;;;;;;:11;:22;;;;;;;;23571:23;23547:47;23543:357;;;23615:44;23633:6;23641:9;23652:6;23615:17;:44::i;23543:357::-;-1:-1:-1;;;;;23685:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;23708:22:0;;;;;;:11;:22;;;;;;;;23685:45;23681:219;;;23751:48;23773:6;23781:9;23792:6;23751:21;:48::i;23681:219::-;23840:44;23858:6;23866:9;23877:6;23840:17;:44::i;:::-;21896:2104;;;;;;;;;23932:56;23962:6;23970:9;23981:6;23932:29;:56::i;:::-;-1:-1:-1;;24010:14:0;:22;;;;;;-1:-1:-1;20822:3219:0;;;:::o;1505:192::-;1591:7;1627:12;1619:6;;;;1611:29;;;;-1:-1:-1;;;1611:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1663:5:0;;;1505:192::o;29155:163::-;29196:7;29217:15;29234;29253:19;:17;:19::i;:::-;29216:56;;-1:-1:-1;29216:56:0;-1:-1:-1;29290:20:0;29216:56;;29290:11;:20::i;:::-;29283:27;;;;29155:163;:::o;1967:132::-;2025:7;2052:39;2056:1;2059;2052:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2045:46;1967:132;-1:-1:-1;;;1967:132:0:o;1164:181::-;1222:7;1254:5;;;1278:6;;;;1270:46;;;;;-1:-1:-1;;;1270:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;28057:411;28116:7;28125;28134;28143;28152;28173:23;28198:12;28214:20;28226:7;28214:11;:20::i;:::-;28172:62;;;;28245:19;28268:10;:8;:10::i;:::-;28245:33;;28290:15;28307:23;28332:12;28348:39;28360:7;28369:4;28375:11;28348;:39::i;:::-;28289:98;;;;-1:-1:-1;28289:98:0;;-1:-1:-1;28438:15:0;;-1:-1:-1;28455:4:0;;-1:-1:-1;28057:411:0;;-1:-1:-1;;;;;;28057:411:0:o;29899:910::-;14257:16;:23;;;;14276:4;14257:23;;;:16;30015:36:::1;30048:2;30015:28;:20:::0;30040:2:::1;30015:24;:28::i;:36::-;29984:67:::0;-1:-1:-1;30062:24:0::1;30089:46;:20:::0;29984:67;30089:24:::1;:46::i;:::-;30062:73:::0;-1:-1:-1;30181:21:0::1;30223:38;30240:20:::0;30223:16:::1;:38::i;:::-;30283:18;30304:41;:21;30330:14:::0;30304:25:::1;:41::i;:::-;30283:62:::0;-1:-1:-1;30366:20:0::1;30389:18;30283:62:::0;30404:2:::1;30389:14;:18::i;:::-;30366:41:::0;-1:-1:-1;30418:13:0::1;30434:25;30457:1;30434:18;:10:::0;30449:2:::1;30434:14;:18::i;:25::-;30418:41:::0;-1:-1:-1;30470:20:0::1;30493:25;30516:1;30493:18;:10:::0;30508:2:::1;30493:14;:18::i;:25::-;30555:5;::::0;30539:42:::1;::::0;30470:48;;-1:-1:-1;;;;;;30555:5:0::1;::::0;30539:42;::::1;;;::::0;30572:8;;30555:5:::1;30539:42:::0;30555:5;30539:42;30572:8;30555:5;30539:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;30608:12:0::1;::::0;30592:56:::1;::::0;-1:-1:-1;;;;;30608:12:0;;::::1;::::0;30592:56;::::1;;;::::0;30632:15;;30608:12:::1;30592:56:::0;30608:12;30592:56;30632:15;30608:12;30592:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;30659:47;30672:16;30690:15;30659:12;:47::i;:::-;30732:69;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;;;;::::1;-1:-1:-1::0;;14303:16:0;:24;;;;;;-1:-1:-1;;;;;;29899:910:0:o;1709:246::-;1767:7;1791:6;1787:47;;-1:-1:-1;1821:1:0;1814:8;;1787:47;1856:5;;;1860:1;1856;:5;:1;1880:5;;;;;:10;1872:56;;;;-1:-1:-1;;;1872:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1357:136;1415:7;1442:43;1446:1;1449;1442:43;;;;;;;;;;;;;;;;;:3;:43::i;27284:341::-;27345:7;27354;27363;27384:20;27408:22;27422:7;27408:13;:22::i;:::-;27383:47;;27441:16;27461:10;:8;:10::i;:::-;27441:30;;27483:12;27497:20;27521:35;27535:7;27544:11;27521:13;:35::i;:::-;27482:74;;;;-1:-1:-1;27601:15:0;;-1:-1:-1;27284:341:0;;-1:-1:-1;;;;;27284:341:0:o;31311:409::-;31394:16;;;31408:1;31394:16;;;;;;;;31370:21;;31394:16;;;;;;;;-1:-1:-1;;31431:15:0;;:22;;;;;;;;31370:40;;-1:-1:-1;;;;;;31431:15:0;;;;:20;;-1:-1:-1;31431:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31431:22:0;31421:7;;:4;;31426:1;;31421:7;;;;-1:-1:-1;;;;;31421:32:0;;;:7;;;;;;;;;:32;31482:4;;31464:7;;31482:4;;;31464;;31482;;31464:7;;;;;;-1:-1:-1;;;;;31464:23:0;;;:7;;;;;;;;;:23;31532:15;;31500:60;;31517:4;;31532:15;31550:9;31500:8;:60::i;:::-;31571:15;;31679;;31571:141;;;;;;;;;;;-1:-1:-1;;;;;31679:15:0;;;31571:141;;;;;;31696:15;31571:141;;;;;;;;;;;;;;;;;;;;;:15;;;;;:66;;31645:9;;;;31666:4;;31679:15;31696;31571:141;;;;;;;;;;;;;;;;:15;:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31311:409;;:::o;24055:452::-;24154:15;24171:23;24196:12;24210:23;24235:12;24251:19;24262:7;24251:10;:19::i;:::-;-1:-1:-1;;;;;24299:15:0;;;;;;:7;:15;;;;;;24153:117;;-1:-1:-1;24153:117:0;;-1:-1:-1;24153:117:0;;-1:-1:-1;24153:117:0;-1:-1:-1;24153:117:0;-1:-1:-1;24299:28:0;;24153:117;24299:19;:28::i;:::-;-1:-1:-1;;;;;24281:15:0;;;;;;;:7;:15;;;;;;:46;;;;24359:18;;;;;;;:39;;24382:15;24359:22;:39::i;:::-;-1:-1:-1;;;;;24338:18:0;;;;;;:7;:18;;;;;:60;24416:23;24428:4;24434;24416:11;:23::i;:::-;24472:9;-1:-1:-1;;;;;24455:44:0;24464:6;-1:-1:-1;;;;;24455:44:0;;24483:15;24455:44;;;;;;;;;;;;;;;;;;24055:452;;;;;;;;:::o;24518:529::-;24619:15;24636:23;24661:12;24675:23;24700:12;24716:19;24727:7;24716:10;:19::i;:::-;-1:-1:-1;;;;;24764:15:0;;;;;;:7;:15;;;;;;24618:117;;-1:-1:-1;24618:117:0;;-1:-1:-1;24618:117:0;;-1:-1:-1;24618:117:0;-1:-1:-1;24618:117:0;-1:-1:-1;24764:28:0;;24618:117;24764:19;:28::i;:::-;-1:-1:-1;;;;;24746:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;24824:18;;;;;:7;:18;;;;;:39;;24847:15;24824:22;:39::i;:::-;-1:-1:-1;;;;;24803:18:0;;;;;;:7;:18;;;;;;;;:60;;;;24895:7;:18;;;;:39;;24918:15;24895:22;:39::i;25055:509::-;25158:15;25175:23;25200:12;25214:23;25239:12;25255:19;25266:7;25255:10;:19::i;:::-;-1:-1:-1;;;;;25303:15:0;;;;;;:7;:15;;;;;;25157:117;;-1:-1:-1;25157:117:0;;-1:-1:-1;25157:117:0;;-1:-1:-1;25157:117:0;-1:-1:-1;25157:117:0;-1:-1:-1;25303:28:0;;25323:7;25303:19;:28::i;:::-;-1:-1:-1;;;;;25285:15:0;;;;;;:7;:15;;;;;;;;:46;;;;25360:7;:15;;;;:28;;25380:7;25360:19;:28::i;25572:585::-;25675:15;25692:23;25717:12;25731:23;25756:12;25772:19;25783:7;25772:10;:19::i;:::-;-1:-1:-1;;;;;25820:15:0;;;;;;:7;:15;;;;;;25674:117;;-1:-1:-1;25674:117:0;;-1:-1:-1;25674:117:0;;-1:-1:-1;25674:117:0;-1:-1:-1;25674:117:0;-1:-1:-1;25820:28:0;;25840:7;25820:19;:28::i;:::-;-1:-1:-1;;;;;25802:15:0;;;;;;:7;:15;;;;;;;;:46;;;;25877:7;:15;;;;:28;;25897:7;25877:19;:28::i;26808:462::-;26919:12;26933:20;26955;26979:21;26992:7;26979:12;:21::i;:::-;-1:-1:-1;;;;;27029:15:0;;;;;;:7;:15;;;;;;26918:82;;-1:-1:-1;26918:82:0;;-1:-1:-1;26918:82:0;-1:-1:-1;27029:28:0;;26918:82;27029:19;:28::i;:::-;-1:-1:-1;;;;;27011:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;27089:18;;;;;:7;:18;;;;;:39;;27112:15;27089:22;:39::i;:::-;-1:-1:-1;;;;;27068:18:0;;;;;;:7;:18;;;;;;;;:60;;;;27160:7;:18;;;;:39;;27183:15;27160:22;:39::i;:::-;-1:-1:-1;;;;;27139:18:0;;;;;;;:7;:18;;;;;;;;;:60;;;;27218:44;;;;;;;27139:18;;27218:44;;;;;;;;;;;;;26808:462;;;;;;:::o;29326:561::-;29423:7;;29459;;29376;;;;;29483:289;29507:9;:16;29503:20;;29483:289;;;29573:7;29549;:21;29557:9;29567:1;29557:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29557:12:0;29549:21;;;;;;;;;;;;;:31;;:66;;;29608:7;29584;:21;29592:9;29602:1;29592:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29592:12:0;29584:21;;;;;;;;;;;;;:31;29549:66;29545:97;;;29625:7;;29634;;29617:25;;;;;;;;;29545:97;29667:34;29679:7;:21;29687:9;29697:1;29687:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29687:12:0;29679:21;;;;;;;;;;;;;29667:7;;:11;:34::i;:::-;29657:44;;29726:34;29738:7;:21;29746:9;29756:1;29746:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29746:12:0;29738:21;;;;;;;;;;;;;29726:7;;:11;:34::i;:::-;29716:44;-1:-1:-1;29525:3:0;;29483:289;;;-1:-1:-1;29808:7:0;;29796;;:20;;:11;:20::i;:::-;29786:7;:30;29782:61;;;29826:7;;29835;;29818:25;;;;;;;;29782:61;29862:7;;-1:-1:-1;29871:7:0;-1:-1:-1;29326:561:0;;;:::o;2111:189::-;2197:7;2232:12;2225:5;2217:28;;;;-1:-1:-1;;;2217:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2256:9;2272:1;2268;:5;;;;;;;2111:189;-1:-1:-1;;;;;2111:189:0:o;28476:329::-;28595:13;;28536:7;;;;28580:1;;28595:13;;;;;28592:56;;;-1:-1:-1;28635:1:0;28592:56;28658:12;28673:29;28694:7;28673:16;:7;28685:3;28673:11;:16::i;:29::-;28658:44;-1:-1:-1;28713:23:0;28739:17;:7;28658:44;28739:11;:17::i;:::-;28713:43;-1:-1:-1;28792:4:0;;-1:-1:-1;;;28476:329:0;;;:::o;28813:334::-;28908:7;;;;28964:24;:7;28976:11;28964;:24::i;:::-;28946:42;-1:-1:-1;28999:12:0;29014:21;:4;29023:11;29014:8;:21::i;:::-;28999:36;-1:-1:-1;29046:23:0;29072:17;:7;28999:36;29072:11;:17::i;:::-;29108:7;;;;-1:-1:-1;29134:4:0;;-1:-1:-1;28813:334:0;;-1:-1:-1;;;;;28813:334:0:o;30817:481::-;30967:16;;;30981:1;30967:16;;;;;;;;30943:21;;30967:16;;;;;;;;;;-1:-1:-1;30967:16:0;30943:40;;31012:4;30994;30999:1;30994:7;;;;;;;;-1:-1:-1;;;;;30994:23:0;;;:7;;;;;;;;;;:23;;;;31038:15;;:22;;;;;;;;:15;;;;;:20;;:22;;;;;30994:7;;31038:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31038:22:0;31028:7;;:4;;31033:1;;31028:7;;;;;;-1:-1:-1;;;;;31028:32:0;;;:7;;;;;;;;;:32;31105:15;;31073:62;;31090:4;;31105:15;31123:11;31073:8;:62::i;:::-;31174:15;;:116;;;;;;;;;;;:15;:116;;;;;;31268:4;31174:116;;;;;;31274:15;31174:116;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31174:15:0;;;;:66;;31241:11;;31255:4;;31268;31274:15;31174:116;;;;;;;;;;;;;;;;:15;:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30817:481;;:::o;31730:382::-;31910:15;;31878:62;;31895:4;;-1:-1:-1;;;;;31910:15:0;31928:11;31878:8;:62::i;:::-;31983:15;;32071;;31983:121;;;;;;32041:4;31983:121;;;;;;;;;;:15;:121;;;;;;;;;;-1:-1:-1;;;;;32071:15:0;;;31983:121;;;;32088:15;31983:121;;;;;;:15;;;;;:31;;32022:9;;31983:121;;;;;;;;;;;;;;;32022:9;31983:15;:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;31730:382:0:o;27633:158::-;27741:7;27633:158::o;27799:250::-;27882:7;;;27929:24;:7;27941:11;27929;:24::i;:::-;27911:42;;;-1:-1:-1;27799:250:0;-1:-1:-1;;;;27799:250:0:o;26165:147::-;26243:7;;:17;;26255:4;26243:11;:17::i;:::-;26233:7;:27;26284:10;;:20;;26299:4;26284:14;:20::i;:::-;26271:10;:33;-1:-1:-1;;26165:147:0:o

Swarm Source

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