code: def TerminateFlow(client_id,
                    flow_id,
                    reason=None,
                    flow_state=rdf_flow_objects.Flow.FlowState.ERROR):
    
  
    to_terminate = [data_store.REL_DB.ReadFlowObject(client_id, flow_id)]
  
    while to_terminate:
      next_to_terminate = []
      for rdf_flow in to_terminate:
        _TerminateFlow(rdf_flow, reason=reason, flow_state=flow_state)
        next_to_terminate.extend(
            data_store.REL_DB.ReadChildFlowObjects(rdf_flow.client_id,
                                                   rdf_flow.flow_id))
      to_terminate = next_to_terminate
docs: Terminates a flow and all of its children.
  
    Args:
      client_id: Client ID of a flow to terminate.
      flow_id: Flow ID of a flow to terminate.
      reason: String with a termination reason.
      flow_state: Flow state to be assigned to a flow after termination. Defaults
        to FlowState.ERROR.