A Dual QP Algorithm