ETH Price: $3,323.92 (+0.43%)
 

Overview

Max Total Supply

10,000,027,443.310823037281512163 DST

Holders

79 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: DAI-DST
Balance
10,000,011,637.688480144865173414 DST

Value
$0.00
0x706b21bf60adb79d2326d39086e4c27766193185
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

DST is an algorithmic based stable coin inspired by basis/basis cash.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
dynamicToken

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: CC-BY-NC-SA-2.5
//@code0x2

pragma solidity ^0.6.12;

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 IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        // This method relies in extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

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

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

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

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) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

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

        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the 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;
    }
}

contract Operator is Context, Ownable {
    address private _operator;

    event OperatorTransferred(
        address indexed previousOperator,
        address indexed newOperator
    );

    constructor() internal {
        _operator = _msgSender();
        emit OperatorTransferred(address(0), _operator);
    }

    function operator() public view returns (address) {
        return _operator;
    }

    modifier onlyOperator() {
        require(
            _operator == msg.sender,
            'operator: caller is not the operator'
        );
        _;
    }

    function isOperator() public view returns (bool) {
        return _msgSender() == _operator;
    }

    function transferOperator(address newOperator_) public onlyOwner {
        _transferOperator(newOperator_);
    }

    function _transferOperator(address newOperator_) internal {
        require(
            newOperator_ != address(0),
            'operator: zero address given for new operator'
        );
        emit OperatorTransferred(address(0), newOperator_);
        _operator = newOperator_;
    }
}

library Babylonian {
    function sqrt(uint256 y) internal pure returns (uint256 z) {
        if (y > 3) {
            z = y;
            uint256 x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
        // else z = 0
    }
}

library FixedPoint {
    // range: [0, 2**112 - 1]
    // resolution: 1 / 2**112
    struct uq112x112 {
        uint224 _x;
    }

    // range: [0, 2**144 - 1]
    // resolution: 1 / 2**112
    struct uq144x112 {
        uint256 _x;
    }

    uint8 private constant RESOLUTION = 112;
    uint256 private constant Q112 = uint256(1) << RESOLUTION;
    uint256 private constant Q224 = Q112 << RESOLUTION;

    // encode a uint112 as a UQ112x112
    function encode(uint112 x) internal pure returns (uq112x112 memory) {
        return uq112x112(uint224(x) << RESOLUTION);
    }

    // encodes a uint144 as a UQ144x112
    function encode144(uint144 x) internal pure returns (uq144x112 memory) {
        return uq144x112(uint256(x) << RESOLUTION);
    }

    // divide a UQ112x112 by a uint112, returning a UQ112x112
    function div(uq112x112 memory self, uint112 x)
        internal
        pure
        returns (uq112x112 memory)
    {
        require(x != 0, 'FixedPoint: DIV_BY_ZERO');
        return uq112x112(self._x / uint224(x));
    }

    // multiply a UQ112x112 by a uint, returning a UQ144x112
    // reverts on overflow
    function mul(uq112x112 memory self, uint256 y)
        internal
        pure
        returns (uq144x112 memory)
    {
        uint256 z;
        require(
            y == 0 || (z = uint256(self._x) * y) / y == uint256(self._x),
            'FixedPoint: MULTIPLICATION_OVERFLOW'
        );
        return uq144x112(z);
    }

    // returns a UQ112x112 which represents the ratio of the numerator to the denominator
    // equivalent to encode(numerator).div(denominator)
    function fraction(uint112 numerator, uint112 denominator)
        internal
        pure
        returns (uq112x112 memory)
    {
        require(denominator > 0, 'FixedPoint: DIV_BY_ZERO');
        return uq112x112((uint224(numerator) << RESOLUTION) / denominator);
    }

    // decode a UQ112x112 into a uint112 by truncating after the radix point
    function decode(uq112x112 memory self) internal pure returns (uint112) {
        return uint112(self._x >> RESOLUTION);
    }

    // decode a UQ144x112 into a uint144 by truncating after the radix point
    function decode144(uq144x112 memory self) internal pure returns (uint144) {
        return uint144(self._x >> RESOLUTION);
    }

    // take the reciprocal of a UQ112x112
    function reciprocal(uq112x112 memory self)
        internal
        pure
        returns (uq112x112 memory)
    {
        require(self._x != 0, 'FixedPoint: ZERO_RECIPROCAL');
        return uq112x112(uint224(Q224 / self._x));
    }

    // square root of a UQ112x112
    function sqrt(uq112x112 memory self)
        internal
        pure
        returns (uq112x112 memory)
    {
        return uq112x112(uint224(Babylonian.sqrt(uint256(self._x)) << 56));
    }
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 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 (uint256);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

library UniswapV2Library {
    using SafeMath for uint256;

    // returns sorted token addresses, used to handle return values from pairs sorted in this order
    function sortTokens(address tokenA, address tokenB)
        internal
        pure
        returns (address token0, address token1)
    {
        require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB
            ? (tokenA, tokenB)
            : (tokenB, tokenA);
        require(token0 != address(0), 'UniswapV2Library: ZERO_ADDRESS');
    }

    // calculates the CREATE2 address for a pair without making any external calls
    function pairFor(
        address factory,
        address tokenA,
        address tokenB
    ) internal pure returns (address pair) {
        (address token0, address token1) = sortTokens(tokenA, tokenB);
        pair = address(
            uint256(
                keccak256(
                    abi.encodePacked(
                        hex'ff',
                        factory,
                        keccak256(abi.encodePacked(token0, token1)),
                        hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash
                    )
                )
            )
        );
    }

    // fetches and sorts the reserves for a pair
    function getReserves(
        address factory,
        address tokenA,
        address tokenB
    ) internal view returns (uint256 reserveA, uint256 reserveB) {
        (address token0, ) = sortTokens(tokenA, tokenB);
        (uint256 reserve0, uint256 reserve1, ) = IUniswapV2Pair(
            pairFor(factory, tokenA, tokenB)
        )
            .getReserves();
        (reserveA, reserveB) = tokenA == token0
            ? (reserve0, reserve1)
            : (reserve1, reserve0);
    }

    // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset
    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) internal pure returns (uint256 amountB) {
        require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT');
        require(
            reserveA > 0 && reserveB > 0,
            'UniswapV2Library: INSUFFICIENT_LIQUIDITY'
        );
        amountB = amountA.mul(reserveB) / reserveA;
    }

    // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset
    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) internal pure returns (uint256 amountOut) {
        require(amountIn > 0, 'UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT');
        require(
            reserveIn > 0 && reserveOut > 0,
            'UniswapV2Library: INSUFFICIENT_LIQUIDITY'
        );
        uint256 amountInWithFee = amountIn.mul(997);
        uint256 numerator = amountInWithFee.mul(reserveOut);
        uint256 denominator = reserveIn.mul(1000).add(amountInWithFee);
        amountOut = numerator / denominator;
    }

    // given an output amount of an asset and pair reserves, returns a required input amount of the other asset
    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) internal pure returns (uint256 amountIn) {
        require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');
        require(
            reserveIn > 0 && reserveOut > 0,
            'UniswapV2Library: INSUFFICIENT_LIQUIDITY'
        );
        uint256 numerator = reserveIn.mul(amountOut).mul(1000);
        uint256 denominator = reserveOut.sub(amountOut).mul(997);
        amountIn = (numerator / denominator).add(1);
    }

    // performs chained getAmountOut calculations on any number of pairs
    function getAmountsOut(
        address factory,
        uint256 amountIn,
        address[] memory path
    ) internal view returns (uint256[] memory amounts) {
        require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');
        amounts = new uint256[](path.length);
        amounts[0] = amountIn;
        for (uint256 i; i < path.length - 1; i++) {
            (uint256 reserveIn, uint256 reserveOut) = getReserves(
                factory,
                path[i],
                path[i + 1]
            );
            amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);
        }
    }

    // performs chained getAmountIn calculations on any number of pairs
    function getAmountsIn(
        address factory,
        uint256 amountOut,
        address[] memory path
    ) internal view returns (uint256[] memory amounts) {
        require(path.length >= 2, 'UniswapV2Library: INVALID_PATH');
        amounts = new uint256[](path.length);
        amounts[amounts.length - 1] = amountOut;
        for (uint256 i = path.length - 1; i > 0; i--) {
            (uint256 reserveIn, uint256 reserveOut) = getReserves(
                factory,
                path[i - 1],
                path[i]
            );
            amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);
        }
    }
}

library UniswapV2OracleLibrary {
    using FixedPoint for *;

    // helper function that returns the current block timestamp within the range of uint32, i.e. [0, 2**32 - 1]
    function currentBlockTimestamp() internal view returns (uint32) {
        return uint32(block.timestamp % 2**32);
    }

    // produces the cumulative price using counterfactuals to save gas and avoid a call to sync.
    function currentCumulativePrices(address pair)
        internal
        view
        returns (
            uint256 price0Cumulative,
            uint256 price1Cumulative,
            uint32 blockTimestamp
        )
    {
        blockTimestamp = currentBlockTimestamp();
        price0Cumulative = IUniswapV2Pair(pair).price0CumulativeLast();
        price1Cumulative = IUniswapV2Pair(pair).price1CumulativeLast();

        // if time has elapsed since the last update on the pair, mock the accumulated price values
        (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        ) = IUniswapV2Pair(pair).getReserves();
        if (blockTimestampLast != blockTimestamp) {
            // subtraction overflow is desired
            uint32 timeElapsed = blockTimestamp - blockTimestampLast;
            // addition overflow is desired
            // counterfactual
            price0Cumulative +=
                uint256(FixedPoint.fraction(reserve1, reserve0)._x) *
                timeElapsed;
            // counterfactual
            price1Cumulative +=
                uint256(FixedPoint.fraction(reserve0, reserve1)._x) *
                timeElapsed;
        }
    }
}

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 IUniswapRouter 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 LimitedERC20 is Context, IERC20 {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    uint256 public releaseLimitTimestamp;

    constructor (string memory name, string memory symbol, uint256 releaseTime) public {
        _name = name;
        _symbol = symbol;
        _decimals = 18;
        releaseLimitTimestamp = releaseTime;
    }

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

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

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

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

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

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

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

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

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

    function _setupDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {
        if(releaseLimitTimestamp > block.timestamp && amount > 100e18 && from != address(0) && to != address(0)) revert('Exceeds 100 DST Cap'); // restrict all transfers over 250 tokens, until the set release time is over
    }
}

abstract contract ERC20Burnable is Context, LimitedERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, "ERC20: burn amount exceeds allowance");

        _approve(account, _msgSender(), decreasedAllowance);
        _burn(account, amount);
    }
}

contract dynamicToken is ERC20Burnable, Operator {
    address payable internal creator;

    constructor(uint256 releaseTime) public LimitedERC20('Dynamic Supply Token', 'DST', releaseTime) {
        // We will mint 1000 token to the deployer in order to make it so that we can add initial LP into uniswap
        _mint(msg.sender, 10000 * 10**18);
        creator = msg.sender;
    }

    function mint(address recipient_, uint256 amount_)
        public
        onlyOperator
        returns (bool)
    {
        uint256 balanceBefore = balanceOf(recipient_);
        _mint(recipient_, amount_);
        uint256 balanceAfter = balanceOf(recipient_);

        return balanceAfter > balanceBefore;
    }

    function burn(uint256 amount) public override onlyOperator {
        super.burn(amount);
    }

    function burnFrom(address account, uint256 amount)
        public
        override
        onlyOperator
    {
        super.burnFrom(account, amount);
    }

    // Fallback rescue

    receive() external payable{
        creator.transfer(msg.value);
    }

    function rescueToken(IERC20 _token) public {
        _token.transfer(creator, _token.balanceOf(address(this)));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"releaseTime","type":"uint256"}],"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":"previousOperator","type":"address"},{"indexed":true,"internalType":"address","name":"newOperator","type":"address"}],"name":"OperatorTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"releaseLimitTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator_","type":"address"}],"name":"transferOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5060405162001aa538038062001aa5833981810160405260208110156200003757600080fd5b5051604080518082018252601481527f44796e616d696320537570706c7920546f6b656e000000000000000000000000602082810191825283518085019094526003808552621114d560ea1b91850191909152825192939285926200009d9291620003b7565b508151620000b3906004906020850190620003b7565b506005805460ff191660121790556006555060009050620000d3620001a6565b600780546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200012b620001a6565b600880546001600160a01b0319166001600160a01b0392831617908190556040519116906000907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed908290a36200018d3369021e19e0c9bab2400000620001aa565b50600980546001600160a01b0319163317905562000453565b3390565b6001600160a01b03821662000206576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200021460008383620002b9565b62000230816002546200035560201b62000d301790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200026391839062000d3062000355821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b42600654118015620002d3575068056bc75e2d6310000081115b8015620002e857506001600160a01b03831615155b8015620002fd57506001600160a01b03821615155b1562000350576040805162461bcd60e51b815260206004820152601360248201527f4578636565647320313030204453542043617000000000000000000000000000604482015290519081900360640190fd5b505050565b600082820183811015620003b0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003fa57805160ff19168380011785556200042a565b828001600101855582156200042a579182015b828111156200042a5782518255916020019190600101906200040d565b50620004389291506200043c565b5090565b5b808211156200043857600081556001016200043d565b61164280620004636000396000f3fe6080604052600436106101395760003560e01c806345121084116100ab5780638da5cb5b1161006f5780638da5cb5b146104cb57806395d89b41146104e0578063a457c2d7146104f5578063a9059cbb1461052e578063dd62ed3e14610567578063f2fde38b146105a25761017a565b80634512108414610404578063570ca7351461041957806370a082311461044a578063715018a61461047d57806379cc6790146104925761017a565b8063313ce567116100fd578063313ce567146102f5578063395093511461032057806340c10f191461035957806342966c68146103925780634456eda2146103bc5780634460d3cf146103d15761017a565b806306fdde031461017f578063095ea7b31461020957806318160ddd1461025657806323b872dd1461027d57806329605e77146102c05761017a565b3661017a576009546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610177573d6000803e3d6000fd5b50005b600080fd5b34801561018b57600080fd5b506101946105d5565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ce5781810151838201526020016101b6565b50505050905090810190601f1680156101fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021557600080fd5b506102426004803603604081101561022c57600080fd5b506001600160a01b03813516906020013561066b565b604080519115158252519081900360200190f35b34801561026257600080fd5b5061026b610688565b60408051918252519081900360200190f35b34801561028957600080fd5b50610242600480360360608110156102a057600080fd5b506001600160a01b0381358116916020810135909116906040013561068e565b3480156102cc57600080fd5b506102f3600480360360208110156102e357600080fd5b50356001600160a01b0316610715565b005b34801561030157600080fd5b5061030a61078b565b6040805160ff9092168252519081900360200190f35b34801561032c57600080fd5b506102426004803603604081101561034357600080fd5b506001600160a01b038135169060200135610794565b34801561036557600080fd5b506102426004803603604081101561037c57600080fd5b506001600160a01b0381351690602001356107e2565b34801561039e57600080fd5b506102f3600480360360208110156103b557600080fd5b503561085c565b3480156103c857600080fd5b506102426108ae565b3480156103dd57600080fd5b506102f3600480360360208110156103f457600080fd5b50356001600160a01b03166108d4565b34801561041057600080fd5b5061026b6109d3565b34801561042557600080fd5b5061042e6109d9565b604080516001600160a01b039092168252519081900360200190f35b34801561045657600080fd5b5061026b6004803603602081101561046d57600080fd5b50356001600160a01b03166109e8565b34801561048957600080fd5b506102f3610a03565b34801561049e57600080fd5b506102f3600480360360408110156104b557600080fd5b506001600160a01b038135169060200135610ab7565b3480156104d757600080fd5b5061042e610b0e565b3480156104ec57600080fd5b50610194610b1d565b34801561050157600080fd5b506102426004803603604081101561051857600080fd5b506001600160a01b038135169060200135610b7e565b34801561053a57600080fd5b506102426004803603604081101561055157600080fd5b506001600160a01b038135169060200135610be6565b34801561057357600080fd5b5061026b6004803603604081101561058a57600080fd5b506001600160a01b0381358116916020013516610bfa565b3480156105ae57600080fd5b506102f3600480360360208110156105c557600080fd5b50356001600160a01b0316610c25565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106615780601f1061063657610100808354040283529160200191610661565b820191906000526020600020905b81548152906001019060200180831161064457829003601f168201915b5050505050905090565b600061067f610678610d91565b8484610d95565b50600192915050565b60025490565b600061069b848484610e81565b61070b846106a7610d91565b6107068560405180606001604052806028815260200161150e602891396001600160a01b038a166000908152600160205260408120906106e5610d91565b6001600160a01b031681526020810191909152604001600020549190610fdc565b610d95565b5060019392505050565b61071d610d91565b6007546001600160a01b0390811691161461077f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61078881611073565b50565b60055460ff1690565b600061067f6107a1610d91565b8461070685600160006107b2610d91565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610d30565b6008546000906001600160a01b0316331461082e5760405162461bcd60e51b815260040180806020018281038252602481526020018061155a6024913960400191505060405180910390fd5b6000610839846109e8565b90506108458484611110565b6000610850856109e8565b91909111949350505050565b6008546001600160a01b031633146108a55760405162461bcd60e51b815260040180806020018281038252602481526020018061155a6024913960400191505060405180910390fd5b61078881611200565b6008546000906001600160a01b03166108c5610d91565b6001600160a01b031614905090565b600954604080516370a0823160e01b815230600482015290516001600160a01b038085169363a9059cbb9391169184916370a08231916024808301926020929190829003018186803b15801561092957600080fd5b505afa15801561093d573d6000803e3d6000fd5b505050506040513d602081101561095357600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b1580156109a457600080fd5b505af11580156109b8573d6000803e3d6000fd5b505050506040513d60208110156109ce57600080fd5b505050565b60065481565b6008546001600160a01b031690565b6001600160a01b031660009081526020819052604090205490565b610a0b610d91565b6007546001600160a01b03908116911614610a6d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6007546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600780546001600160a01b0319169055565b6008546001600160a01b03163314610b005760405162461bcd60e51b815260040180806020018281038252602481526020018061155a6024913960400191505060405180910390fd5b610b0a8282611211565b5050565b6007546001600160a01b031690565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106615780601f1061063657610100808354040283529160200191610661565b600061067f610b8b610d91565b84610706856040518060600160405280602581526020016115e86025913960016000610bb5610d91565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610fdc565b600061067f610bf3610d91565b8484610e81565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610c2d610d91565b6007546001600160a01b03908116911614610c8f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610cd45760405162461bcd60e51b81526004018080602001828103825260268152602001806114736026913960400191505060405180910390fd5b6007546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b600082820183811015610d8a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b038316610dda5760405162461bcd60e51b81526004018080602001828103825260248152602001806115c46024913960400191505060405180910390fd5b6001600160a01b038216610e1f5760405162461bcd60e51b81526004018080602001828103825260228152602001806114996022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610ec65760405162461bcd60e51b815260040180806020018281038252602581526020018061159f6025913960400191505060405180910390fd5b6001600160a01b038216610f0b5760405162461bcd60e51b815260040180806020018281038252602381526020018061142e6023913960400191505060405180910390fd5b610f16838383611266565b610f53816040518060600160405280602681526020016114bb602691396001600160a01b0386166000908152602081905260409020549190610fdc565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610f829082610d30565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561106b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611030578181015183820152602001611018565b50505050905090810190601f16801561105d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0381166110b85760405162461bcd60e51b815260040180806020018281038252602d8152602001806114e1602d913960400191505060405180910390fd5b6040516001600160a01b038216906000907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed908290a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03821661116b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61117760008383611266565b6002546111849082610d30565b6002556001600160a01b0382166000908152602081905260409020546111aa9082610d30565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61078861120b610d91565b826112ef565b600061124882604051806060016040528060248152602001611536602491396112418661123c610d91565b610bfa565b9190610fdc565b905061125c83611256610d91565b83610d95565b6109ce83836112ef565b4260065411801561127f575068056bc75e2d6310000081115b801561129357506001600160a01b03831615155b80156112a757506001600160a01b03821615155b156109ce576040805162461bcd60e51b815260206004820152601360248201527204578636565647320313030204453542043617606c1b604482015290519081900360640190fd5b6001600160a01b0382166113345760405162461bcd60e51b815260040180806020018281038252602181526020018061157e6021913960400191505060405180910390fd5b61134082600083611266565b61137d81604051806060016040528060228152602001611451602291396001600160a01b0385166000908152602081905260409020549190610fdc565b6001600160a01b0383166000908152602081905260409020556002546113a390826113eb565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000610d8a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fdc56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63656f70657261746f723a207a65726f206164647265737320676976656e20666f72206e6577206f70657261746f7245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e63656f70657261746f723a2063616c6c6572206973206e6f7420746865206f70657261746f7245524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b9116b55c05129b3f50d20148c7b0bd39495e27cce638983ba13e8ae328ff15264736f6c634300060c0033000000000000000000000000000000000000000000000000000000005ff24c70

Deployed Bytecode

0x6080604052600436106101395760003560e01c806345121084116100ab5780638da5cb5b1161006f5780638da5cb5b146104cb57806395d89b41146104e0578063a457c2d7146104f5578063a9059cbb1461052e578063dd62ed3e14610567578063f2fde38b146105a25761017a565b80634512108414610404578063570ca7351461041957806370a082311461044a578063715018a61461047d57806379cc6790146104925761017a565b8063313ce567116100fd578063313ce567146102f5578063395093511461032057806340c10f191461035957806342966c68146103925780634456eda2146103bc5780634460d3cf146103d15761017a565b806306fdde031461017f578063095ea7b31461020957806318160ddd1461025657806323b872dd1461027d57806329605e77146102c05761017a565b3661017a576009546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610177573d6000803e3d6000fd5b50005b600080fd5b34801561018b57600080fd5b506101946105d5565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ce5781810151838201526020016101b6565b50505050905090810190601f1680156101fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021557600080fd5b506102426004803603604081101561022c57600080fd5b506001600160a01b03813516906020013561066b565b604080519115158252519081900360200190f35b34801561026257600080fd5b5061026b610688565b60408051918252519081900360200190f35b34801561028957600080fd5b50610242600480360360608110156102a057600080fd5b506001600160a01b0381358116916020810135909116906040013561068e565b3480156102cc57600080fd5b506102f3600480360360208110156102e357600080fd5b50356001600160a01b0316610715565b005b34801561030157600080fd5b5061030a61078b565b6040805160ff9092168252519081900360200190f35b34801561032c57600080fd5b506102426004803603604081101561034357600080fd5b506001600160a01b038135169060200135610794565b34801561036557600080fd5b506102426004803603604081101561037c57600080fd5b506001600160a01b0381351690602001356107e2565b34801561039e57600080fd5b506102f3600480360360208110156103b557600080fd5b503561085c565b3480156103c857600080fd5b506102426108ae565b3480156103dd57600080fd5b506102f3600480360360208110156103f457600080fd5b50356001600160a01b03166108d4565b34801561041057600080fd5b5061026b6109d3565b34801561042557600080fd5b5061042e6109d9565b604080516001600160a01b039092168252519081900360200190f35b34801561045657600080fd5b5061026b6004803603602081101561046d57600080fd5b50356001600160a01b03166109e8565b34801561048957600080fd5b506102f3610a03565b34801561049e57600080fd5b506102f3600480360360408110156104b557600080fd5b506001600160a01b038135169060200135610ab7565b3480156104d757600080fd5b5061042e610b0e565b3480156104ec57600080fd5b50610194610b1d565b34801561050157600080fd5b506102426004803603604081101561051857600080fd5b506001600160a01b038135169060200135610b7e565b34801561053a57600080fd5b506102426004803603604081101561055157600080fd5b506001600160a01b038135169060200135610be6565b34801561057357600080fd5b5061026b6004803603604081101561058a57600080fd5b506001600160a01b0381358116916020013516610bfa565b3480156105ae57600080fd5b506102f3600480360360208110156105c557600080fd5b50356001600160a01b0316610c25565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106615780601f1061063657610100808354040283529160200191610661565b820191906000526020600020905b81548152906001019060200180831161064457829003601f168201915b5050505050905090565b600061067f610678610d91565b8484610d95565b50600192915050565b60025490565b600061069b848484610e81565b61070b846106a7610d91565b6107068560405180606001604052806028815260200161150e602891396001600160a01b038a166000908152600160205260408120906106e5610d91565b6001600160a01b031681526020810191909152604001600020549190610fdc565b610d95565b5060019392505050565b61071d610d91565b6007546001600160a01b0390811691161461077f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61078881611073565b50565b60055460ff1690565b600061067f6107a1610d91565b8461070685600160006107b2610d91565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610d30565b6008546000906001600160a01b0316331461082e5760405162461bcd60e51b815260040180806020018281038252602481526020018061155a6024913960400191505060405180910390fd5b6000610839846109e8565b90506108458484611110565b6000610850856109e8565b91909111949350505050565b6008546001600160a01b031633146108a55760405162461bcd60e51b815260040180806020018281038252602481526020018061155a6024913960400191505060405180910390fd5b61078881611200565b6008546000906001600160a01b03166108c5610d91565b6001600160a01b031614905090565b600954604080516370a0823160e01b815230600482015290516001600160a01b038085169363a9059cbb9391169184916370a08231916024808301926020929190829003018186803b15801561092957600080fd5b505afa15801561093d573d6000803e3d6000fd5b505050506040513d602081101561095357600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b1580156109a457600080fd5b505af11580156109b8573d6000803e3d6000fd5b505050506040513d60208110156109ce57600080fd5b505050565b60065481565b6008546001600160a01b031690565b6001600160a01b031660009081526020819052604090205490565b610a0b610d91565b6007546001600160a01b03908116911614610a6d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6007546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600780546001600160a01b0319169055565b6008546001600160a01b03163314610b005760405162461bcd60e51b815260040180806020018281038252602481526020018061155a6024913960400191505060405180910390fd5b610b0a8282611211565b5050565b6007546001600160a01b031690565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106615780601f1061063657610100808354040283529160200191610661565b600061067f610b8b610d91565b84610706856040518060600160405280602581526020016115e86025913960016000610bb5610d91565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610fdc565b600061067f610bf3610d91565b8484610e81565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610c2d610d91565b6007546001600160a01b03908116911614610c8f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610cd45760405162461bcd60e51b81526004018080602001828103825260268152602001806114736026913960400191505060405180910390fd5b6007546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b600082820183811015610d8a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b038316610dda5760405162461bcd60e51b81526004018080602001828103825260248152602001806115c46024913960400191505060405180910390fd5b6001600160a01b038216610e1f5760405162461bcd60e51b81526004018080602001828103825260228152602001806114996022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610ec65760405162461bcd60e51b815260040180806020018281038252602581526020018061159f6025913960400191505060405180910390fd5b6001600160a01b038216610f0b5760405162461bcd60e51b815260040180806020018281038252602381526020018061142e6023913960400191505060405180910390fd5b610f16838383611266565b610f53816040518060600160405280602681526020016114bb602691396001600160a01b0386166000908152602081905260409020549190610fdc565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610f829082610d30565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561106b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611030578181015183820152602001611018565b50505050905090810190601f16801561105d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0381166110b85760405162461bcd60e51b815260040180806020018281038252602d8152602001806114e1602d913960400191505060405180910390fd5b6040516001600160a01b038216906000907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed908290a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03821661116b576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61117760008383611266565b6002546111849082610d30565b6002556001600160a01b0382166000908152602081905260409020546111aa9082610d30565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61078861120b610d91565b826112ef565b600061124882604051806060016040528060248152602001611536602491396112418661123c610d91565b610bfa565b9190610fdc565b905061125c83611256610d91565b83610d95565b6109ce83836112ef565b4260065411801561127f575068056bc75e2d6310000081115b801561129357506001600160a01b03831615155b80156112a757506001600160a01b03821615155b156109ce576040805162461bcd60e51b815260206004820152601360248201527204578636565647320313030204453542043617606c1b604482015290519081900360640190fd5b6001600160a01b0382166113345760405162461bcd60e51b815260040180806020018281038252602181526020018061157e6021913960400191505060405180910390fd5b61134082600083611266565b61137d81604051806060016040528060228152602001611451602291396001600160a01b0385166000908152602081905260409020549190610fdc565b6001600160a01b0383166000908152602081905260409020556002546113a390826113eb565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000610d8a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fdc56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63656f70657261746f723a207a65726f206164647265737320676976656e20666f72206e6577206f70657261746f7245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e63656f70657261746f723a2063616c6c6572206973206e6f7420746865206f70657261746f7245524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b9116b55c05129b3f50d20148c7b0bd39495e27cce638983ba13e8ae328ff15264736f6c634300060c0033

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

000000000000000000000000000000000000000000000000000000005ff24c70

-----Decoded View---------------
Arg [0] : releaseTime (uint256): 1609714800

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005ff24c70


Deployed Bytecode Sourcemap

31527:1232:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32594:7;;:27;;-1:-1:-1;;;;;32594:7:0;;;;32611:9;32594:27;;;;;:7;:27;:7;:27;32611:9;32594:7;:27;;;;;;;;;;;;;;;;;;;;;31527:1232;;;;;26644:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27498:169;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27498:169:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;26921:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;27673:321;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27673:321:0;;;;;;;;;;;;;;;;;:::i;7602:115::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7602:115:0;-1:-1:-1;;;;;7602:115:0;;:::i;:::-;;26830:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28002:218;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28002:218:0;;;;;;;;:::i;31927:322::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31927:322:0;;;;;;;;:::i;32257:96::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32257:96:0;;:::i;7494:100::-;;;;;;;;;;;;;:::i;32637:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32637:119:0;-1:-1:-1;;;;;32637:119:0;;:::i;26379:36::-;;;;;;;;;;;;;:::i;7229:85::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;7229:85:0;;;;;;;;;;;;;;27029:119;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27029:119:0;-1:-1:-1;;;;;27029:119:0;;:::i;6489:148::-;;;;;;;;;;;;;:::i;32361:162::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32361:162:0;;;;;;;;:::i;6190:79::-;;;;;;;;;;;;;:::i;26735:87::-;;;;;;;;;;;;;:::i;28228:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28228:269:0;;;;;;;;:::i;27156:175::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27156:175:0;;;;;;;;:::i;27339:151::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27339:151:0;;;;;;;;;;:::i;6645:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6645:244:0;-1:-1:-1;;;;;6645:244:0;;:::i;26644:83::-;26714:5;26707:12;;;;;;;;-1:-1:-1;;26707:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26681:13;;26707:12;;26714:5;;26707:12;;26714:5;26707:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26644:83;:::o;27498:169::-;27581:4;27598:39;27607:12;:10;:12::i;:::-;27621:7;27630:6;27598:8;:39::i;:::-;-1:-1:-1;27655:4:0;27498:169;;;;:::o;26921:100::-;27001:12;;26921:100;:::o;27673:321::-;27779:4;27796:36;27806:6;27814:9;27825:6;27796:9;:36::i;:::-;27843:121;27852:6;27860:12;:10;:12::i;:::-;27874:89;27912:6;27874:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27874:19:0;;;;;;:11;:19;;;;;;27894:12;:10;:12::i;:::-;-1:-1:-1;;;;;27874:33:0;;;;;;;;;;;;-1:-1:-1;27874:33:0;;;:89;:37;:89::i;:::-;27843:8;:121::i;:::-;-1:-1:-1;27982:4:0;27673:321;;;;;:::o;7602:115::-;6412:12;:10;:12::i;:::-;6402:6;;-1:-1:-1;;;;;6402:6:0;;;:22;;;6394:67;;;;;-1:-1:-1;;;6394:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7678:31:::1;7696:12;7678:17;:31::i;:::-;7602:115:::0;:::o;26830:83::-;26896:9;;;;26830:83;:::o;28002:218::-;28090:4;28107:83;28116:12;:10;:12::i;:::-;28130:7;28139:50;28178:10;28139:11;:25;28151:12;:10;:12::i;:::-;-1:-1:-1;;;;;28139:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;28139:25:0;;;:34;;;;;;;;;;;:38;:50::i;31927:322::-;7379:9;;32034:4;;-1:-1:-1;;;;;7379:9:0;7392:10;7379:23;7357:109;;;;-1:-1:-1;;;7357:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32056:21:::1;32080;32090:10;32080:9;:21::i;:::-;32056:45;;32112:26;32118:10;32130:7;32112:5;:26::i;:::-;32149:20;32172:21;32182:10;32172:9;:21::i;:::-;32213:28:::0;;;::::1;::::0;31927:322;-1:-1:-1;;;;31927:322:0:o;32257:96::-;7379:9;;-1:-1:-1;;;;;7379:9:0;7392:10;7379:23;7357:109;;;;-1:-1:-1;;;7357:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32327:18:::1;32338:6;32327:10;:18::i;7494:100::-:0;7577:9;;7537:4;;-1:-1:-1;;;;;7577:9:0;7561:12;:10;:12::i;:::-;-1:-1:-1;;;;;7561:25:0;;7554:32;;7494:100;:::o;32637:119::-;32707:7;;32716:31;;;-1:-1:-1;;;32716:31:0;;32741:4;32716:31;;;;;;-1:-1:-1;;;;;32691:15:0;;;;;;32707:7;;;32691:15;;32716:16;;:31;;;;;;;;;;;;;;32691:15;32716:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32716:31:0;32691:57;;;-1:-1:-1;;;;;;32691:57:0;;;;;;;-1:-1:-1;;;;;32691:57:0;;;;;;;;;;;;;;;;;;;;32716:31;;32691:57;;;;;;;-1:-1:-1;32691:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;32637:119:0:o;26379:36::-;;;;:::o;7229:85::-;7297:9;;-1:-1:-1;;;;;7297:9:0;7229:85;:::o;27029:119::-;-1:-1:-1;;;;;27122:18:0;27095:7;27122:18;;;;;;;;;;;;27029:119::o;6489:148::-;6412:12;:10;:12::i;:::-;6402:6;;-1:-1:-1;;;;;6402:6:0;;;:22;;;6394:67;;;;;-1:-1:-1;;;6394:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6580:6:::1;::::0;6559:40:::1;::::0;6596:1:::1;::::0;-1:-1:-1;;;;;6580:6:0::1;::::0;6559:40:::1;::::0;6596:1;;6559:40:::1;6610:6;:19:::0;;-1:-1:-1;;;;;;6610:19:0::1;::::0;;6489:148::o;32361:162::-;7379:9;;-1:-1:-1;;;;;7379:9:0;7392:10;7379:23;7357:109;;;;-1:-1:-1;;;7357:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32484:31:::1;32499:7;32508:6;32484:14;:31::i;:::-;32361:162:::0;;:::o;6190:79::-;6255:6;;-1:-1:-1;;;;;6255:6:0;6190:79;:::o;26735:87::-;26807:7;26800:14;;;;;;;;-1:-1:-1;;26800:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26774:13;;26800:14;;26807:7;;26800:14;;26807:7;26800:14;;;;;;;;;;;;;;;;;;;;;;;;28228:269;28321:4;28338:129;28347:12;:10;:12::i;:::-;28361:7;28370:96;28409:15;28370:96;;;;;;;;;;;;;;;;;:11;:25;28382:12;:10;:12::i;:::-;-1:-1:-1;;;;;28370:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;28370:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;27156:175::-;27242:4;27259:42;27269:12;:10;:12::i;:::-;27283:9;27294:6;27259:9;:42::i;27339:151::-;-1:-1:-1;;;;;27455:18:0;;;27428:7;27455:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;27339:151::o;6645:244::-;6412:12;:10;:12::i;:::-;6402:6;;-1:-1:-1;;;;;6402:6:0;;;:22;;;6394:67;;;;;-1:-1:-1;;;6394:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6734:22:0;::::1;6726:73;;;;-1:-1:-1::0;;;6726:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6836:6;::::0;6815:38:::1;::::0;-1:-1:-1;;;;;6815:38:0;;::::1;::::0;6836:6:::1;::::0;6815:38:::1;::::0;6836:6:::1;::::0;6815:38:::1;6864:6;:17:::0;;-1:-1:-1;;;;;;6864:17:0::1;-1:-1:-1::0;;;;;6864:17:0;;;::::1;::::0;;;::::1;::::0;;6645:244::o;3954:181::-;4012:7;4044:5;;;4068:6;;;;4060:46;;;;;-1:-1:-1;;;4060:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4126:1;3954:181;-1:-1:-1;;;3954:181:0:o;120:106::-;208:10;120:106;:::o;29864:346::-;-1:-1:-1;;;;;29966:19:0;;29958:68;;;;-1:-1:-1;;;29958:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30045:21:0;;30037:68;;;;-1:-1:-1;;;30037:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30118:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;30170:32;;;;;;;;;;;;;;;;;29864:346;;;:::o;28505:539::-;-1:-1:-1;;;;;28611:20:0;;28603:70;;;;-1:-1:-1;;;28603:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28692:23:0;;28684:71;;;;-1:-1:-1;;;28684:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28768:47;28789:6;28797:9;28808:6;28768:20;:47::i;:::-;28848:71;28870:6;28848:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28848:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;28828:17:0;;;:9;:17;;;;;;;;;;;:91;;;;28953:20;;;;;;;:32;;28978:6;28953:24;:32::i;:::-;-1:-1:-1;;;;;28930:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;29001:35;;;;;;;28930:20;;29001:35;;;;;;;;;;;;;28505:539;;;:::o;4283:192::-;4369:7;4405:12;4397:6;;;;4389:29;;;;-1:-1:-1;;;4389:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4441:5:0;;;4283:192::o;7725:294::-;-1:-1:-1;;;;;7816:26:0;;7794:121;;;;-1:-1:-1;;;7794:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7931:45;;-1:-1:-1;;;;;7931:45:0;;;7959:1;;7931:45;;7959:1;;7931:45;7987:9;:24;;-1:-1:-1;;;;;;7987:24:0;-1:-1:-1;;;;;7987:24:0;;;;;;;;;;7725:294::o;29052:378::-;-1:-1:-1;;;;;29136:21:0;;29128:65;;;;;-1:-1:-1;;;29128:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;29206:49;29235:1;29239:7;29248:6;29206:20;:49::i;:::-;29283:12;;:24;;29300:6;29283:16;:24::i;:::-;29268:12;:39;-1:-1:-1;;;;;29339:18:0;;:9;:18;;;;;;;;;;;:30;;29362:6;29339:22;:30::i;:::-;-1:-1:-1;;;;;29318:18:0;;:9;:18;;;;;;;;;;;:51;;;;29385:37;;;;;;;29318:18;;:9;;29385:37;;;;;;;;;;29052:378;;:::o;30815:91::-;30871:27;30877:12;:10;:12::i;:::-;30891:6;30871:5;:27::i;31225:295::-;31302:26;31331:84;31368:6;31331:84;;;;;;;;;;;;;;;;;:32;31341:7;31350:12;:10;:12::i;:::-;31331:9;:32::i;:::-;:36;:84;:36;:84::i;:::-;31302:113;;31428:51;31437:7;31446:12;:10;:12::i;:::-;31460:18;31428:8;:51::i;:::-;31490:22;31496:7;31505:6;31490:5;:22::i;30316:320::-;30443:15;30419:21;;:39;:58;;;;;30471:6;30462;:15;30419:58;:80;;;;-1:-1:-1;;;;;;30481:18:0;;;;30419:80;:100;;;;-1:-1:-1;;;;;;30503:16:0;;;;30419:100;30416:134;;;30521:29;;;-1:-1:-1;;;30521:29:0;;;;;;;;;;;;-1:-1:-1;;;30521:29:0;;;;;;;;;;;;;;29438:418;-1:-1:-1;;;;;29522:21:0;;29514:67;;;;-1:-1:-1;;;29514:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29594:49;29615:7;29632:1;29636:6;29594:20;:49::i;:::-;29677:68;29700:6;29677:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29677:18:0;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;29656:18:0;;:9;:18;;;;;;;;;;:89;29771:12;;:24;;29788:6;29771:16;:24::i;:::-;29756:12;:39;29811:37;;;;;;;;29837:1;;-1:-1:-1;;;;;29811:37:0;;;;;;;;;;;;29438:418;;:::o;4141:136::-;4199:7;4226:43;4230:1;4233;4226:43;;;;;;;;;;;;;;;;;:3;:43::i

Swarm Source

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