You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: mosekqp.m
    path of file: ./repos/OPTI/Solvers/mosek
    
    the code of the file until where you have to start completion: function [x,fval,exitflag,info] = mosekqp(H,f,A,rl,ru,lb,ub,x0,opts)
%MOSEKQP Solve a QP using MOSEK
%
%   min 0.5*x'*H*x + f'*x      subject to:     rl <= A*x <= ru
%    x                                         lb <= x <= ub
%                                              
%   x = mosekqp(H,f,A,b,Aeq,beq,lb,ub) solves a QP where H and f are the 
%   objective matrix and vector respectively, A,b are the linear constraints
%   and lb,ub are the bounds.

    
function [x,fval,exitflag,info] = mosekqp(H,f,A,rl,ru,lb,ub,x0,opts)
%MOSEKQP Solve a QP using MOSEK
%
%   min 0.5*x'*H*x + f'*x      subject to:     rl <= A*x <= ru
%    x                                         lb <= x <= ub
%                                              
%   x = mosekqp(H,f,A,b,Aeq,beq,lb,ub) solves a QP where H and f are the 
%   objective matrix and vector respectively, A,b are the linear constraints
%   and lb,ub are the bounds.
%
%   x = mosekqp(H,...,ub,x0) uses x0 as the initial solution guess.
%
%   x = mosekqp(H,...,x0,opts) uses opts to pass mosekset options to the
%   MOSEK solver.
%
%   [x,fval,exitflag,info] = mosekqp(...) returns the objective value at
%   the solution, together with the solver exitflag, and an information
%   structure.

%   This function is based in parts on examples from the MOSEK Toolbox, 
%   Copyright (c) 1998-2011 MOSEK ApS, Denmark.

%   Copyright (C) 2012 Jonathan Currie (Control Engineering)

t = tic;

% Handle missing arguments
if nargin < 9, opts = mosekset('warnings','off'); else opts = mosekset(opts); end