contract ClaimTopicsRegistry is IClaimTopicsRegistry, Ownable {

    /// All required Claim Topics
    uint256[] private claimTopics;

   /**
    *  @dev See {IClaimTopicsRegistry-addClaimTopic}.
    */
    function addClaimTopic(uint256 _claimTopic) external override onlyOwner {
        uint length = claimTopics.length;
        for (uint i = 0; i < length; i++) {
            require(claimTopics[i] != _claimTopic, "claimTopic already exists");
        }
        claimTopics.push(_claimTopic);
        emit ClaimTopicAdded(_claimTopic);
    }

   /**
    *  @dev See {IClaimTopicsRegistry-removeClaimTopic}.
    */
    function removeClaimTopic(uint256 _claimTopic) external override onlyOwner {
        uint length = claimTopics.length;
        for (uint i = 0; i < length; i++) {
            if (claimTopics[i] == _claimTopic) {
                delete claimTopics[i];
                claimTopics[i] = claimTopics[length - 1];
                delete claimTopics[length - 1];
                claimTopics.pop();
                emit ClaimTopicRemoved(_claimTopic);
                break;
            }
        }
    }

   /**
    *  @dev See {IClaimTopicsRegistry-getClaimTopics}.
    */
    function getClaimTopics() external override view returns (uint256[] memory) {
        return claimTopics;
    }

   /**
    *  @dev See {IClaimTopicsRegistry-transferOwnershipOnClaimTopicsRegistryContract}.
    */
    function transferOwnershipOnClaimTopicsRegistryContract(address _newOwner) external override onlyOwner {
        transferOwnership(_newOwner);
    }
}
function transferOwnershipOnClaimTopicsRegistryContract(address _newOwner) external override onlyOwner {
    transferOwnership(_newOwner);
}

/**
 *  @dev See {IClaimTopicsRegistry-transferOwnershipOnClaimTopicsRegistryContract}.
 */