1// SPDX-License-Identifier: MIT2pragma solidity ^0.8.9;34import "./@openzeppelin/contracts/token/ERC20/ERC20.sol";5import "./@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";6import "./@openzeppelin/contracts/security/Pausable.sol";7import "./@openzeppelin/contracts/access/Ownable.sol";8import "./@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol";9import "./@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol";10import "./@openzeppelin/contracts/token/ERC20/extensions/ERC20FlashMint.sol";1112contract ZeppelinContract is ERC20, ERC20Burnable, Pausable, Ownable, ERC20Permit, ERC20Votes, ERC20FlashMint {13 constructor()14 ERC20("ZeppelinContract", "UNQ")15 ERC20Permit("ZeppelinContract")16 {}1718 function pause() public onlyOwner {19 _pause();20 }2122 function unpause() public onlyOwner {23 _unpause();24 }2526 function mint(address to, uint256 amount) public onlyOwner {27 _mint(to, amount);28 }2930 function _beforeTokenTransfer(address from, address to, uint256 amount)31 internal32 whenNotPaused33 override34 {35 super._beforeTokenTransfer(from, to, amount);36 }3738 // The following functions are overrides required by Solidity.3940 function _afterTokenTransfer(address from, address to, uint256 amount)41 internal42 override(ERC20, ERC20Votes)43 {44 super._afterTokenTransfer(from, to, amount);45 }4647 function _mint(address to, uint256 amount)48 internal49 override(ERC20, ERC20Votes)50 {51 super._mint(to, amount);52 }5354 function _burn(address account, uint256 amount)55 internal56 override(ERC20, ERC20Votes)57 {58 super._burn(account, amount);59 }60}