<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def wait_for_service_tasks_all_unchanged( service_name, old_task_ids, task_predicate=None, timeout_sec=30 ):
 """ Returns after verifying that NONE of old_task_ids have been removed or replaced from the service :param service_name: the service name :type service_name: str :param old_task_ids: list of original task ids as returned by get_service_task_ids :type old_task_ids: [str] :param task_predicate: filter to use when searching for tasks :type task_predicate: func :param timeout_sec: duration to wait until assuming tasks are unchanged :type timeout_sec: int :return: the duration waited in seconds (the timeout value) :rtype: int """

    try:
        time_wait(
            lambda: tasks_missing_predicate(service_name, old_task_ids, task_predicate),
            timeout_seconds=timeout_sec)
        # shouldn't have exited successfully: raise below
    except TimeoutExpired:
        return timeout_sec  # no changes occurred within timeout, as expected
    raise DCOSException("One or more of the following tasks were no longer found: {}".format(old_task_ids))