contract IDTT is ERC20('Identity', 'IDTT'), LGEWhitelisted {

    uint256 private _cap = 1000000000e18;
    
    function cap() public view returns (uint256) {
        return _cap;
    }

    /**
     * @dev See {ERC20-_beforeTokenTransfer}.
     *
     * Requirements:
     *
     * - minted tokens must not cause the total supply to go over the cap.
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override {
        
        LGEWhitelisted._applyLGEWhitelist(from, to, amount);
        super._beforeTokenTransfer(from, to, amount);

        if (from == address(0)) { // When minting tokens
            require(totalSupply() + amount <= _cap, "ERC20Capped: cap exceeded");
        }
    }

    function mint(address _to, uint256 _amount) public onlyOwner {
        _mint(_to, _amount);
    }

}
function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override {
        
    LGEWhitelisted._applyLGEWhitelist(from, to, amount);
    super._beforeTokenTransfer(from, to, amount);

    if (from == address(0)) { // When minting tokens
        require(totalSupply() + amount <= _cap, "ERC20Capped: cap exceeded");
    }
}

/**
 * @dev See {ERC20-_beforeTokenTransfer}.
 *
 * Requirements:
 *
 * - minted tokens must not cause the total supply to go over the cap.
 */