<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def retrieve_records(self, timeperiod, include_running, include_processed, include_noop, include_failed, include_disabled):
 """ method looks for suitable UOW records and returns them as a dict"""

        resp = dict()
        try:
            query = unit_of_work_dao.QUERY_GET_FREERUN_SINCE(timeperiod, include_running,
                                                             include_processed, include_noop, include_failed)
            records_list = self.uow_dao.run_query(query)
            if len(records_list) == 0:
                self.logger.warning('MX: no Freerun UOW records found since {0}.'.format(timeperiod))

            for uow_record in records_list:
                # freerun uow.process_name is a composite in format <process_name::entry_name>
                handler_key = split_schedulable_name(uow_record.process_name)
                if handler_key not in self.freerun_handlers:
                    continue

                thread_handler = self.freerun_handlers[handler_key]
                if not include_disabled and not thread_handler.process_entry.is_on:
                    continue

                resp[uow_record.key] = uow_record.document
        except Exception as e:
            self.logger.error('MX Dashboard FreerunStatements error: {0}'.format(e))
        return resp