// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Ownable { address public owner; event OwnershipTransferred(address indexed oldOwner, address indexed newOwner); constructor () { owner = msg.sender; emit OwnershipTransferred(address(0), owner); } /// @dev Throws if called by any account other than the owner. modifier onlyOwner() { require(owner == msg.sender, "Ownable: caller is not the owner"); _; } /// @dev Transfers ownership of the contract to a new account (`newOwner`). /// Can only be called by the current owner. function transferOwnership(address newOwner) public onlyOwner { emit OwnershipTransferred(owner, newOwner); owner = newOwner; } }