contract Owned { //This token contract is owned
    address public owner; //Owner address is public
    bool public lockSupply; //Supply Lock flag

    /**
     * @dev Contract constructor, define initial administrator
     */
    constructor() internal {
        owner = 0xA0c6f96035d0FA5F44D781060F84A0Bc6B8D87Ee; //Set initial owner to contract creator
        emit TransferOwnership(owner);
    }

    modifier onlyOwner() { //A modifier to define owner-only functions
        require(msg.sender == owner, "Not Allowed");
        _;
    }

    modifier supplyLock() { //A modifier to lock supply-change transactions
        require(lockSupply == false, "Supply is locked");
        _;
    }

    /**
     * @dev Function to set new owner address
     * @param _newOwner The address to transfer administration to
     */
    function transferAdminship(address _newOwner) public onlyOwner { //Owner can be transfered
        require(_newOwner != address(0), "Not allowed");
        owner = _newOwner;
        emit TransferOwnership(owner);
    }

    /**
     * @dev Function to set supply locks
     * @param _set boolean flag (true | false)
     */
    function setSupplyLock(bool _set) public onlyOwner { //Only the owner can set a lock on supply
        lockSupply = _set;
        emit SetSupplyLock(lockSupply);
    }

    //All owner actions have a log for public review
    event SetSupplyLock(bool _set);
    event TransferOwnership(address indexed newAdminister);
}
/**
 * @title Owner parameters
 * @dev Define ownership parameters for this contract
 */
function setSupplyLock(bool _set) public onlyOwner { //Only the owner can set a lock on supply
    lockSupply = _set;
    emit SetSupplyLock(lockSupply);
}

/**
 * @dev Function to set supply locks
 * @param _set boolean flag (true | false)
 */