import numpy
import types
import mosek

def _():
  import types

  class Enum:
    @staticmethod
    def __inst(c,name):
      o = c()
      o.name  = name
      o.value = len(c.__members__)
      c.__members__.append(o)
      setattr(c, name, o)

    @classmethod
    def fromInt(c,value):
      return c.members[value]

    @staticmethod
    def new(name,membernames):
      members = []
      c = type(name, (Enum,),{ '__members__' : members })
      for n in membernames:
        Enum.__inst(c,n)
      return c
    @classmethod
    def members(c):
      return iter(c.__members__)

    def __str__(self):
      return self.__class__.__name__ + "." + self.name
    def __repr__(self):
      return self.__class__.__name__ + "." + self.name
  return Enum

class _monty:
  Enum = _()
  @staticmethod
  def deduceShape(l,dim):
    def _deduceShape(l,dim):
      if dim > 1:
        shplst = [ _deduceShape(i,dim-1) for i in l ]
        if all([shplst[0] == i for i in shplst ]):
          shplst[0].append(len(l))
          return shplst[0]
        else:
          raise TypeError("Irregular array shape")
      else:
        return [len(dim)]
    return tuple(reversed(_deduceShape(l,dim)))
  @staticmethod
  def checkShape(l,dim):
    def _checkShape(l,dim):
      if dim > 1:
        shplst = [ _checkShape(i,dim-1) for i in l ]
        if all([shplst[0] == i for i in shplst ]):
          pass
        else:
          raise TypeError("Irregular array shape")
        return len(l)
      else:
        try:
          return len(l)
        except TypeError:
          raise TypeError("Wrong or irregular array shape")
    _checkShape(l,dim)
    return dim
  @staticmethod
  def initJaggedArray(data, nd):
    dims = []
    d = data
    for i in range(nd):
      dims.append(len(d))
      d = d[0]

    res = numpy.zeros(dims,dtype=object)
    key = tuple([ slice(d) for d in dims ])
    try:
      res.__setitem__(key, data)
    except ValueError: # weird numpypy bug
      if   len(key) == 1:
        for i in range(0,dims[0]): res[i] = data[i]
      elif len(key) == 2:
        for i in range(0,dims[0]):
          for j in range(0,dims[1]):
            res[i,j] = data[i][j]
      elif len(key) == 3:
        for i in range(0,dims[0]):
          for j in range(0,dims[1]):
            for k in range(0,dims[2]):
              res[i,j,k] = data[i][j][k]
      else:
        assert 0 # Because hopefully we will get a real fix in numpypy before this case is hi
    return res

  @staticmethod
  def makeJaggedArray(src,ndims,dtype):
    if src is None:
      return None
    elif len(ndims) == 1:
      if ndims[0] == 1:
        r = numpy.zeros((len(src),),dtype=dtype)
        r[:] = src
      else:
        d = _monty.deduceDims(src,ndims[0])
        r = numpy.zeros(d,dtype=dtype)
        r.__setitem__(tuple([slice(None)]*ndims[0]),src) # basically: r[:,...,:] = src
      return r
    elif ndims[0] == 1:
      r = numpy.zeros((len(src),),dtype=numpy.dtype(object))
      # Note: This is a bit tricky to do reliably with numpy as it
      # tends to think we are dealing with multidimensional arrays and
      # explode
      for i,s in enumerate(src):
        r[i] = _monty.makeJaggedArray(s,ndims[1:],dtype)

      #r[:] = [ _monty.makeJaggedArray(s,ndims[1:],dtype) for s in src ]
      return r
    else:
      d = _monty.deduceDims(src,ndims[0])
      def _(src,nd):
        if nd == 0:
          return _monty.makeJaggedArray(src)
        else:
          return [ _(s,nd-1) for s in src ]

      r = numpy.zeros(d,dtype=numpy.dtype(object))
      r.__setitem__(tuple([slice(None)]*ndims[0]),_(src,ndims[0])) # basically: r[:,...,:] = convert(src)
      return r

  @staticmethod
  def copyArray(src,dst,dim):
    if dim == 1:
      src[:] = dst[:]
    else:
      for i in range(len(src)):
        _monty.copyArray(src[i],dst[i],dim-1)
  @staticmethod
  def arg_match_sloppy_array(v,elmmatch,dim,l=None):
    if dim == 0:
      elmmatch(v)
    elif dim == 1:
      if l is not None:
        if l != len(v): return False
      elif len(v) == 0: return True
      for e in v:
        if not elmmatch(e): return False
      return True
    elif isinstance(v,list) or isinstance(v,numpy.ndarray):
      if l is not None:
        if l != len(v): return False
      elif len(v) == 0: return True
      elif not (isinstance(v[0],list) or isinstance(v[0],numpy.ndarray)): return False

      top_len = len(v[0])
      for e in v:
        if not _monty.arg_match_sloppy_array(e,elmmatch,dim-1,top_len): return False
      return True
    else:
      return False

del _

mosek_fusion_RelationKey=_monty.Enum.new('RelationKey',['EqualsTo','LessThan','GreaterThan','IsFree','InRange'])
mosek_fusion_PSDKey=_monty.Enum.new('PSDKey',['IsSymPSD','IsTrilPSD'])
mosek_fusion_QConeKey=_monty.Enum.new('QConeKey',['InQCone','InRotatedQCone','InPExpCone','InPPowCone','InPPowConeSeq','InDExpCone','InDPowCone','InDPowConeSeq','InPGeoMeanCone','InDGeoMeanCone','Positive','Negative','Unbounded','Zero','InPSDCone','InSVecPSDCone'])
mosek_fusion_ObjectiveSense=_monty.Enum.new('ObjectiveSense',['Undefined','Minimize','Maximize'])
mosek_fusion_SolutionStatus=_monty.Enum.new('SolutionStatus',['Undefined','Unknown','Optimal','Feasible','Certificate','IllposedCert'])
mosek_fusion_AccSolutionStatus=_monty.Enum.new('AccSolutionStatus',['Anything','Optimal','Feasible','Certificate'])
mosek_fusion_ProblemStatus=_monty.Enum.new('ProblemStatus',['Unknown','PrimalAndDualFeasible','PrimalFeasible','DualFeasible','PrimalInfeasible','DualInfeasible','PrimalAndDualInfeasible','IllPosed','PrimalInfeasibleOrUnbounded'])
mosek_fusion_SolverStatus=_monty.Enum.new('SolverStatus',['OK','Error','LostRace'])
mosek_fusion_SolutionType=_monty.Enum.new('SolutionType',['Default','Basic','Interior','Integer'])
mosek_fusion_StatusKey=_monty.Enum.new('StatusKey',['Unknown','Basic','SuperBasic','OnBound','Infinity'])
mosek_fusion_DJCDomainType=_monty.Enum.new('DJCDomainType',['EqualTo','LessThan','GreaterThan','IsFree','InRange','InQCone','InRotatedQCone','InPExpCone','InPPowCone','InDExpCone','InDPowCone','InOneNormCone','InInfNormCone','InPGeoMeanCone','InDGeoMeanCone','InPSDCone'])
def __mk_mosek_fusion_ExprDomain():
 class ExprDomain:
  def toDJCTerm(self,*args):
    if False: pass
    elif mosek_fusion_ExprDomain._match_toDJCTerm_(*args): 
      return self._toDJCTerm_(*args)
    elif mosek_fusion_ExprDomain._match_alt_toDJCTerm_(*args): 
      return self._toDJCTerm_alt_(*args)
    else:
      raise ValueError('Invalid argument list toDJCTerm('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprDomain.toDJCTerm()')
  def __repr__(self): return 'mosek.fusion.ExprDomain'
  @staticmethod
  def _match_toDJCTerm_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toDJCTerm_(*args):
    if len(args) != 0: return False
    return True
  def _toDJCTerm_alt_(self,):
    return self._toDJCTerm_()
  def _toDJCTerm_(self,):
   pass
 return ExprDomain
mosek_fusion_ExprDomain=__mk_mosek_fusion_ExprDomain()
del __mk_mosek_fusion_ExprDomain
def __mk_mosek_fusion_Expression():
 class Expression:
  def getShape(self,*args):
    if False: pass
    elif mosek_fusion_Expression._match_getShape_(*args): 
      return self._getShape_(*args)
    elif mosek_fusion_Expression._match_alt_getShape_(*args): 
      return self._getShape_alt_(*args)
    else:
      raise ValueError('Invalid argument list getShape('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expression.getShape()')
  def slice(self,*args):
    if False: pass
    elif mosek_fusion_Expression._match_slice_II(*args): 
      return self._slice_II(*args)
    elif mosek_fusion_Expression._match_alt_slice_II(*args): 
      return self._slice_alt_II(*args)
    elif mosek_fusion_Expression._match_slice__3I_3I(*args): 
      return self._slice__3I_3I(*args)
    elif mosek_fusion_Expression._match_alt_slice__3I_3I(*args): 
      return self._slice_alt__3I_3I(*args)
    else:
      raise ValueError('Invalid argument list slice('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expression.slice(int32,int32)\n\tmosek.fusion.Expression.slice(array(int32,ndim=1),array(int32,ndim=1))')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_Expression._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_Expression._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_Expression._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_Expression._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expression.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.Expression.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def compress_when_caching(self,*args):
    if False: pass
    elif mosek_fusion_Expression._match_compress_1when_1caching_(*args): 
      return self._compress_1when_1caching_(*args)
    elif mosek_fusion_Expression._match_alt_compress_1when_1caching_(*args): 
      return self._compress_1when_1caching_alt_(*args)
    else:
      raise ValueError('Invalid argument list compress_when_caching('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expression.compress_when_caching()')
  def index(self,*args):
    if False: pass
    elif mosek_fusion_Expression._match_index_I(*args): 
      return self._index_I(*args)
    elif mosek_fusion_Expression._match_alt_index_I(*args): 
      return self._index_alt_I(*args)
    elif mosek_fusion_Expression._match_index__3I(*args): 
      return self._index__3I(*args)
    elif mosek_fusion_Expression._match_alt_index__3I(*args): 
      return self._index_alt__3I(*args)
    else:
      raise ValueError('Invalid argument list index('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expression.index(int32)\n\tmosek.fusion.Expression.index(array(int32,ndim=1))')
  def pick(self,*args):
    if False: pass
    elif mosek_fusion_Expression._match_pick__3I(*args): 
      return self._pick__3I(*args)
    elif mosek_fusion_Expression._match_alt_pick__3I(*args): 
      return self._pick_alt__3I(*args)
    elif mosek_fusion_Expression._match_pick__3_5I(*args): 
      return self._pick__3_5I(*args)
    elif mosek_fusion_Expression._match_alt_pick__3_5I(*args): 
      return self._pick_alt__3_5I(*args)
    else:
      raise ValueError('Invalid argument list pick('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expression.pick(array(int32,ndim=1))\n\tmosek.fusion.Expression.pick(array(int32,ndim=2))')
  def getModel(self,*args):
    if False: pass
    elif mosek_fusion_Expression._match_getModel_(*args): 
      return self._getModel_(*args)
    elif mosek_fusion_Expression._match_alt_getModel_(*args): 
      return self._getModel_alt_(*args)
    else:
      raise ValueError('Invalid argument list getModel('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expression.getModel()')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_Expression._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_Expression._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expression.toString()')
  def getND(self,*args):
    if False: pass
    elif mosek_fusion_Expression._match_getND_(*args): 
      return self._getND_(*args)
    elif mosek_fusion_Expression._match_alt_getND_(*args): 
      return self._getND_alt_(*args)
    else:
      raise ValueError('Invalid argument list getND('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expression.getND()')
  def getDim(self,*args):
    if False: pass
    elif mosek_fusion_Expression._match_getDim_I(*args): 
      return self._getDim_I(*args)
    elif mosek_fusion_Expression._match_alt_getDim_I(*args): 
      return self._getDim_alt_I(*args)
    else:
      raise ValueError('Invalid argument list getDim('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expression.getDim(int32)')
  def getSize(self,*args):
    if False: pass
    elif mosek_fusion_Expression._match_getSize_(*args): 
      return self._getSize_(*args)
    elif mosek_fusion_Expression._match_alt_getSize_(*args): 
      return self._getSize_alt_(*args)
    else:
      raise ValueError('Invalid argument list getSize('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expression.getSize()')
  def recursive_eval(self,*args):
    if False: pass
    elif mosek_fusion_Expression._match_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_Expression._match_alt_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._recursive_1eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list recursive_eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expression.recursive_eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.Expression: '+self._toString_()
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   pass
  @staticmethod
  def _match_pick__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5I__(_0))
  @staticmethod
  def _match_alt_pick__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5I__(_0))
  def _pick_alt__3_5I(self,_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3_5I(_0)
   return _1_res
  def _pick__3_5I(self,_0):
   pass
  @staticmethod
  def _match_pick__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_pick__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _pick_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _pick__3I(self,_0):
   pass
  @staticmethod
  def _match_index__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_index__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _index_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._index__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _index__3I(self,_0):
   pass
  @staticmethod
  def _match_index_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_index_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _index_alt_I(self,_t__0):
    return self._index_I(numpy.int32(__0))
  def _index_I(self,_0):
   pass
  @staticmethod
  def _match_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  def _slice_alt__3I_3I(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self._slice__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _slice__3I_3I(self,_0,_1):
   pass
  @staticmethod
  def _match_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _slice_alt_II(self,_t__0,_t__1):
    return self._slice_II(numpy.int32(__0),numpy.int32(__1))
  def _slice_II(self,_0,_1):
   pass
  @staticmethod
  def _match_compress_1when_1caching_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_compress_1when_1caching_(*args):
    if len(args) != 0: return False
    return True
  def _compress_1when_1caching_alt_(self,):
    return self._compress_1when_1caching_()
  def _compress_1when_1caching_(self,):
   pass
  @staticmethod
  def _match_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _recursive_1eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   pass
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   pass
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(self,_t__0,_t__1,_t__2):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(_0,_1,_2)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(self,_0,_1,_2):
   pass
  @staticmethod
  def _match_getND_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getND_(*args):
    if len(args) != 0: return False
    return True
  def _getND_alt_(self,):
    return self._getND_()
  def _getND_(self,):
   pass
  @staticmethod
  def _match_getDim_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_getDim_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _getDim_alt_I(self,_t__0):
    return self._getDim_I(numpy.int32(__0))
  def _getDim_I(self,_0):
   pass
  @staticmethod
  def _match_getSize_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getSize_(*args):
    if len(args) != 0: return False
    return True
  def _getSize_alt_(self,):
    return self._getSize_()
  def _getSize_(self,):
   pass
  @staticmethod
  def _match_getShape_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getShape_(*args):
    if len(args) != 0: return False
    return True
  def _getShape_alt_(self,):
    return self._getShape_()
  def _getShape_(self,):
   pass
  @staticmethod
  def _match_getModel_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getModel_(*args):
    if len(args) != 0: return False
    return True
  def _getModel_alt_(self,):
    return self._getModel_()
  def _getModel_(self,):
   pass
 return Expression
mosek_fusion_Expression=__mk_mosek_fusion_Expression()
del __mk_mosek_fusion_Expression
def __mk_mosek_fusion_Variable():
 class Variable(mosek_fusion_Expression):
  def getShape(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_getShape_(*args): 
      return self._getShape_(*args)
    elif mosek_fusion_Variable._match_alt_getShape_(*args): 
      return self._getShape_alt_(*args)
    else:
      raise ValueError('Invalid argument list getShape('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.getShape()')
  def reshape(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_reshape__3I(*args): 
      return self._reshape__3I(*args)
    elif mosek_fusion_Variable._match_alt_reshape__3I(*args): 
      return self._reshape_alt__3I(*args)
    elif mosek_fusion_Variable._match_reshape_I(*args): 
      return self._reshape_I(*args)
    elif mosek_fusion_Variable._match_alt_reshape_I(*args): 
      return self._reshape_alt_I(*args)
    elif mosek_fusion_Variable._match_reshape_II(*args): 
      return self._reshape_II(*args)
    elif mosek_fusion_Variable._match_alt_reshape_II(*args): 
      return self._reshape_alt_II(*args)
    elif mosek_fusion_Variable._match_reshape_III(*args): 
      return self._reshape_III(*args)
    elif mosek_fusion_Variable._match_alt_reshape_III(*args): 
      return self._reshape_alt_III(*args)
    else:
      raise ValueError('Invalid argument list reshape('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.reshape(array(int32,ndim=1))\n\tmosek.fusion.Variable.reshape(int32)\n\tmosek.fusion.Variable.reshape(int32,int32)\n\tmosek.fusion.Variable.reshape(int32,int32,int32)')
  def dual(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_dual_(*args): 
      return self._dual_(*args)
    elif mosek_fusion_Variable._match_alt_dual_(*args): 
      return self._dual_alt_(*args)
    else:
      raise ValueError('Invalid argument list dual('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.dual()')
  def set_values(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_set_1values__3DZ(*args): 
      return self._set_1values__3DZ(*args)
    elif mosek_fusion_Variable._match_alt_set_1values__3DZ(*args): 
      return self._set_1values_alt__3DZ(*args)
    else:
      raise ValueError('Invalid argument list set_values('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.set_values(array(double,ndim=1),bool)')
  def pick(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_pick__3I(*args): 
      return self._pick__3I(*args)
    elif mosek_fusion_Variable._match_alt_pick__3I(*args): 
      return self._pick_alt__3I(*args)
    elif mosek_fusion_Variable._match_pick__3_5I(*args): 
      return self._pick__3_5I(*args)
    elif mosek_fusion_Variable._match_alt_pick__3_5I(*args): 
      return self._pick_alt__3_5I(*args)
    elif mosek_fusion_Variable._match_pick__3I_3I(*args): 
      return self._pick__3I_3I(*args)
    elif mosek_fusion_Variable._match_alt_pick__3I_3I(*args): 
      return self._pick_alt__3I_3I(*args)
    elif mosek_fusion_Variable._match_pick__3I_3I_3I(*args): 
      return self._pick__3I_3I_3I(*args)
    elif mosek_fusion_Variable._match_alt_pick__3I_3I_3I(*args): 
      return self._pick_alt__3I_3I_3I(*args)
    else:
      raise ValueError('Invalid argument list pick('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.pick(array(int32,ndim=1))\n\tmosek.fusion.Variable.pick(array(int32,ndim=2))\n\tmosek.fusion.Variable.pick(array(int32,ndim=1),array(int32,ndim=1))\n\tmosek.fusion.Variable.pick(array(int32,ndim=1),array(int32,ndim=1),array(int32,ndim=1))')
  def asExpr(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_asExpr_(*args): 
      return self._asExpr_(*args)
    elif mosek_fusion_Variable._match_alt_asExpr_(*args): 
      return self._asExpr_alt_(*args)
    else:
      raise ValueError('Invalid argument list asExpr('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.asExpr()')
  def make_integer(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_make_1integer_(*args): 
      return self._make_1integer_(*args)
    elif mosek_fusion_Variable._match_alt_make_1integer_(*args): 
      return self._make_1integer_alt_(*args)
    else:
      raise ValueError('Invalid argument list make_integer('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.make_integer()')
  def transpose(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_transpose_(*args): 
      return self._transpose_(*args)
    elif mosek_fusion_Variable._match_alt_transpose_(*args): 
      return self._transpose_alt_(*args)
    else:
      raise ValueError('Invalid argument list transpose('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.transpose()')
  def makeContinuous(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_makeContinuous_(*args): 
      return self._makeContinuous_(*args)
    elif mosek_fusion_Variable._match_alt_makeContinuous_(*args): 
      return self._makeContinuous_alt_(*args)
    else:
      raise ValueError('Invalid argument list makeContinuous('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.makeContinuous()')
  def antidiag(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_antidiag_(*args): 
      return self._antidiag_(*args)
    elif mosek_fusion_Variable._match_alt_antidiag_(*args): 
      return self._antidiag_alt_(*args)
    elif mosek_fusion_Variable._match_antidiag_I(*args): 
      return self._antidiag_I(*args)
    elif mosek_fusion_Variable._match_alt_antidiag_I(*args): 
      return self._antidiag_alt_I(*args)
    else:
      raise ValueError('Invalid argument list antidiag('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.antidiag()\n\tmosek.fusion.Variable.antidiag(int32)')
  def tril(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_tril_(*args): 
      return self._tril_(*args)
    elif mosek_fusion_Variable._match_alt_tril_(*args): 
      return self._tril_alt_(*args)
    else:
      raise ValueError('Invalid argument list tril('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.tril()')
  def remove(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_remove_(*args): 
      return self._remove_(*args)
    elif mosek_fusion_Variable._match_alt_remove_(*args): 
      return self._remove_alt_(*args)
    else:
      raise ValueError('Invalid argument list remove('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.remove()')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_Variable._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.toString()')
  def values(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_values_I_3DZ(*args): 
      return self._values_I_3DZ(*args)
    elif mosek_fusion_Variable._match_alt_values_I_3DZ(*args): 
      return self._values_alt_I_3DZ(*args)
    else:
      raise ValueError('Invalid argument list values('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.values(int32,array(double,ndim=1),bool)')
  def index(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_index_I(*args): 
      return self._index_I(*args)
    elif mosek_fusion_Variable._match_alt_index_I(*args): 
      return self._index_alt_I(*args)
    elif mosek_fusion_Variable._match_index__3I(*args): 
      return self._index__3I(*args)
    elif mosek_fusion_Variable._match_alt_index__3I(*args): 
      return self._index_alt__3I(*args)
    elif mosek_fusion_Variable._match_index_II(*args): 
      return self._index_II(*args)
    elif mosek_fusion_Variable._match_alt_index_II(*args): 
      return self._index_alt_II(*args)
    elif mosek_fusion_Variable._match_index_III(*args): 
      return self._index_III(*args)
    elif mosek_fusion_Variable._match_alt_index_III(*args): 
      return self._index_alt_III(*args)
    else:
      raise ValueError('Invalid argument list index('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.index(int32)\n\tmosek.fusion.Variable.index(array(int32,ndim=1))\n\tmosek.fusion.Variable.index(int32,int32)\n\tmosek.fusion.Variable.index(int32,int32,int32)')
  def getSize(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_getSize_(*args): 
      return self._getSize_(*args)
    elif mosek_fusion_Variable._match_alt_getSize_(*args): 
      return self._getSize_alt_(*args)
    else:
      raise ValueError('Invalid argument list getSize('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.getSize()')
  def level(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_level_(*args): 
      return self._level_(*args)
    elif mosek_fusion_Variable._match_alt_level_(*args): 
      return self._level_alt_(*args)
    else:
      raise ValueError('Invalid argument list level('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.level()')
  def fromTril(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_fromTril_I(*args): 
      return self._fromTril_I(*args)
    elif mosek_fusion_Variable._match_alt_fromTril_I(*args): 
      return self._fromTril_alt_I(*args)
    else:
      raise ValueError('Invalid argument list fromTril('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.fromTril(int32)')
  def inst(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_inst_I_3J(*args): 
      return self._inst_I_3J(*args)
    elif mosek_fusion_Variable._match_alt_inst_I_3J(*args): 
      return self._inst_alt_I_3J(*args)
    elif mosek_fusion_Variable._match_inst_I_3JI_3J(*args): 
      return self._inst_I_3JI_3J(*args)
    elif mosek_fusion_Variable._match_alt_inst_I_3JI_3J(*args): 
      return self._inst_alt_I_3JI_3J(*args)
    else:
      raise ValueError('Invalid argument list inst('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.inst(int32,array(int64,ndim=1))\n\tmosek.fusion.Variable.inst(int32,array(int64,ndim=1),int32,array(int64,ndim=1))')
  def numInst(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_numInst_(*args): 
      return self._numInst_(*args)
    elif mosek_fusion_Variable._match_alt_numInst_(*args): 
      return self._numInst_alt_(*args)
    else:
      raise ValueError('Invalid argument list numInst('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.numInst()')
  def diag(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_diag_(*args): 
      return self._diag_(*args)
    elif mosek_fusion_Variable._match_alt_diag_(*args): 
      return self._diag_alt_(*args)
    elif mosek_fusion_Variable._match_diag_I(*args): 
      return self._diag_I(*args)
    elif mosek_fusion_Variable._match_alt_diag_I(*args): 
      return self._diag_alt_I(*args)
    else:
      raise ValueError('Invalid argument list diag('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.diag()\n\tmosek.fusion.Variable.diag(int32)')
  def makeInteger(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_makeInteger_(*args): 
      return self._makeInteger_(*args)
    elif mosek_fusion_Variable._match_alt_makeInteger_(*args): 
      return self._makeInteger_alt_(*args)
    else:
      raise ValueError('Invalid argument list makeInteger('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.makeInteger()')
  def getND(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_getND_(*args): 
      return self._getND_(*args)
    elif mosek_fusion_Variable._match_alt_getND_(*args): 
      return self._getND_alt_(*args)
    else:
      raise ValueError('Invalid argument list getND('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.getND()')
  def make_continuous(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_make_1continuous_(*args): 
      return self._make_1continuous_(*args)
    elif mosek_fusion_Variable._match_alt_make_1continuous_(*args): 
      return self._make_1continuous_alt_(*args)
    else:
      raise ValueError('Invalid argument list make_continuous('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.make_continuous()')
  def setLevel(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_setLevel__3D(*args): 
      return self._setLevel__3D(*args)
    elif mosek_fusion_Variable._match_alt_setLevel__3D(*args): 
      return self._setLevel_alt__3D(*args)
    else:
      raise ValueError('Invalid argument list setLevel('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.setLevel(array(double,ndim=1))')
  def slice(self,*args):
    if False: pass
    elif mosek_fusion_Variable._match_slice_II(*args): 
      return self._slice_II(*args)
    elif mosek_fusion_Variable._match_alt_slice_II(*args): 
      return self._slice_alt_II(*args)
    elif mosek_fusion_Variable._match_slice__3I_3I(*args): 
      return self._slice__3I_3I(*args)
    elif mosek_fusion_Variable._match_alt_slice__3I_3I(*args): 
      return self._slice_alt__3I_3I(*args)
    else:
      raise ValueError('Invalid argument list slice('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Variable.slice(int32,int32)\n\tmosek.fusion.Variable.slice(array(int32,ndim=1),array(int32,ndim=1))')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.Variable: '+self._toString_()
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   pass
  @staticmethod
  def _match_numInst_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_numInst_(*args):
    if len(args) != 0: return False
    return True
  def _numInst_alt_(self,):
    return self._numInst_()
  def _numInst_(self,):
   pass
  @staticmethod
  def _match_inst_I_3JI_3J(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_I__(_0) and __arg_match__3J__(_1) and __arg_match_I__(_2) and __arg_match__3J__(_3))
  @staticmethod
  def _match_alt_inst_I_3JI_3J(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match_I__(_2) and __arg_alt_match__3J__(_3))
  def _inst_alt_I_3JI_3J(self,_t__0,_t__1,_t__2,_t__3):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.int32(_t__2)
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.int64))
   _1_res = self._inst_I_3JI_3J(_0,_1,_2,_3)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _inst_I_3JI_3J(self,_0,_1,_2,_3):
   pass
  @staticmethod
  def _match_inst_I_3J(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match__3J__(_1))
  @staticmethod
  def _match_alt_inst_I_3J(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3J__(_1))
  def _inst_alt_I_3J(self,_t__0,_t__1):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _1_res = self._inst_I_3J(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _inst_I_3J(self,_0,_1):
   pass
  @staticmethod
  def _match_remove_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_remove_(*args):
    if len(args) != 0: return False
    return True
  def _remove_alt_(self,):
    return self._remove_()
  def _remove_(self,):
   pass
  @staticmethod
  def _match_getND_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getND_(*args):
    if len(args) != 0: return False
    return True
  def _getND_alt_(self,):
    return self._getND_()
  def _getND_(self,):
   pass
  @staticmethod
  def _match_getShape_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getShape_(*args):
    if len(args) != 0: return False
    return True
  def _getShape_alt_(self,):
    return self._getShape_()
  def _getShape_(self,):
   pass
  @staticmethod
  def _match_getSize_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getSize_(*args):
    if len(args) != 0: return False
    return True
  def _getSize_alt_(self,):
    return self._getSize_()
  def _getSize_(self,):
   pass
  @staticmethod
  def _match_setLevel__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_setLevel__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  def _setLevel_alt__3D(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = self._setLevel__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _setLevel__3D(self,_0):
   pass
  @staticmethod
  def _match_fromTril_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_fromTril_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _fromTril_alt_I(self,_t__0):
    return self._fromTril_I(numpy.int32(__0))
  def _fromTril_I(self,_0):
   pass
  @staticmethod
  def _match_tril_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_tril_(*args):
    if len(args) != 0: return False
    return True
  def _tril_alt_(self,):
    return self._tril_()
  def _tril_(self,):
   pass
  @staticmethod
  def _match_reshape_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_reshape_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  def _reshape_alt_III(self,_t__0,_t__1,_t__2):
    return self._reshape_III(numpy.int32(__0),numpy.int32(__1),numpy.int32(__2))
  def _reshape_III(self,_0,_1,_2):
   pass
  @staticmethod
  def _match_reshape_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_reshape_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _reshape_alt_II(self,_t__0,_t__1):
    return self._reshape_II(numpy.int32(__0),numpy.int32(__1))
  def _reshape_II(self,_0,_1):
   pass
  @staticmethod
  def _match_reshape_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_reshape_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _reshape_alt_I(self,_t__0):
    return self._reshape_I(numpy.int32(__0))
  def _reshape_I(self,_0):
   pass
  @staticmethod
  def _match_reshape__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_reshape__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _reshape_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._reshape__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _reshape__3I(self,_0):
   pass
  @staticmethod
  def _match_set_1values__3DZ(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match_Z__(_1))
  @staticmethod
  def _match_alt_set_1values__3DZ(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match_Z__(_1))
  def _set_1values_alt__3DZ(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = self._set_1values__3DZ(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _set_1values__3DZ(self,_0,_1):
   pass
  @staticmethod
  def _match_dual_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_dual_(*args):
    if len(args) != 0: return False
    return True
  def _dual_alt_(self,):
    return self._dual_()
  def _dual_(self,):
   pass
  @staticmethod
  def _match_level_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_level_(*args):
    if len(args) != 0: return False
    return True
  def _level_alt_(self,):
    return self._level_()
  def _level_(self,):
   pass
  @staticmethod
  def _match_values_I_3DZ(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match__3D__(_1) and __arg_match_Z__(_2))
  @staticmethod
  def _match_alt_values_I_3DZ(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3D__(_1) and __arg_alt_match_Z__(_2))
  def _values_alt_I_3DZ(self,_t__0,_t__1,_t__2):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _2=_t__2
   _1_res = self._values_I_3DZ(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _values_I_3DZ(self,_0,_1,_2):
   pass
  @staticmethod
  def _match_make_1continuous_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_make_1continuous_(*args):
    if len(args) != 0: return False
    return True
  def _make_1continuous_alt_(self,):
    return self._make_1continuous_()
  def _make_1continuous_(self,):
   pass
  @staticmethod
  def _match_make_1integer_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_make_1integer_(*args):
    if len(args) != 0: return False
    return True
  def _make_1integer_alt_(self,):
    return self._make_1integer_()
  def _make_1integer_(self,):
   pass
  @staticmethod
  def _match_makeContinuous_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_makeContinuous_(*args):
    if len(args) != 0: return False
    return True
  def _makeContinuous_alt_(self,):
    return self._makeContinuous_()
  def _makeContinuous_(self,):
   pass
  @staticmethod
  def _match_makeInteger_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_makeInteger_(*args):
    if len(args) != 0: return False
    return True
  def _makeInteger_alt_(self,):
    return self._makeInteger_()
  def _makeInteger_(self,):
   pass
  @staticmethod
  def _match_transpose_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_transpose_(*args):
    if len(args) != 0: return False
    return True
  def _transpose_alt_(self,):
    return self._transpose_()
  def _transpose_(self,):
   pass
  @staticmethod
  def _match_pick__3I_3I_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1) and __arg_match__3I__(_2))
  @staticmethod
  def _match_alt_pick__3I_3I_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3I__(_2))
  def _pick_alt__3I_3I_3I(self,_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3I_3I_3I(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _pick__3I_3I_3I(self,_0,_1,_2):
   pass
  @staticmethod
  def _match_pick__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_pick__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  def _pick_alt__3I_3I(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _pick__3I_3I(self,_0,_1):
   pass
  @staticmethod
  def _match_pick__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5I__(_0))
  @staticmethod
  def _match_alt_pick__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5I__(_0))
  def _pick_alt__3_5I(self,_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3_5I(_0)
   return _1_res
  def _pick__3_5I(self,_0):
   pass
  @staticmethod
  def _match_pick__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_pick__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _pick_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _pick__3I(self,_0):
   pass
  @staticmethod
  def _match_antidiag_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_antidiag_(*args):
    if len(args) != 0: return False
    return True
  def _antidiag_alt_(self,):
    return self._antidiag_()
  def _antidiag_(self,):
   pass
  @staticmethod
  def _match_antidiag_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_antidiag_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _antidiag_alt_I(self,_t__0):
    return self._antidiag_I(numpy.int32(__0))
  def _antidiag_I(self,_0):
   pass
  @staticmethod
  def _match_diag_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_diag_(*args):
    if len(args) != 0: return False
    return True
  def _diag_alt_(self,):
    return self._diag_()
  def _diag_(self,):
   pass
  @staticmethod
  def _match_diag_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_diag_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _diag_alt_I(self,_t__0):
    return self._diag_I(numpy.int32(__0))
  def _diag_I(self,_0):
   pass
  @staticmethod
  def _match_index__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_index__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _index_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._index__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _index__3I(self,_0):
   pass
  @staticmethod
  def _match_index_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_index_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  def _index_alt_III(self,_t__0,_t__1,_t__2):
    return self._index_III(numpy.int32(__0),numpy.int32(__1),numpy.int32(__2))
  def _index_III(self,_0,_1,_2):
   pass
  @staticmethod
  def _match_index_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_index_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _index_alt_II(self,_t__0,_t__1):
    return self._index_II(numpy.int32(__0),numpy.int32(__1))
  def _index_II(self,_0,_1):
   pass
  @staticmethod
  def _match_index_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_index_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _index_alt_I(self,_t__0):
    return self._index_I(numpy.int32(__0))
  def _index_I(self,_0):
   pass
  @staticmethod
  def _match_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  def _slice_alt__3I_3I(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self._slice__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _slice__3I_3I(self,_0,_1):
   pass
  @staticmethod
  def _match_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _slice_alt_II(self,_t__0,_t__1):
    return self._slice_II(numpy.int32(__0),numpy.int32(__1))
  def _slice_II(self,_0,_1):
   pass
  @staticmethod
  def _match_asExpr_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_asExpr_(*args):
    if len(args) != 0: return False
    return True
  def _asExpr_alt_(self,):
    return self._asExpr_()
  def _asExpr_(self,):
   pass
 return Variable
mosek_fusion_Variable=__mk_mosek_fusion_Variable()
del __mk_mosek_fusion_Variable
def __mk_mosek_fusion_Parameter():
 class Parameter(mosek_fusion_Expression):
  def getIndex(self,*args):
    if False: pass
    elif mosek_fusion_Parameter._match_getIndex_I(*args): 
      return self._getIndex_I(*args)
    elif mosek_fusion_Parameter._match_alt_getIndex_I(*args): 
      return self._getIndex_alt_I(*args)
    else:
      raise ValueError('Invalid argument list getIndex('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameter.getIndex(int32)')
  def getNumNonzero(self,*args):
    if False: pass
    elif mosek_fusion_Parameter._match_getNumNonzero_(*args): 
      return self._getNumNonzero_(*args)
    elif mosek_fusion_Parameter._match_alt_getNumNonzero_(*args): 
      return self._getNumNonzero_alt_(*args)
    else:
      raise ValueError('Invalid argument list getNumNonzero('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameter.getNumNonzero()')
  def isSparse(self,*args):
    if False: pass
    elif mosek_fusion_Parameter._match_isSparse_(*args): 
      return self._isSparse_(*args)
    elif mosek_fusion_Parameter._match_alt_isSparse_(*args): 
      return self._isSparse_alt_(*args)
    else:
      raise ValueError('Invalid argument list isSparse('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameter.isSparse()')
  def getSize(self,*args):
    if False: pass
    elif mosek_fusion_Parameter._match_getSize_(*args): 
      return self._getSize_(*args)
    elif mosek_fusion_Parameter._match_alt_getSize_(*args): 
      return self._getSize_alt_(*args)
    else:
      raise ValueError('Invalid argument list getSize('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameter.getSize()')
  def getValue(self,*args):
    if False: pass
    elif mosek_fusion_Parameter._match_getValue_(*args): 
      return self._getValue_(*args)
    elif mosek_fusion_Parameter._match_alt_getValue_(*args): 
      return self._getValue_alt_(*args)
    else:
      raise ValueError('Invalid argument list getValue('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameter.getValue()')
  def getSp(self,*args):
    if False: pass
    elif mosek_fusion_Parameter._match_getSp__3JI(*args): 
      return self._getSp__3JI(*args)
    elif mosek_fusion_Parameter._match_alt_getSp__3JI(*args): 
      return self._getSp_alt__3JI(*args)
    else:
      raise ValueError('Invalid argument list getSp('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameter.getSp(array(int64,ndim=1),int32)')
  def setValue(self,*args):
    if False: pass
    elif mosek_fusion_Parameter._match_setValue_D(*args): 
      return self._setValue_D(*args)
    elif mosek_fusion_Parameter._match_alt_setValue_D(*args): 
      return self._setValue_alt_D(*args)
    elif mosek_fusion_Parameter._match_setValue__3D(*args): 
      return self._setValue__3D(*args)
    elif mosek_fusion_Parameter._match_alt_setValue__3D(*args): 
      return self._setValue_alt__3D(*args)
    elif mosek_fusion_Parameter._match_setValue__3_5D(*args): 
      return self._setValue__3_5D(*args)
    elif mosek_fusion_Parameter._match_alt_setValue__3_5D(*args): 
      return self._setValue_alt__3_5D(*args)
    else:
      raise ValueError('Invalid argument list setValue('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameter.setValue(double)\n\tmosek.fusion.Parameter.setValue(array(double,ndim=1))\n\tmosek.fusion.Parameter.setValue(array(double,ndim=2))')
  def getND(self,*args):
    if False: pass
    elif mosek_fusion_Parameter._match_getND_(*args): 
      return self._getND_(*args)
    elif mosek_fusion_Parameter._match_alt_getND_(*args): 
      return self._getND_alt_(*args)
    else:
      raise ValueError('Invalid argument list getND('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameter.getND()')
  def clone(self,*args):
    if False: pass
    elif mosek_fusion_Parameter._match_clone_Lmosek_4fusion_4Model_2(*args): 
      return self._clone_Lmosek_4fusion_4Model_2(*args)
    elif mosek_fusion_Parameter._match_alt_clone_Lmosek_4fusion_4Model_2(*args): 
      return self._clone_alt_Lmosek_4fusion_4Model_2(*args)
    else:
      raise ValueError('Invalid argument list clone('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameter.clone(mosek.fusion.Model)')
  def getAllIndexes(self,*args):
    if False: pass
    elif mosek_fusion_Parameter._match_getAllIndexes__3II(*args): 
      return self._getAllIndexes__3II(*args)
    elif mosek_fusion_Parameter._match_alt_getAllIndexes__3II(*args): 
      return self._getAllIndexes_alt__3II(*args)
    else:
      raise ValueError('Invalid argument list getAllIndexes('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameter.getAllIndexes(array(int32,ndim=1),int32)')
  def asExpr(self,*args):
    if False: pass
    elif mosek_fusion_Parameter._match_asExpr_(*args): 
      return self._asExpr_(*args)
    elif mosek_fusion_Parameter._match_alt_asExpr_(*args): 
      return self._asExpr_alt_(*args)
    else:
      raise ValueError('Invalid argument list asExpr('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameter.asExpr()')
  def getShape(self,*args):
    if False: pass
    elif mosek_fusion_Parameter._match_getShape_(*args): 
      return self._getShape_(*args)
    elif mosek_fusion_Parameter._match_alt_getShape_(*args): 
      return self._getShape_alt_(*args)
    else:
      raise ValueError('Invalid argument list getShape('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameter.getShape()')
  def reshape(self,*args):
    if False: pass
    elif mosek_fusion_Parameter._match_reshape__3I(*args): 
      return self._reshape__3I(*args)
    elif mosek_fusion_Parameter._match_alt_reshape__3I(*args): 
      return self._reshape_alt__3I(*args)
    else:
      raise ValueError('Invalid argument list reshape('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameter.reshape(array(int32,ndim=1))')
  def getDim(self,*args):
    if False: pass
    elif mosek_fusion_Parameter._match_getDim_I(*args): 
      return self._getDim_I(*args)
    elif mosek_fusion_Parameter._match_alt_getDim_I(*args): 
      return self._getDim_alt_I(*args)
    else:
      raise ValueError('Invalid argument list getDim('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameter.getDim(int32)')
  def transpose(self,*args):
    if False: pass
    elif mosek_fusion_Parameter._match_transpose_(*args): 
      return self._transpose_(*args)
    elif mosek_fusion_Parameter._match_alt_transpose_(*args): 
      return self._transpose_alt_(*args)
    else:
      raise ValueError('Invalid argument list transpose('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameter.transpose()')
  def pick(self,*args):
    if False: pass
    elif mosek_fusion_Parameter._match_pick__3I(*args): 
      return self._pick__3I(*args)
    elif mosek_fusion_Parameter._match_alt_pick__3I(*args): 
      return self._pick_alt__3I(*args)
    elif mosek_fusion_Parameter._match_pick__3_5I(*args): 
      return self._pick__3_5I(*args)
    elif mosek_fusion_Parameter._match_alt_pick__3_5I(*args): 
      return self._pick_alt__3_5I(*args)
    else:
      raise ValueError('Invalid argument list pick('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameter.pick(array(int32,ndim=1))\n\tmosek.fusion.Parameter.pick(array(int32,ndim=2))')
  def slice(self,*args):
    if False: pass
    elif mosek_fusion_Parameter._match_slice_II(*args): 
      return self._slice_II(*args)
    elif mosek_fusion_Parameter._match_alt_slice_II(*args): 
      return self._slice_alt_II(*args)
    elif mosek_fusion_Parameter._match_slice__3I_3I(*args): 
      return self._slice__3I_3I(*args)
    elif mosek_fusion_Parameter._match_alt_slice__3I_3I(*args): 
      return self._slice_alt__3I_3I(*args)
    else:
      raise ValueError('Invalid argument list slice('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameter.slice(int32,int32)\n\tmosek.fusion.Parameter.slice(array(int32,ndim=1),array(int32,ndim=1))')
  def __repr__(self): return 'mosek.fusion.Parameter'
  @staticmethod
  def _match_clone_Lmosek_4fusion_4Model_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(_0))
  @staticmethod
  def _match_alt_clone_Lmosek_4fusion_4Model_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(_0))
  def _clone_alt_Lmosek_4fusion_4Model_2(self,_t__0):
    return self._clone_Lmosek_4fusion_4Model_2(_0)
  def _clone_Lmosek_4fusion_4Model_2(self,_0):
   pass
  @staticmethod
  def _match_getSize_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getSize_(*args):
    if len(args) != 0: return False
    return True
  def _getSize_alt_(self,):
    return self._getSize_()
  def _getSize_(self,):
   pass
  @staticmethod
  def _match_getAllIndexes__3II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_getAllIndexes__3II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match_I__(_1))
  def _getAllIndexes_alt__3II(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.int32(_t__1)
   _1_res = self._getAllIndexes__3II(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _getAllIndexes__3II(self,_0,_1):
   pass
  @staticmethod
  def _match_getIndex_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_getIndex_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _getIndex_alt_I(self,_t__0):
    return self._getIndex_I(numpy.int32(__0))
  def _getIndex_I(self,_0):
   pass
  @staticmethod
  def _match_getSp__3JI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3J__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_getSp__3JI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match_I__(_1))
  def _getSp_alt__3JI(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.int32(_t__1)
   _1_res = self._getSp__3JI(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _getSp__3JI(self,_0,_1):
   pass
  @staticmethod
  def _match_getShape_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getShape_(*args):
    if len(args) != 0: return False
    return True
  def _getShape_alt_(self,):
    return self._getShape_()
  def _getShape_(self,):
   pass
  @staticmethod
  def _match_getND_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getND_(*args):
    if len(args) != 0: return False
    return True
  def _getND_alt_(self,):
    return self._getND_()
  def _getND_(self,):
   pass
  @staticmethod
  def _match_getDim_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_getDim_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _getDim_alt_I(self,_t__0):
    return self._getDim_I(numpy.int32(__0))
  def _getDim_I(self,_0):
   pass
  @staticmethod
  def _match_transpose_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_transpose_(*args):
    if len(args) != 0: return False
    return True
  def _transpose_alt_(self,):
    return self._transpose_()
  def _transpose_(self,):
   pass
  @staticmethod
  def _match_pick__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5I__(_0))
  @staticmethod
  def _match_alt_pick__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5I__(_0))
  def _pick_alt__3_5I(self,_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3_5I(_0)
   return _1_res
  def _pick__3_5I(self,_0):
   pass
  @staticmethod
  def _match_pick__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_pick__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _pick_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _pick__3I(self,_0):
   pass
  @staticmethod
  def _match_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  def _slice_alt__3I_3I(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self._slice__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _slice__3I_3I(self,_0,_1):
   pass
  @staticmethod
  def _match_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _slice_alt_II(self,_t__0,_t__1):
    return self._slice_II(numpy.int32(__0),numpy.int32(__1))
  def _slice_II(self,_0,_1):
   pass
  @staticmethod
  def _match_isSparse_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_isSparse_(*args):
    if len(args) != 0: return False
    return True
  def _isSparse_alt_(self,):
    return self._isSparse_()
  def _isSparse_(self,):
   pass
  @staticmethod
  def _match_reshape__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_reshape__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _reshape_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._reshape__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _reshape__3I(self,_0):
   pass
  @staticmethod
  def _match_getNumNonzero_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getNumNonzero_(*args):
    if len(args) != 0: return False
    return True
  def _getNumNonzero_alt_(self,):
    return self._getNumNonzero_()
  def _getNumNonzero_(self,):
   pass
  @staticmethod
  def _match_asExpr_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_asExpr_(*args):
    if len(args) != 0: return False
    return True
  def _asExpr_alt_(self,):
    return self._asExpr_()
  def _asExpr_(self,):
   pass
  @staticmethod
  def _match_getValue_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getValue_(*args):
    if len(args) != 0: return False
    return True
  def _getValue_alt_(self,):
    return self._getValue_()
  def _getValue_(self,):
   pass
  @staticmethod
  def _match_setValue__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5D__(_0))
  @staticmethod
  def _match_alt_setValue__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5D__(_0))
  def _setValue_alt__3_5D(self,_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1_res = self._setValue__3_5D(_0)
   return _1_res
  def _setValue__3_5D(self,_0):
   pass
  @staticmethod
  def _match_setValue__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_setValue__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  def _setValue_alt__3D(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = self._setValue__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _setValue__3D(self,_0):
   pass
  @staticmethod
  def _match_setValue_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_D__(_0))
  @staticmethod
  def _match_alt_setValue_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_D__(_0))
  def _setValue_alt_D(self,_t__0):
    return self._setValue_D(numpy.float64(__0))
  def _setValue_D(self,_0):
   pass
 return Parameter
mosek_fusion_Parameter=__mk_mosek_fusion_Parameter()
del __mk_mosek_fusion_Parameter
def __mk_mosek_fusion_FusionException():
 class FusionException(Exception):
  __slots__ = ['_FusionException__msg']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.FusionException.ctor(string)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_FusionException._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_FusionException._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.FusionException.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.FusionException: '+self._toString_()
  @staticmethod
  def _ctor_S(msg_):
    o = FusionException.__new__(FusionException)
    o._ctor_init_S(msg_)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg_, = args
    return (__arg_match_S__(msg_))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg_, = args
    return (__arg_alt_match_S__(msg_))
  def _ctor_alt_init_S(self,msg_):
    self._ctor_init_S(msg_)
  def _ctor_init_S(self,msg_):
   Exception.__init__(self,msg_)
   self.__msg = msg_
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (self.__msg)
 return FusionException
mosek_fusion_FusionException=__mk_mosek_fusion_FusionException()
del __mk_mosek_fusion_FusionException
def __mk_mosek_fusion_SolutionError():
 class SolutionError(mosek_fusion_FusionException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_(*args): 
      self._ctor_init_(*args)
    elif self.__match_alt_ctor_(*args):
      self._ctor_alt_init_(*args)
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.SolutionError.ctor()\n\tmosek.fusion.SolutionError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.SolutionError'
  @staticmethod
  def _ctor_():
    o = SolutionError.__new__(SolutionError)
    o._ctor_init_()
    return o
  @staticmethod
  def __match_ctor_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def __match_alt_ctor_(*args):
    if len(args) != 0: return False
    return True
  def _ctor_alt_init_(self,):
    self._ctor_init_()
  def _ctor_init_(self,):
   mosek_fusion_FusionException._ctor_init_S(self,"Solution is invalid or undefined")
  @staticmethod
  def _ctor_S(msg):
    o = SolutionError.__new__(SolutionError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionException._ctor_init_S(self,msg)
 return SolutionError
mosek_fusion_SolutionError=__mk_mosek_fusion_SolutionError()
del __mk_mosek_fusion_SolutionError
def __mk_mosek_fusion_UnimplementedError():
 class UnimplementedError(Exception):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.UnimplementedError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.UnimplementedError'
  @staticmethod
  def _ctor_S(msg):
    o = UnimplementedError.__new__(UnimplementedError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   Exception.__init__(self,msg)
 return UnimplementedError
mosek_fusion_UnimplementedError=__mk_mosek_fusion_UnimplementedError()
del __mk_mosek_fusion_UnimplementedError
def __mk_mosek_fusion_FatalError():
 class FatalError(Exception):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.FatalError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.FatalError'
  @staticmethod
  def _ctor_S(msg):
    o = FatalError.__new__(FatalError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   Exception.__init__(self,msg)
 return FatalError
mosek_fusion_FatalError=__mk_mosek_fusion_FatalError()
del __mk_mosek_fusion_FatalError
def __mk_mosek_fusion_UnexpectedError():
 class UnexpectedError(Exception):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4FusionException_2(*args): 
      self._ctor_init_Lmosek_4fusion_4FusionException_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4FusionException_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4FusionException_2(*args)
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.UnexpectedError.ctor(mosek.fusion.FusionException)\n\tmosek.fusion.UnexpectedError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.UnexpectedError'
  @staticmethod
  def _ctor_Lmosek_4fusion_4FusionException_2(e):
    o = UnexpectedError.__new__(UnexpectedError)
    o._ctor_init_Lmosek_4fusion_4FusionException_2(e)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4FusionException_2(*args):
    if len(args) != 1: return False
    e, = args
    return (__arg_match_Lmosek_4fusion_4FusionException_2__(e))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4FusionException_2(*args):
    if len(args) != 1: return False
    e, = args
    return (__arg_alt_match_Lmosek_4fusion_4FusionException_2__(e))
  def _ctor_alt_init_Lmosek_4fusion_4FusionException_2(self,e):
    self._ctor_init_Lmosek_4fusion_4FusionException_2(e)
  def _ctor_init_Lmosek_4fusion_4FusionException_2(self,e):
   Exception.__init__(self,e.toString())
  @staticmethod
  def _ctor_S(msg):
    o = UnexpectedError.__new__(UnexpectedError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   Exception.__init__(self,msg)
 return UnexpectedError
mosek_fusion_UnexpectedError=__mk_mosek_fusion_UnexpectedError()
del __mk_mosek_fusion_UnexpectedError
def __mk_mosek_fusion_FusionRuntimeException():
 class FusionRuntimeException(Exception):
  __slots__ = ['_FusionRuntimeException__msg']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.FusionRuntimeException.ctor(string)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_FusionRuntimeException._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_FusionRuntimeException._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.FusionRuntimeException.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.FusionRuntimeException: '+self._toString_()
  @staticmethod
  def _ctor_S(msg_):
    o = FusionRuntimeException.__new__(FusionRuntimeException)
    o._ctor_init_S(msg_)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg_, = args
    return (__arg_match_S__(msg_))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg_, = args
    return (__arg_alt_match_S__(msg_))
  def _ctor_alt_init_S(self,msg_):
    self._ctor_init_S(msg_)
  def _ctor_init_S(self,msg_):
   Exception.__init__(self,msg_)
   self.__msg = msg_
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (self.__msg)
 return FusionRuntimeException
mosek_fusion_FusionRuntimeException=__mk_mosek_fusion_FusionRuntimeException()
del __mk_mosek_fusion_FusionRuntimeException
def __mk_mosek_fusion_SparseFormatError():
 class SparseFormatError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.SparseFormatError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.SparseFormatError'
  @staticmethod
  def _ctor_S(msg):
    o = SparseFormatError.__new__(SparseFormatError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return SparseFormatError
mosek_fusion_SparseFormatError=__mk_mosek_fusion_SparseFormatError()
del __mk_mosek_fusion_SparseFormatError
def __mk_mosek_fusion_SliceError():
 class SliceError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_(*args): 
      self._ctor_init_(*args)
    elif self.__match_alt_ctor_(*args):
      self._ctor_alt_init_(*args)
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.SliceError.ctor()\n\tmosek.fusion.SliceError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.SliceError'
  @staticmethod
  def _ctor_():
    o = SliceError.__new__(SliceError)
    o._ctor_init_()
    return o
  @staticmethod
  def __match_ctor_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def __match_alt_ctor_(*args):
    if len(args) != 0: return False
    return True
  def _ctor_alt_init_(self,):
    self._ctor_init_()
  def _ctor_init_(self,):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,"Invalid slice range")
  @staticmethod
  def _ctor_S(msg):
    o = SliceError.__new__(SliceError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return SliceError
mosek_fusion_SliceError=__mk_mosek_fusion_SliceError()
del __mk_mosek_fusion_SliceError
def __mk_mosek_fusion_UpdateError():
 class UpdateError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_(*args): 
      self._ctor_init_(*args)
    elif self.__match_alt_ctor_(*args):
      self._ctor_alt_init_(*args)
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.UpdateError.ctor()\n\tmosek.fusion.UpdateError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.UpdateError'
  @staticmethod
  def _ctor_():
    o = UpdateError.__new__(UpdateError)
    o._ctor_init_()
    return o
  @staticmethod
  def __match_ctor_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def __match_alt_ctor_(*args):
    if len(args) != 0: return False
    return True
  def _ctor_alt_init_(self,):
    self._ctor_init_()
  def _ctor_init_(self,):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,"Cannot update parameterized item")
  @staticmethod
  def _ctor_S(msg):
    o = UpdateError.__new__(UpdateError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return UpdateError
mosek_fusion_UpdateError=__mk_mosek_fusion_UpdateError()
del __mk_mosek_fusion_UpdateError
def __mk_mosek_fusion_SetDefinitionError():
 class SetDefinitionError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.SetDefinitionError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.SetDefinitionError'
  @staticmethod
  def _ctor_S(msg):
    o = SetDefinitionError.__new__(SetDefinitionError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return SetDefinitionError
mosek_fusion_SetDefinitionError=__mk_mosek_fusion_SetDefinitionError()
del __mk_mosek_fusion_SetDefinitionError
def __mk_mosek_fusion_OptimizeError():
 class OptimizeError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.OptimizeError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.OptimizeError'
  @staticmethod
  def _ctor_S(msg):
    o = OptimizeError.__new__(OptimizeError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return OptimizeError
mosek_fusion_OptimizeError=__mk_mosek_fusion_OptimizeError()
del __mk_mosek_fusion_OptimizeError
def __mk_mosek_fusion_NameError():
 class NameError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.NameError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.NameError'
  @staticmethod
  def _ctor_S(msg):
    o = NameError.__new__(NameError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return NameError
mosek_fusion_NameError=__mk_mosek_fusion_NameError()
del __mk_mosek_fusion_NameError
def __mk_mosek_fusion_DeletionError():
 class DeletionError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.DeletionError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.DeletionError'
  @staticmethod
  def _ctor_S(msg):
    o = DeletionError.__new__(DeletionError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return DeletionError
mosek_fusion_DeletionError=__mk_mosek_fusion_DeletionError()
del __mk_mosek_fusion_DeletionError
def __mk_mosek_fusion_ModelError():
 class ModelError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ModelError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.ModelError'
  @staticmethod
  def _ctor_S(msg):
    o = ModelError.__new__(ModelError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return ModelError
mosek_fusion_ModelError=__mk_mosek_fusion_ModelError()
del __mk_mosek_fusion_ModelError
def __mk_mosek_fusion_MatrixError():
 class MatrixError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.MatrixError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.MatrixError'
  @staticmethod
  def _ctor_S(msg):
    o = MatrixError.__new__(MatrixError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return MatrixError
mosek_fusion_MatrixError=__mk_mosek_fusion_MatrixError()
del __mk_mosek_fusion_MatrixError
def __mk_mosek_fusion_DimensionError():
 class DimensionError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.DimensionError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.DimensionError'
  @staticmethod
  def _ctor_S(msg):
    o = DimensionError.__new__(DimensionError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return DimensionError
mosek_fusion_DimensionError=__mk_mosek_fusion_DimensionError()
del __mk_mosek_fusion_DimensionError
def __mk_mosek_fusion_LengthError():
 class LengthError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.LengthError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.LengthError'
  @staticmethod
  def _ctor_S(msg):
    o = LengthError.__new__(LengthError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return LengthError
mosek_fusion_LengthError=__mk_mosek_fusion_LengthError()
del __mk_mosek_fusion_LengthError
def __mk_mosek_fusion_RangeError():
 class RangeError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.RangeError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.RangeError'
  @staticmethod
  def _ctor_S(msg):
    o = RangeError.__new__(RangeError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return RangeError
mosek_fusion_RangeError=__mk_mosek_fusion_RangeError()
del __mk_mosek_fusion_RangeError
def __mk_mosek_fusion_IndexError():
 class IndexError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.IndexError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.IndexError'
  @staticmethod
  def _ctor_S(msg):
    o = IndexError.__new__(IndexError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return IndexError
mosek_fusion_IndexError=__mk_mosek_fusion_IndexError()
del __mk_mosek_fusion_IndexError
def __mk_mosek_fusion_DomainError():
 class DomainError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.DomainError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.DomainError'
  @staticmethod
  def _ctor_S(msg):
    o = DomainError.__new__(DomainError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return DomainError
mosek_fusion_DomainError=__mk_mosek_fusion_DomainError()
del __mk_mosek_fusion_DomainError
def __mk_mosek_fusion_ValueConversionError():
 class ValueConversionError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ValueConversionError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.ValueConversionError'
  @staticmethod
  def _ctor_S(msg):
    o = ValueConversionError.__new__(ValueConversionError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return ValueConversionError
mosek_fusion_ValueConversionError=__mk_mosek_fusion_ValueConversionError()
del __mk_mosek_fusion_ValueConversionError
def __mk_mosek_fusion_ParameterError():
 class ParameterError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ParameterError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.ParameterError'
  @staticmethod
  def _ctor_S(msg):
    o = ParameterError.__new__(ParameterError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return ParameterError
mosek_fusion_ParameterError=__mk_mosek_fusion_ParameterError()
del __mk_mosek_fusion_ParameterError
def __mk_mosek_fusion_ExpressionError():
 class ExpressionError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExpressionError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.ExpressionError'
  @staticmethod
  def _ctor_S(msg):
    o = ExpressionError.__new__(ExpressionError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return ExpressionError
mosek_fusion_ExpressionError=__mk_mosek_fusion_ExpressionError()
del __mk_mosek_fusion_ExpressionError
def __mk_mosek_fusion_IOError():
 class IOError(mosek_fusion_FusionRuntimeException):
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.IOError.ctor(string)')
  def __repr__(self): return 'mosek.fusion.IOError'
  @staticmethod
  def _ctor_S(msg):
    o = IOError.__new__(IOError)
    o._ctor_init_S(msg)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_match_S__(msg))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    msg, = args
    return (__arg_alt_match_S__(msg))
  def _ctor_alt_init_S(self,msg):
    self._ctor_init_S(msg)
  def _ctor_init_S(self,msg):
   mosek_fusion_FusionRuntimeException._ctor_init_S(self,msg)
 return IOError
mosek_fusion_IOError=__mk_mosek_fusion_IOError()
del __mk_mosek_fusion_IOError
def __mk_mosek_fusion_Disjunction():
 class Disjunction(object):
  __slots__ = ['_Disjunction__id']
  def __repr__(self): return 'mosek.fusion.Disjunction'
  @staticmethod
  def _ctor_J(id):
    o = Disjunction.__new__(Disjunction)
    o._ctor_init_J(id)
    return o
  @staticmethod
  def __match_ctor_J(*args):
    if len(args) != 1: return False
    id, = args
    return (__arg_match_J__(id))
  @staticmethod
  def __match_alt_ctor_J(*args):
    if len(args) != 1: return False
    id, = args
    return (__arg_alt_match_J__(id))
  def _ctor_alt_init_J(self,id):
    self._ctor_init_J(numpy.int64(id))
  def _ctor_init_J(self,id):
   (self.__id) = id
 return Disjunction
mosek_fusion_Disjunction=__mk_mosek_fusion_Disjunction()
del __mk_mosek_fusion_Disjunction
def __mk_mosek_fusion_DisjunctionTerms():
 class DisjunctionTerms(object):
  __slots__ = ['_terms']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor__3Lmosek_4fusion_4Term_2(*args): 
      self._ctor_init__3Lmosek_4fusion_4Term_2(*args)
    elif self.__match_alt_ctor__3Lmosek_4fusion_4Term_2(*args):
      self._ctor_alt_init__3Lmosek_4fusion_4Term_2(*args)
    elif self.__match_ctor_Lmosek_4fusion_4ExprRangeDomain_2(*args): 
      self._ctor_init_Lmosek_4fusion_4ExprRangeDomain_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4ExprRangeDomain_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4ExprRangeDomain_2(*args)
    elif self.__match_ctor_Lmosek_4fusion_4ExprLinearDomain_2(*args): 
      self._ctor_init_Lmosek_4fusion_4ExprLinearDomain_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4ExprLinearDomain_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4ExprLinearDomain_2(*args)
    elif self.__match_ctor_Lmosek_4fusion_4DisjunctionTerms_2_3Lmosek_4fusion_4Term_2(*args): 
      self._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2_3Lmosek_4fusion_4Term_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4DisjunctionTerms_2_3Lmosek_4fusion_4Term_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4DisjunctionTerms_2_3Lmosek_4fusion_4Term_2(*args)
    elif self.__match_ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4Term_2(*args): 
      self._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4Term_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4Term_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4Term_2(*args)
    elif self.__match_ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprRangeDomain_2(*args): 
      self._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprRangeDomain_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprRangeDomain_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprRangeDomain_2(*args)
    elif self.__match_ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprLinearDomain_2(*args): 
      self._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprLinearDomain_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprLinearDomain_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprLinearDomain_2(*args)
    elif self.__match_ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4DisjunctionTerms_2(*args): 
      self._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4DisjunctionTerms_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4DisjunctionTerms_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4DisjunctionTerms_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.DisjunctionTerms.ctor(array(mosek.fusion.Term,ndim=1))\n\tmosek.fusion.DisjunctionTerms.ctor(mosek.fusion.ExprRangeDomain)\n\tmosek.fusion.DisjunctionTerms.ctor(mosek.fusion.ExprLinearDomain)\n\tmosek.fusion.DisjunctionTerms.ctor(mosek.fusion.DisjunctionTerms,array(mosek.fusion.Term,ndim=1))\n\tmosek.fusion.DisjunctionTerms.ctor(mosek.fusion.DisjunctionTerms,mosek.fusion.Term)\n\tmosek.fusion.DisjunctionTerms.ctor(mosek.fusion.DisjunctionTerms,mosek.fusion.ExprRangeDomain)\n\tmosek.fusion.DisjunctionTerms.ctor(mosek.fusion.DisjunctionTerms,mosek.fusion.ExprLinearDomain)\n\tmosek.fusion.DisjunctionTerms.ctor(mosek.fusion.DisjunctionTerms,mosek.fusion.DisjunctionTerms)')
  def __repr__(self): return 'mosek.fusion.DisjunctionTerms'
  @staticmethod
  def _ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprRangeDomain_2(terms1,term):
    o = DisjunctionTerms.__new__(DisjunctionTerms)
    o._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprRangeDomain_2(terms1,term)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprRangeDomain_2(*args):
    if len(args) != 2: return False
    terms1,term, = args
    return (__arg_match_Lmosek_4fusion_4DisjunctionTerms_2__(terms1) and __arg_match_Lmosek_4fusion_4ExprRangeDomain_2__(term))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprRangeDomain_2(*args):
    if len(args) != 2: return False
    terms1,term, = args
    return (__arg_alt_match_Lmosek_4fusion_4DisjunctionTerms_2__(terms1) and __arg_alt_match_Lmosek_4fusion_4ExprRangeDomain_2__(term))
  def _ctor_alt_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprRangeDomain_2(self,terms1,term):
    self._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprRangeDomain_2(terms1,term)
  def _ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprRangeDomain_2(self,terms1,term):
   mosek_fusion_DisjunctionTerms._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4Term_2(self,terms1,mosek.fusion.DJC._term_Lmosek_4fusion_4ExprRangeDomain_2(term))
  @staticmethod
  def _ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprLinearDomain_2(terms1,term):
    o = DisjunctionTerms.__new__(DisjunctionTerms)
    o._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprLinearDomain_2(terms1,term)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprLinearDomain_2(*args):
    if len(args) != 2: return False
    terms1,term, = args
    return (__arg_match_Lmosek_4fusion_4DisjunctionTerms_2__(terms1) and __arg_match_Lmosek_4fusion_4ExprLinearDomain_2__(term))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprLinearDomain_2(*args):
    if len(args) != 2: return False
    terms1,term, = args
    return (__arg_alt_match_Lmosek_4fusion_4DisjunctionTerms_2__(terms1) and __arg_alt_match_Lmosek_4fusion_4ExprLinearDomain_2__(term))
  def _ctor_alt_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprLinearDomain_2(self,terms1,term):
    self._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprLinearDomain_2(terms1,term)
  def _ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4ExprLinearDomain_2(self,terms1,term):
   mosek_fusion_DisjunctionTerms._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4Term_2(self,terms1,mosek.fusion.DJC._term_Lmosek_4fusion_4ExprLinearDomain_2(term))
  @staticmethod
  def _ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4DisjunctionTerms_2(terms1,term2):
    o = DisjunctionTerms.__new__(DisjunctionTerms)
    o._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4DisjunctionTerms_2(terms1,term2)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4DisjunctionTerms_2(*args):
    if len(args) != 2: return False
    terms1,term2, = args
    return (__arg_match_Lmosek_4fusion_4DisjunctionTerms_2__(terms1) and __arg_match_Lmosek_4fusion_4DisjunctionTerms_2__(term2))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4DisjunctionTerms_2(*args):
    if len(args) != 2: return False
    terms1,term2, = args
    return (__arg_alt_match_Lmosek_4fusion_4DisjunctionTerms_2__(terms1) and __arg_alt_match_Lmosek_4fusion_4DisjunctionTerms_2__(term2))
  def _ctor_alt_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4DisjunctionTerms_2(self,terms1,term2):
    self._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4DisjunctionTerms_2(terms1,term2)
  def _ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4DisjunctionTerms_2(self,terms1,term2):
   mosek_fusion_DisjunctionTerms._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2_3Lmosek_4fusion_4Term_2(self,terms1,(term2._terms))
  @staticmethod
  def _ctor_Lmosek_4fusion_4DisjunctionTerms_2_3Lmosek_4fusion_4Term_2(term1,term2):
    o = DisjunctionTerms.__new__(DisjunctionTerms)
    o._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2_3Lmosek_4fusion_4Term_2(term1,term2)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4DisjunctionTerms_2_3Lmosek_4fusion_4Term_2(*args):
    if len(args) != 2: return False
    term1,term2, = args
    return (__arg_match_Lmosek_4fusion_4DisjunctionTerms_2__(term1) and __arg_match__3Lmosek_4fusion_4Term_2__(term2))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4DisjunctionTerms_2_3Lmosek_4fusion_4Term_2(*args):
    if len(args) != 2: return False
    term1,term2, = args
    return (__arg_alt_match_Lmosek_4fusion_4DisjunctionTerms_2__(term1) and __arg_alt_match__3Lmosek_4fusion_4Term_2__(term2))
  def _ctor_alt_init_Lmosek_4fusion_4DisjunctionTerms_2_3Lmosek_4fusion_4Term_2(self,term1,term2):
    self._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2_3Lmosek_4fusion_4Term_2(term1,numpy.array(term2,dtype=numpy.dtype(object)))
  def _ctor_init_Lmosek_4fusion_4DisjunctionTerms_2_3Lmosek_4fusion_4Term_2(self,term1,term2):
   _0=int(((term1._terms)).shape[0])
   self._terms = numpy.zeros(((int(((term1._terms)).shape[0]) + int((term2).shape[0])),), dtype=numpy.dtype(object))
   _1=0
   while (_1 < int(((term1._terms)).shape[0])):
    self._terms[_1] = (term1._terms)[_1]
    _1 += 1
   _2=0
   while (_2 < int((term2).shape[0])):
    self._terms[(_2 + _0)] = term2[_2]
    _2 += 1
  @staticmethod
  def _ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4Term_2(term1,term2):
    o = DisjunctionTerms.__new__(DisjunctionTerms)
    o._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4Term_2(term1,term2)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4Term_2(*args):
    if len(args) != 2: return False
    term1,term2, = args
    return (__arg_match_Lmosek_4fusion_4DisjunctionTerms_2__(term1) and __arg_match_Lmosek_4fusion_4Term_2__(term2))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4Term_2(*args):
    if len(args) != 2: return False
    term1,term2, = args
    return (__arg_alt_match_Lmosek_4fusion_4DisjunctionTerms_2__(term1) and __arg_alt_match_Lmosek_4fusion_4Term_2__(term2))
  def _ctor_alt_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4Term_2(self,term1,term2):
    self._ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4Term_2(term1,term2)
  def _ctor_init_Lmosek_4fusion_4DisjunctionTerms_2Lmosek_4fusion_4Term_2(self,term1,term2):
   self._terms = numpy.zeros(((int(((term1._terms)).shape[0]) + 1),), dtype=numpy.dtype(object))
   _0=0
   while (_0 < int(((term1._terms)).shape[0])):
    self._terms[_0] = (term1._terms)[_0]
    _0 += 1
   self._terms[int(((term1._terms)).shape[0])] = term2
  @staticmethod
  def _ctor__3Lmosek_4fusion_4Term_2(terms):
    o = DisjunctionTerms.__new__(DisjunctionTerms)
    o._ctor_init__3Lmosek_4fusion_4Term_2(terms)
    return o
  @staticmethod
  def __match_ctor__3Lmosek_4fusion_4Term_2(*args):
    if len(args) != 1: return False
    terms, = args
    return (__arg_match__3Lmosek_4fusion_4Term_2__(terms))
  @staticmethod
  def __match_alt_ctor__3Lmosek_4fusion_4Term_2(*args):
    if len(args) != 1: return False
    terms, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Term_2__(terms))
  def _ctor_alt_init__3Lmosek_4fusion_4Term_2(self,terms):
    self._ctor_init__3Lmosek_4fusion_4Term_2(numpy.array(terms,dtype=numpy.dtype(object)))
  def _ctor_init__3Lmosek_4fusion_4Term_2(self,terms):
   (self._terms) = numpy.array([terms[_0] for _0 in range(0,int((terms).shape[0]))], dtype=numpy.dtype(object))
  @staticmethod
  def _ctor_Lmosek_4fusion_4ExprRangeDomain_2(term):
    o = DisjunctionTerms.__new__(DisjunctionTerms)
    o._ctor_init_Lmosek_4fusion_4ExprRangeDomain_2(term)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4ExprRangeDomain_2(*args):
    if len(args) != 1: return False
    term, = args
    return (__arg_match_Lmosek_4fusion_4ExprRangeDomain_2__(term))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4ExprRangeDomain_2(*args):
    if len(args) != 1: return False
    term, = args
    return (__arg_alt_match_Lmosek_4fusion_4ExprRangeDomain_2__(term))
  def _ctor_alt_init_Lmosek_4fusion_4ExprRangeDomain_2(self,term):
    self._ctor_init_Lmosek_4fusion_4ExprRangeDomain_2(term)
  def _ctor_init_Lmosek_4fusion_4ExprRangeDomain_2(self,term):
   self._terms = numpy.array([mosek.fusion.DJC._term_Lmosek_4fusion_4ExprRangeDomain_2(term)], dtype=numpy.dtype(object))
  @staticmethod
  def _ctor_Lmosek_4fusion_4ExprLinearDomain_2(term):
    o = DisjunctionTerms.__new__(DisjunctionTerms)
    o._ctor_init_Lmosek_4fusion_4ExprLinearDomain_2(term)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4ExprLinearDomain_2(*args):
    if len(args) != 1: return False
    term, = args
    return (__arg_match_Lmosek_4fusion_4ExprLinearDomain_2__(term))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4ExprLinearDomain_2(*args):
    if len(args) != 1: return False
    term, = args
    return (__arg_alt_match_Lmosek_4fusion_4ExprLinearDomain_2__(term))
  def _ctor_alt_init_Lmosek_4fusion_4ExprLinearDomain_2(self,term):
    self._ctor_init_Lmosek_4fusion_4ExprLinearDomain_2(term)
  def _ctor_init_Lmosek_4fusion_4ExprLinearDomain_2(self,term):
   self._terms = numpy.array([mosek.fusion.DJC._term_Lmosek_4fusion_4ExprLinearDomain_2(term)], dtype=numpy.dtype(object))
 return DisjunctionTerms
mosek_fusion_DisjunctionTerms=__mk_mosek_fusion_DisjunctionTerms()
del __mk_mosek_fusion_DisjunctionTerms
def __mk_mosek_fusion_Term():
 class Term(mosek_fusion_ExprDomain,object):
  __slots__ = ['_domains','_exprs']
  def size(self,*args):
    if False: pass
    elif mosek_fusion_Term._match_size_(*args): 
      return self._size_(*args)
    elif mosek_fusion_Term._match_alt_size_(*args): 
      return self._size_alt_(*args)
    else:
      raise ValueError('Invalid argument list size('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Term.size()')
  def toDJCTerm(self,*args):
    if False: pass
    elif mosek_fusion_Term._match_toDJCTerm_(*args): 
      return self._toDJCTerm_(*args)
    elif mosek_fusion_Term._match_alt_toDJCTerm_(*args): 
      return self._toDJCTerm_alt_(*args)
    else:
      raise ValueError('Invalid argument list toDJCTerm('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Term.toDJCTerm()')
  def __repr__(self): return 'mosek.fusion.Term'
  @staticmethod
  def _ctor__3Lmosek_4fusion_4Expression_2_3Lmosek_4fusion_4DJCDomain_2(elist,dlist):
    o = Term.__new__(Term)
    o._ctor_init__3Lmosek_4fusion_4Expression_2_3Lmosek_4fusion_4DJCDomain_2(elist,dlist)
    return o
  @staticmethod
  def __match_ctor__3Lmosek_4fusion_4Expression_2_3Lmosek_4fusion_4DJCDomain_2(*args):
    if len(args) != 2: return False
    elist,dlist, = args
    return (__arg_match__3Lmosek_4fusion_4Expression_2__(elist) and __arg_match__3Lmosek_4fusion_4DJCDomain_2__(dlist))
  @staticmethod
  def __match_alt_ctor__3Lmosek_4fusion_4Expression_2_3Lmosek_4fusion_4DJCDomain_2(*args):
    if len(args) != 2: return False
    elist,dlist, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Expression_2__(elist) and __arg_alt_match__3Lmosek_4fusion_4DJCDomain_2__(dlist))
  def _ctor_alt_init__3Lmosek_4fusion_4Expression_2_3Lmosek_4fusion_4DJCDomain_2(self,elist,dlist):
    self._ctor_init__3Lmosek_4fusion_4Expression_2_3Lmosek_4fusion_4DJCDomain_2(numpy.array(elist,dtype=numpy.dtype(object)),numpy.array(dlist,dtype=numpy.dtype(object)))
  def _ctor_init__3Lmosek_4fusion_4Expression_2_3Lmosek_4fusion_4DJCDomain_2(self,elist,dlist):
   _0=int((elist).shape[0])
   self._exprs = numpy.ndarray((_0,), dtype=numpy.dtype(object))
   self._domains = numpy.ndarray((_0,), dtype=numpy.dtype(object))
   for _1 in range(0,_0):
    self._exprs[_1] = elist[_1]
    self._domains[_1] = dlist[_1]
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(e,d):
    o = Term.__new__(Term)
    o._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(e,d)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(*args):
    if len(args) != 2: return False
    e,d, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(e) and __arg_match_Lmosek_4fusion_4DJCDomain_2__(d))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(*args):
    if len(args) != 2: return False
    e,d, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(e) and __arg_alt_match_Lmosek_4fusion_4DJCDomain_2__(d))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(self,e,d):
    self._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(e,d)
  def _ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(self,e,d):
   self._exprs = numpy.array([e], dtype=numpy.dtype(object))
   self._domains = numpy.array([d], dtype=numpy.dtype(object))
  @staticmethod
  def _ctor__3Lmosek_4fusion_4SimpleTerm_2(t):
    o = Term.__new__(Term)
    o._ctor_init__3Lmosek_4fusion_4SimpleTerm_2(t)
    return o
  @staticmethod
  def __match_ctor__3Lmosek_4fusion_4SimpleTerm_2(*args):
    if len(args) != 1: return False
    t, = args
    return (__arg_match__3Lmosek_4fusion_4SimpleTerm_2__(t))
  @staticmethod
  def __match_alt_ctor__3Lmosek_4fusion_4SimpleTerm_2(*args):
    if len(args) != 1: return False
    t, = args
    return (__arg_alt_match__3Lmosek_4fusion_4SimpleTerm_2__(t))
  def _ctor_alt_init__3Lmosek_4fusion_4SimpleTerm_2(self,t):
    self._ctor_init__3Lmosek_4fusion_4SimpleTerm_2(numpy.array(t,dtype=numpy.dtype(object)))
  def _ctor_init__3Lmosek_4fusion_4SimpleTerm_2(self,t):
   _0=int((t).shape[0])
   self._exprs = numpy.ndarray((_0,), dtype=numpy.dtype(object))
   self._domains = numpy.ndarray((_0,), dtype=numpy.dtype(object))
   for _1 in range(0,_0):
    self._exprs[_1] = (t[_1]._exprs)[0]
    self._domains[_1] = (t[_1]._domains)[0]
  def _numaccterms_alt_(self,):
    return self._numaccterms_()
  def _numaccterms_(self,):
   _0=0
   for _1 in range(0,int((self._domains).shape[0])):
    _0 += self._domains[_1]._numaccterms_()
   return numpy.int32(_0)
  def _numaccrows_alt_(self,):
    return self._numaccrows_()
  def _numaccrows_(self,):
   _0=0
   for _1 in range(0,int((self._domains).shape[0])):
    _0 += self._domains[_1]._numaccrows_()
   return numpy.int32(_0)
  def _num_alt_(self,):
    return self._num_()
  def _num_(self,):
   return numpy.int32(int((self._domains).shape[0]))
  @staticmethod
  def _match_size_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_size_(*args):
    if len(args) != 0: return False
    return True
  def _size_alt_(self,):
    return self._size_()
  def _size_(self,):
   _0=0
   for _1 in range(0,int((self._domains).shape[0])):
    _0 += self._domains[_1].size()
   return numpy.int32(_0)
  @staticmethod
  def _match_toDJCTerm_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toDJCTerm_(*args):
    if len(args) != 0: return False
    return True
  def _toDJCTerm_alt_(self,):
    return self._toDJCTerm_()
  def _toDJCTerm_(self,):
   return (self)
 return Term
mosek_fusion_Term=__mk_mosek_fusion_Term()
del __mk_mosek_fusion_Term
def __mk_mosek_fusion_SimpleTerm():
 class SimpleTerm(mosek_fusion_Term):
  def __repr__(self): return 'mosek.fusion.SimpleTerm'
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(e,d):
    o = SimpleTerm.__new__(SimpleTerm)
    o._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(e,d)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(*args):
    if len(args) != 2: return False
    e,d, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(e) and __arg_match_Lmosek_4fusion_4DJCDomain_2__(d))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(*args):
    if len(args) != 2: return False
    e,d, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(e) and __arg_alt_match_Lmosek_4fusion_4DJCDomain_2__(d))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(self,e,d):
    self._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(e,d)
  def _ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(self,e,d):
   mosek_fusion_Term._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(self,e,d)
 return SimpleTerm
mosek_fusion_SimpleTerm=__mk_mosek_fusion_SimpleTerm()
del __mk_mosek_fusion_SimpleTerm
def __mk_mosek_fusion_DJCDomain():
 class DJCDomain(object):
  __slots__ = ['dom','conedim','shape','par','b']
  def size(self,*args):
    if False: pass
    elif mosek_fusion_DJCDomain._match_size_(*args): 
      return self._size_(*args)
    elif mosek_fusion_DJCDomain._match_alt_size_(*args): 
      return self._size_alt_(*args)
    else:
      raise ValueError('Invalid argument list size('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.DJCDomain.size()')
  def __repr__(self): return 'mosek.fusion.DJCDomain'
  @staticmethod
  def _ctor__3D_3D_3IEmosek_4fusion_4DJCDomainType_2(b_,par_,shape_,dom_):
    o = DJCDomain.__new__(DJCDomain)
    o._ctor_init__3D_3D_3IEmosek_4fusion_4DJCDomainType_2(b_,par_,shape_,dom_)
    return o
  @staticmethod
  def __match_ctor__3D_3D_3IEmosek_4fusion_4DJCDomainType_2(*args):
    if len(args) != 4: return False
    b_,par_,shape_,dom_, = args
    return (__arg_match__3D__(b_) and __arg_match__3D__(par_) and __arg_match__3I__(shape_) and __arg_match_Emosek_4fusion_4DJCDomainType_2__(dom_))
  @staticmethod
  def __match_alt_ctor__3D_3D_3IEmosek_4fusion_4DJCDomainType_2(*args):
    if len(args) != 4: return False
    b_,par_,shape_,dom_, = args
    return (__arg_alt_match__3D__(b_) and __arg_alt_match__3D__(par_) and __arg_alt_match__3I__(shape_) and __arg_alt_match_Emosek_4fusion_4DJCDomainType_2__(dom_))
  def _ctor_alt_init__3D_3D_3IEmosek_4fusion_4DJCDomainType_2(self,b_,par_,shape_,dom_):
    self._ctor_init__3D_3D_3IEmosek_4fusion_4DJCDomainType_2(numpy.array(b_,dtype=numpy.dtype(numpy.float64)),numpy.array(par_,dtype=numpy.dtype(numpy.float64)),numpy.array(shape_,dtype=numpy.dtype(numpy.int32)),dom_)
  def _ctor_init__3D_3D_3IEmosek_4fusion_4DJCDomainType_2(self,b_,par_,shape_,dom_):
   self.b = b_
   self.par = par_
   self.shape = shape_
   self.dom = dom_
   self.conedim = (int((shape_).shape[0]) - 1)
  @staticmethod
  def _ctor__3D_3D_3IIEmosek_4fusion_4DJCDomainType_2(b_,par_,shape_,conedim_,dom_):
    o = DJCDomain.__new__(DJCDomain)
    o._ctor_init__3D_3D_3IIEmosek_4fusion_4DJCDomainType_2(b_,par_,shape_,conedim_,dom_)
    return o
  @staticmethod
  def __match_ctor__3D_3D_3IIEmosek_4fusion_4DJCDomainType_2(*args):
    if len(args) != 5: return False
    b_,par_,shape_,conedim_,dom_, = args
    return (__arg_match__3D__(b_) and __arg_match__3D__(par_) and __arg_match__3I__(shape_) and __arg_match_I__(conedim_) and __arg_match_Emosek_4fusion_4DJCDomainType_2__(dom_))
  @staticmethod
  def __match_alt_ctor__3D_3D_3IIEmosek_4fusion_4DJCDomainType_2(*args):
    if len(args) != 5: return False
    b_,par_,shape_,conedim_,dom_, = args
    return (__arg_alt_match__3D__(b_) and __arg_alt_match__3D__(par_) and __arg_alt_match__3I__(shape_) and __arg_alt_match_I__(conedim_) and __arg_alt_match_Emosek_4fusion_4DJCDomainType_2__(dom_))
  def _ctor_alt_init__3D_3D_3IIEmosek_4fusion_4DJCDomainType_2(self,b_,par_,shape_,conedim_,dom_):
    self._ctor_init__3D_3D_3IIEmosek_4fusion_4DJCDomainType_2(numpy.array(b_,dtype=numpy.dtype(numpy.float64)),numpy.array(par_,dtype=numpy.dtype(numpy.float64)),numpy.array(shape_,dtype=numpy.dtype(numpy.int32)),numpy.int32(conedim_),dom_)
  def _ctor_init__3D_3D_3IIEmosek_4fusion_4DJCDomainType_2(self,b_,par_,shape_,conedim_,dom_):
   self.b = b_
   self.par = par_
   self.shape = shape_
   self.dom = dom_
   self.conedim = conedim_
  def _numaccterms_alt_(self,):
    return self._numaccterms_()
  def _numaccterms_(self,):
   if (self.dom==mosek.fusion.DJCDomainType.InRange):
    return numpy.int32(2)
   else:
    return numpy.int32(1)
  def _numaccrows_alt_(self,):
    return self._numaccrows_()
  def _numaccrows_(self,):
   if (self.dom==mosek.fusion.DJCDomainType.InRange):
    return numpy.int32((self.size() * 2))
   else:
    return numpy.int32(self.size())
  @staticmethod
  def _match_size_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_size_(*args):
    if len(args) != 0: return False
    return True
  def _size_alt_(self,):
    return self._size_()
  def _size_(self,):
   _0=1
   for _1 in range(0,int((self.shape).shape[0])):
    _0 *= self.shape[_1]
   return numpy.int32(_0)
 return DJCDomain
mosek_fusion_DJCDomain=__mk_mosek_fusion_DJCDomain()
del __mk_mosek_fusion_DJCDomain
def __mk_mosek_fusion_DJC():
 class DJC(object):
  @staticmethod
  def ANDFromTerms(*args):
    if False: pass
    elif mosek_fusion_DJC._match_ANDFromTerms__3Lmosek_4fusion_4Term_2(*args): 
      return mosek_fusion_DJC._ANDFromTerms__3Lmosek_4fusion_4Term_2(*args)
    elif mosek_fusion_DJC._match_alt_ANDFromTerms__3Lmosek_4fusion_4Term_2(*args): 
      return mosek_fusion_DJC._ANDFromTerms_alt__3Lmosek_4fusion_4Term_2(*args)
    else:
      raise ValueError('Invalid argument list ANDFromTerms('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.DJC.ANDFromTerms(array(mosek.fusion.Term,ndim=1))')
  @staticmethod
  def AND(*args):
    if False: pass
    elif mosek_fusion_DJC._match_AND__3Lmosek_4fusion_4SimpleTerm_2(*args): 
      return mosek_fusion_DJC._AND__3Lmosek_4fusion_4SimpleTerm_2(*args)
    elif mosek_fusion_DJC._match_alt_AND__3Lmosek_4fusion_4SimpleTerm_2(*args): 
      return mosek_fusion_DJC._AND_alt__3Lmosek_4fusion_4SimpleTerm_2(*args)
    elif mosek_fusion_DJC._match_AND__3Lmosek_4fusion_4ExprDomain_2(*args): 
      return mosek_fusion_DJC._AND__3Lmosek_4fusion_4ExprDomain_2(*args)
    elif mosek_fusion_DJC._match_alt_AND__3Lmosek_4fusion_4ExprDomain_2(*args): 
      return mosek_fusion_DJC._AND_alt__3Lmosek_4fusion_4ExprDomain_2(*args)
    elif mosek_fusion_DJC._match_AND_Lmosek_4fusion_4SimpleTerm_2(*args): 
      return mosek_fusion_DJC._AND_Lmosek_4fusion_4SimpleTerm_2(*args)
    elif mosek_fusion_DJC._match_alt_AND_Lmosek_4fusion_4SimpleTerm_2(*args): 
      return mosek_fusion_DJC._AND_alt_Lmosek_4fusion_4SimpleTerm_2(*args)
    elif mosek_fusion_DJC._match_AND_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(*args): 
      return mosek_fusion_DJC._AND_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(*args)
    elif mosek_fusion_DJC._match_alt_AND_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(*args): 
      return mosek_fusion_DJC._AND_alt_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(*args)
    elif mosek_fusion_DJC._match_AND_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(*args): 
      return mosek_fusion_DJC._AND_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(*args)
    elif mosek_fusion_DJC._match_alt_AND_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(*args): 
      return mosek_fusion_DJC._AND_alt_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(*args)
    else:
      raise ValueError('Invalid argument list AND('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.DJC.AND(array(mosek.fusion.SimpleTerm,ndim=1))\n\tmosek.fusion.DJC.AND(array(mosek.fusion.ExprDomain,ndim=1))\n\tmosek.fusion.DJC.AND(mosek.fusion.SimpleTerm)\n\tmosek.fusion.DJC.AND(mosek.fusion.SimpleTerm,mosek.fusion.SimpleTerm)\n\tmosek.fusion.DJC.AND(mosek.fusion.SimpleTerm,mosek.fusion.SimpleTerm,mosek.fusion.SimpleTerm)')
  @staticmethod
  def term(*args):
    if False: pass
    elif mosek_fusion_DJC._match_term_Lmosek_4fusion_4ExprRangeDomain_2(*args): 
      return mosek_fusion_DJC._term_Lmosek_4fusion_4ExprRangeDomain_2(*args)
    elif mosek_fusion_DJC._match_alt_term_Lmosek_4fusion_4ExprRangeDomain_2(*args): 
      return mosek_fusion_DJC._term_alt_Lmosek_4fusion_4ExprRangeDomain_2(*args)
    elif mosek_fusion_DJC._match_term_Lmosek_4fusion_4ExprLinearDomain_2(*args): 
      return mosek_fusion_DJC._term_Lmosek_4fusion_4ExprLinearDomain_2(*args)
    elif mosek_fusion_DJC._match_alt_term_Lmosek_4fusion_4ExprLinearDomain_2(*args): 
      return mosek_fusion_DJC._term_alt_Lmosek_4fusion_4ExprLinearDomain_2(*args)
    elif mosek_fusion_DJC._match_term_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4RangeDomain_2(*args): 
      return mosek_fusion_DJC._term_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_DJC._match_alt_term_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4RangeDomain_2(*args): 
      return mosek_fusion_DJC._term_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_DJC._match_term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args): 
      return mosek_fusion_DJC._term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_DJC._match_alt_term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args): 
      return mosek_fusion_DJC._term_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_DJC._match_term_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4LinearDomain_2(*args): 
      return mosek_fusion_DJC._term_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_DJC._match_alt_term_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4LinearDomain_2(*args): 
      return mosek_fusion_DJC._term_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_DJC._match_term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args): 
      return mosek_fusion_DJC._term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_DJC._match_alt_term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args): 
      return mosek_fusion_DJC._term_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args)
    else:
      raise ValueError('Invalid argument list term('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.DJC.term(mosek.fusion.ExprRangeDomain)\n\tmosek.fusion.DJC.term(mosek.fusion.ExprLinearDomain)\n\tmosek.fusion.DJC.term(mosek.fusion.Variable,mosek.fusion.RangeDomain)\n\tmosek.fusion.DJC.term(mosek.fusion.Expression,mosek.fusion.RangeDomain)\n\tmosek.fusion.DJC.term(mosek.fusion.Variable,mosek.fusion.LinearDomain)\n\tmosek.fusion.DJC.term(mosek.fusion.Expression,mosek.fusion.LinearDomain)')
  def __repr__(self): return 'mosek.fusion.DJC'
  @staticmethod
  def _match_ANDFromTerms__3Lmosek_4fusion_4Term_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3Lmosek_4fusion_4Term_2__(_0))
  @staticmethod
  def _match_alt_ANDFromTerms__3Lmosek_4fusion_4Term_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Term_2__(_0))
  @staticmethod
  def _ANDFromTerms_alt__3Lmosek_4fusion_4Term_2(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_DJC._ANDFromTerms__3Lmosek_4fusion_4Term_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _ANDFromTerms__3Lmosek_4fusion_4Term_2(_0):
   _1=0
   for _2 in range(0,int((_0).shape[0])):
    _1 += _0[_2]._num_()
   _3=numpy.ndarray((_1,), dtype=numpy.dtype(object))
   _4=numpy.ndarray((_1,), dtype=numpy.dtype(object))
   _1 = 0
   for _5 in range(0,int((_0).shape[0])):
    for _6 in range(0,_0[_5]._num_()):
     _3[_1] = (_0[_5]._exprs)[_6]
     _4[_1] = (_0[_5]._domains)[_6]
     _1 += 1
   return (mosek_fusion_Term._ctor__3Lmosek_4fusion_4Expression_2_3Lmosek_4fusion_4DJCDomain_2(_3,_4))
  @staticmethod
  def _match_AND__3Lmosek_4fusion_4ExprDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3Lmosek_4fusion_4ExprDomain_2__(_0))
  @staticmethod
  def _match_alt_AND__3Lmosek_4fusion_4ExprDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3Lmosek_4fusion_4ExprDomain_2__(_0))
  @staticmethod
  def _AND_alt__3Lmosek_4fusion_4ExprDomain_2(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_DJC._AND__3Lmosek_4fusion_4ExprDomain_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _AND__3Lmosek_4fusion_4ExprDomain_2(_0):
   return (mosek.fusion.DJC._ANDFromTerms__3Lmosek_4fusion_4Term_2(numpy.array([_0[_1].toDJCTerm() for _1 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_AND_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4SimpleTerm_2__(_0) and __arg_match_Lmosek_4fusion_4SimpleTerm_2__(_1) and __arg_match_Lmosek_4fusion_4SimpleTerm_2__(_2))
  @staticmethod
  def _match_alt_AND_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4SimpleTerm_2__(_0) and __arg_alt_match_Lmosek_4fusion_4SimpleTerm_2__(_1) and __arg_alt_match_Lmosek_4fusion_4SimpleTerm_2__(_2))
  @staticmethod
  def _AND_alt_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(_t__0,_t__1,_t__2):
    return mosek_fusion_DJC._AND_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(_0,_1,_2)
  @staticmethod
  def _AND_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(_0,_1,_2):
   return (mosek.fusion.DJC._AND__3Lmosek_4fusion_4SimpleTerm_2(numpy.array([_0,_1,_2], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_AND_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4SimpleTerm_2__(_0) and __arg_match_Lmosek_4fusion_4SimpleTerm_2__(_1))
  @staticmethod
  def _match_alt_AND_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4SimpleTerm_2__(_0) and __arg_alt_match_Lmosek_4fusion_4SimpleTerm_2__(_1))
  @staticmethod
  def _AND_alt_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(_t__0,_t__1):
    return mosek_fusion_DJC._AND_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(_0,_1)
  @staticmethod
  def _AND_Lmosek_4fusion_4SimpleTerm_2Lmosek_4fusion_4SimpleTerm_2(_0,_1):
   return (mosek.fusion.DJC._AND__3Lmosek_4fusion_4SimpleTerm_2(numpy.array([_0,_1], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_AND_Lmosek_4fusion_4SimpleTerm_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4SimpleTerm_2__(_0))
  @staticmethod
  def _match_alt_AND_Lmosek_4fusion_4SimpleTerm_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4SimpleTerm_2__(_0))
  @staticmethod
  def _AND_alt_Lmosek_4fusion_4SimpleTerm_2(_t__0):
    return mosek_fusion_DJC._AND_Lmosek_4fusion_4SimpleTerm_2(_0)
  @staticmethod
  def _AND_Lmosek_4fusion_4SimpleTerm_2(_0):
   return (mosek.fusion.DJC._AND__3Lmosek_4fusion_4SimpleTerm_2(numpy.array([_0], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_AND__3Lmosek_4fusion_4SimpleTerm_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3Lmosek_4fusion_4SimpleTerm_2__(_0))
  @staticmethod
  def _match_alt_AND__3Lmosek_4fusion_4SimpleTerm_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3Lmosek_4fusion_4SimpleTerm_2__(_0))
  @staticmethod
  def _AND_alt__3Lmosek_4fusion_4SimpleTerm_2(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_DJC._AND__3Lmosek_4fusion_4SimpleTerm_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _AND__3Lmosek_4fusion_4SimpleTerm_2(_0):
   return (mosek_fusion_Term._ctor__3Lmosek_4fusion_4SimpleTerm_2(_0))
  @staticmethod
  def _match_term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4RangeDomain_2__(_1))
  @staticmethod
  def _match_alt_term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4RangeDomain_2__(_1))
  @staticmethod
  def _term_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(_t__0,_t__1):
    return mosek_fusion_DJC._term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(_0,_1)
  @staticmethod
  def _term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(_0,_1):
   if ((_1._sparsity) is not None):
    raise mosek_fusion_DomainError._ctor_S("Sparse domain is not acceptable in disjunctive constraints")
   if (_1._cardinal_flag):
    raise mosek_fusion_DomainError._ctor_S("Integer domain is not acceptable in disjunctive constraints")
   _2=(_1._lb)
   _3=(_1._ub)
   _4=_0.getShape()
   _5=_0.getSize()
   _6=(_1._shape)
   if (_6 is None):
    _6 = _4
   else:
    if (int((_6).shape[0])!=int((_4).shape[0])):
     raise mosek_fusion_DomainError._ctor_S("Mismatching shapes")
    else:
     for _9 in range(0,int((_6).shape[0])):
      if (_6[_9]!=_4[_9]):
       raise mosek_fusion_DomainError._ctor_S("Mismatching shapes")
   if (_1._scalable):
    _7 = numpy.array([_2[0] for _10 in range(0,_5)], dtype=numpy.dtype(numpy.float64))
    _8 = numpy.array([_3[0] for _11 in range(0,_5)], dtype=numpy.dtype(numpy.float64))
   else:
    _7 = _2
    _8 = _3
   return (mosek_fusion_SimpleTerm._ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(_0,mosek_fusion_DJCDomain._ctor__3D_3D_3IEmosek_4fusion_4DJCDomainType_2(_7,_8,_6,mosek.fusion.DJCDomainType.InRange)))
  @staticmethod
  def _match_term_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_Lmosek_4fusion_4RangeDomain_2__(_1))
  @staticmethod
  def _match_alt_term_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_Lmosek_4fusion_4RangeDomain_2__(_1))
  @staticmethod
  def _term_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4RangeDomain_2(_t__0,_t__1):
    return mosek_fusion_DJC._term_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4RangeDomain_2(_0,_1)
  @staticmethod
  def _term_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4RangeDomain_2(_0,_1):
   return (mosek.fusion.DJC._term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(_0.asExpr(),_1))
  @staticmethod
  def _match_term_Lmosek_4fusion_4ExprRangeDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4ExprRangeDomain_2__(_0))
  @staticmethod
  def _match_alt_term_Lmosek_4fusion_4ExprRangeDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4ExprRangeDomain_2__(_0))
  @staticmethod
  def _term_alt_Lmosek_4fusion_4ExprRangeDomain_2(_t__0):
    return mosek_fusion_DJC._term_Lmosek_4fusion_4ExprRangeDomain_2(_0)
  @staticmethod
  def _term_Lmosek_4fusion_4ExprRangeDomain_2(_0):
   return (mosek.fusion.DJC._term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2((_0.expr),(_0.dom)))
  @staticmethod
  def _match_term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4LinearDomain_2__(_1))
  @staticmethod
  def _match_alt_term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4LinearDomain_2__(_1))
  @staticmethod
  def _term_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(_t__0,_t__1):
    return mosek_fusion_DJC._term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(_0,_1)
  @staticmethod
  def _term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(_0,_1):
   if ((_1._sparsity) is not None):
    raise mosek_fusion_DomainError._ctor_S("Sparse domain is not acceptable in disjunctive constraints")
   if (_1._cardinal_flag):
    raise mosek_fusion_DomainError._ctor_S("Integer domain is not acceptable in disjunctive constraints")
   _2=(_1._bnd)
   _3=_0.getShape()
   _4=_0.getSize()
   _5=(_1._shape)
   if (_5 is None):
    _5 = _3
   else:
    if (int((_5).shape[0])!=int((_3).shape[0])):
     raise mosek_fusion_DomainError._ctor_S("Mismatching shapes")
    else:
     for _7 in range(0,int((_5).shape[0])):
      if (_5[_7]!=_3[_7]):
       raise mosek_fusion_DomainError._ctor_S("Mismatching shapes")
   if ((_1._bnd) is None):
    _6 = numpy.zeros((_4,), dtype=numpy.dtype(numpy.float64))
   elif (_1._scalable): # bld/grindsted/final/default/src/fusion/Disjunction.mbi:64:16-28
    _6 = numpy.array([_2[0] for _8 in range(0,_4)], dtype=numpy.dtype(numpy.float64))
   elif (_1._empty): # bld/grindsted/final/default/src/fusion/Disjunction.mbi:65:16-25
    _6 = numpy.zeros((_4,), dtype=numpy.dtype(numpy.float64))
   else:
    _6 = _2
   if ((_1._key)==mosek.fusion.RelationKey.EqualsTo):
    return (mosek_fusion_SimpleTerm._ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(_0,mosek_fusion_DJCDomain._ctor__3D_3D_3IEmosek_4fusion_4DJCDomainType_2(_6,None,_5,mosek.fusion.DJCDomainType.EqualTo)))
   elif ((_1._key)==mosek.fusion.RelationKey.LessThan): # bld/grindsted/final/default/src/fusion/Disjunction.mbi:69:16-47
    return (mosek_fusion_SimpleTerm._ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(_0,mosek_fusion_DJCDomain._ctor__3D_3D_3IEmosek_4fusion_4DJCDomainType_2(_6,None,_5,mosek.fusion.DJCDomainType.LessThan)))
   elif ((_1._key)==mosek.fusion.RelationKey.GreaterThan): # bld/grindsted/final/default/src/fusion/Disjunction.mbi:70:16-50
    return (mosek_fusion_SimpleTerm._ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(_0,mosek_fusion_DJCDomain._ctor__3D_3D_3IEmosek_4fusion_4DJCDomainType_2(_6,None,_5,mosek.fusion.DJCDomainType.GreaterThan)))
   elif ((_1._key)==mosek.fusion.RelationKey.IsFree): # bld/grindsted/final/default/src/fusion/Disjunction.mbi:71:16-45
    return (mosek_fusion_SimpleTerm._ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4DJCDomain_2(_0,mosek_fusion_DJCDomain._ctor__3D_3D_3IEmosek_4fusion_4DJCDomainType_2(_6,None,_5,mosek.fusion.DJCDomainType.IsFree)))
   else:
    raise mosek_fusion_UnexpectedError._ctor_S("Invalid linear domain")
  @staticmethod
  def _match_term_Lmosek_4fusion_4ExprLinearDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4ExprLinearDomain_2__(_0))
  @staticmethod
  def _match_alt_term_Lmosek_4fusion_4ExprLinearDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4ExprLinearDomain_2__(_0))
  @staticmethod
  def _term_alt_Lmosek_4fusion_4ExprLinearDomain_2(_t__0):
    return mosek_fusion_DJC._term_Lmosek_4fusion_4ExprLinearDomain_2(_0)
  @staticmethod
  def _term_Lmosek_4fusion_4ExprLinearDomain_2(_0):
   return (mosek.fusion.DJC._term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2((_0.expr),(_0.dom)))
  @staticmethod
  def _match_term_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_Lmosek_4fusion_4LinearDomain_2__(_1))
  @staticmethod
  def _match_alt_term_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_Lmosek_4fusion_4LinearDomain_2__(_1))
  @staticmethod
  def _term_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4LinearDomain_2(_t__0,_t__1):
    return mosek_fusion_DJC._term_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4LinearDomain_2(_0,_1)
  @staticmethod
  def _term_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4LinearDomain_2(_0,_1):
   return (mosek.fusion.DJC._term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(_0.asExpr(),_1))
 return DJC
mosek_fusion_DJC=__mk_mosek_fusion_DJC()
del __mk_mosek_fusion_DJC
def __mk_mosek_fusion_BaseModel():
  import threading
  import mosek
  import mosek.fusion
  import numpy
  
  class BaseModel(object):
    _lock = threading.Lock()
    _global_env = None
    _global_env_counter = 0
  
    @classmethod
    def _globalEnv(self):
      self._lock.acquire()
      try:
        if BaseModel._global_env is None:
          try:
            env = mosek.Env(globalenv=True)
            BaseModel._global_env = env
            BaseModel._global_env_counter += 1
          except mosek.Exception as e:
            raise UnexpectedError(e)
        return BaseModel._global_env
      finally:
        self._lock.release()
  
    @classmethod
    def _env_1putlicensecode__3I(self,code):
      self._globalEnv().putlicensecode(code)
  
    @classmethod
    def _env_1putlicensepath_S(self,path):
      self._globalEnv().putlicensepath(path)
  
    @classmethod
    def _env_1putlicensewait_Z(self,yn):
      if yn:
        self._globalEnv().putlicensewait(1)
      else:
        self._globalEnv().putlicensewait(0)
  
    @classmethod
    def _env_1getversion_(self):
      return ".".join([str(_) for _ in mosek.Env.getversion()])
  
    def __callback(self,callbackkey,dinf,iinf,liinf):
      if self.__user_cb is not None:
        try:
          if self.__user_cb(callbackkey,dinf,iinf,liinf):
            self.__break = True
        except:
          self.__break = True
      if self.__user_pgs is not None:
        try:
          if self.__user_pgs(callbackkey):
            self.__break = True
        except:
          self.__break = True
      return 1 if self.__break else 0
  
    def _ctor_init_SS(self,name,licfile):
      env = self._globalEnv()
      self.__modelname = name
      self.__break = False
      task = mosek.Task(self._global_env, 0, 0);
      self.__user_cb = None
      self.__user_pgs = None
      finished = False
      try:
        task.putintparam(mosek.iparam.log_expand,0);
        task.putintparam(mosek.iparam.remove_unused_solutions,1);
        self.__task = task
        if name is not None:
          task.puttaskname(name)
  
        self._synched = mosek_fusion_SolutionStatus.Optimal;
  
        self._sol_itr = None
        self._sol_bas = None
        self._sol_itg = None
  
        self.__objname = None
  
        # handler for log output.
        def loghandler(text):
          if self.__logwriter is not None:
            self.__logwriter.write(text)
            self.__logwriter.flush()
        self.__loghandler = loghandler
        self.__logwriter = None
  
        task.set_Stream(mosek.streamtype.log,loghandler)
        task.set_InfoCallback(self.__callback)
        finished = True
      finally:
        if not finished:
          self.__task.__del__()
          self.__task = None
          BaseModel._global_env_counter -= 1
  
    def _ctor_init_Lmosek_4fusion_4BaseModel_2(self,m):
      env = self._globalEnv()
      self.__modelname = m.__modelname
      self.__break = False
      self.__user_cb = None
      self.__user_pgs = None
      task = mosek.Task(m.__task)
      finished = False
      try:
        self.__task = task
        self._synched = m._synched
  
        self._sol_itr = m._sol_itr._clone_() if m._sol_itr is not None else None
        self._sol_bas = m._sol_bas._clone_() if m._sol_bas is not None else None
        self._sol_itg = m._sol_itg._clone_() if m._sol_itg is not None else None
  
        self.__objname = m.__objname
  
        # handler for log output.
        def loghandler(text):
          if self.__logwriter is not None:
            self.__logwriter.write(text)
            self.__logwriter.flush()
        self.__loghandler = loghandler
        self.__logwriter = None
  
        task.set_Stream(mosek.streamtype.log,loghandler)
        task.set_InfoCallback(self.__callback)
        finished = True
      finally:
        if not finished:
          self.__task.__del__()
          self.__task = None
          BaseModel._global_env_counter -= 1
  
    def __del__(self):
        lock = self._lock
        if hasattr(self,'_BaseModel__task'):
          lock.acquire()
          try:
            task = self.__task
            BaseModel._global_env_counter -= 1
            task.__del__()
  
            for a in self.__class__.__slots__ + ['_sol_itr','_sol_bas','_sol_itg',
                                                 '_BaseModel__user_cb','_BaseModel__user_pgs','_BaseModel__loghandler','_BaseModel__logwriter','_BaseModel__task']:
              try: delattr(self,a)
              except AttributeError: pass
          finally:
            lock.release()
  
    def __enter__(self):
      return self
    def __exit__(self,exc_type,exc_val,exc_tb):
      self.__del__()
    def _dispose_(self):
      self.__del__()
  
    def _task_1setDataCallbackHandler_LSystem_4DataCallbackHandler_2(self,handler):
      self.__user_cb = handler
    def _task_1setCallbackHandler_LSystem_4CallbackHandler_2(self,handler):
      self.__user_pgs = handler
  
    def _task_1setLogHandler_LSystem_4StreamWriter_2(self,handler):
      """
      Set the object to handle log output from the solver.
  
      The handler object must have a write method accepting a string.
      """
      self.__logwriter = handler
  
    def _task_1put_1param_SS(self,name,value):
      self.__task.putnastrparam(name,value)
    def _task_1put_1param_SD(self,name,value):
      self.__task.putnadouparam(name,value)
    def _task_1put_1param_SI(self,name,value):
      self.__task.putnaintparam(name,value)
  
    def _task_1get_1dinf_S(self,name):
      key = mosek_fusion_SolverInfo._getdouinf(name)
      if key is None:
        raise NameError("Invalid double info name '%s'" % name)
      else:
        return self.__task.getdouinf(key)
  
    def _task_1get_1iinf_S(self,name):
      key = mosek_fusion_SolverInfo._getintinf(name)
      if key is None:
        raise NameError("Invalid integer info name '%s'" % name)
      else:
        return self.__task.getintinf(key)
  
    def _task_1get_1liinf_S(self,name):
      key = mosek_fusion_SolverInfo._getlintinf(name)
      if key is None:
        raise NameError("Invalid long integer info name '%s'" % name)
      else:
        return self.__task.getlintinf(key)
  
    def _numVariables_ (self):
      return len(self.__vars)
    def _numConstraints_ (self):
      return len(self.__cons)
  
    @staticmethod
    def __convert_names(names):
      namelist = None
      if names is not None:
        namelist = []
        namedaxisidxs = []
        for axisi,nl in enumerate(names):
          if nl is not None:
            namelist.extend(nl)
            namedaxisidxs.append(axisi)
      else:
        namelist = None
        namedaxisidxs = None
  
      return namedaxisidxs,namelist
    def _task_1format_1djc_1names__3JS_3I_3_3S(self,sub,fmt,dims,names):
      namedaxisidxs,namelist = self.__convert_names(names)
      self.__task.generatedjcnames(sub,fmt,dims,None,namedaxisidxs,namelist)
    def _task_1format_1acc_1names__3JS_3I_3_3S(self,sub,fmt,dims,names):
      namedaxisidxs,namelist = self.__convert_names(names)
      self.__task.generateaccnames(sub,fmt,dims,None,namedaxisidxs,namelist)
    def _task_1format_1var_1names__3IS_3I_3J_3_3S(self,subj,fmt,dims,sp,names):
      namedaxisidxs,namelist = self.__convert_names(names)
      self.__task.generatevarnames(subj,fmt,dims,sp,namedaxisidxs,namelist)
    def _task_1format_1barvar_1names__3IS_3I_3_3S(self,subj,fmt,dims,names):
      namedaxisidxs,namelist = self.__convert_names(names)
      self.__task.generatebarvarnames(subj,fmt,dims,None,namedaxisidxs,namelist)
    def _task_1format_1con_1names__3IS_3I_3J_3_3S(self,subj,fmt,dims,sp,names):
      namedaxisidxs,namelist = self.__convert_names(names)
      self.__task.generateconnames(subj,fmt,dims,sp,namedaxisidxs,namelist)
  
    def _task_1con_1name_IS(self,idx,name): self.__task.putconname(idx,name)
    def _task_1var_1name_IS(self,idx, name): self.__task.putvarname(idx,name)
    def _task_1acc_1name_JS(self,idx, name): self.__task.putaccname(idx,name)
    def _task_1djc_1name_JS(self,idx, name): self.__task.putdjcname(idx,name)
    def _task_1barvar_1name_IS(self,idx, name): self.__task.putbarvarname(idx,name)
  
    def _task_1numcon_(self):
      return self.__task.getnumcon()
    def _task_1numvar_(self):
      return self.__task.getnumvar()
    def _task_1numacc_(self):
      return self.__task.getnumacc()
    def _task_1numafe_(self):
      return self.__task.getnumafe()
    def _task_1numdjc_(self):
      return self.__task.getnumdjc()
  
    def __task_putvarboundlist(self,idxs,bl,bu,bk):
      num = len(idxs)
      if bl is None: bl = numpy.zeros(num,numpy.float64)
      if bu is None: bu = numpy.zeros(num,numpy.float64)
  
      bka = [bk] * num
      self.__task.putvarboundlist(idxs,bka,bl,bu)
  
    def __task_putconboundlist(self,idxs,bl,bu,bk):
      num = len(idxs)
      if bl is None: bl = numpy.zeros(num,numpy.float64)
      if bu is None: bu = numpy.zeros(num,numpy.float64)
  
      bka = [bk] * num
      self.__task.putconboundlist(idxs,bka,bl,bu)
  
    def _task_1con_1putboundlist_1fx__3I_3D(self,idxs, rhs):
      self.__task_putconboundlist( idxs, rhs, rhs, mosek.boundkey.fx);
  
    def _task_1con_1putboundlist_1lo__3I_3D(self,idxs, rhs):
      self.__task_putconboundlist( idxs, rhs, rhs, mosek.boundkey.lo);
  
    def _task_1con_1putboundlist_1up__3I_3D(self,idxs, rhs):
      self.__task_putconboundlist( idxs, rhs, rhs, mosek.boundkey.up);
  
    def _task_1con_1putboundlist_1ra__3I_3D_3D(self,idxs, lb, ub):
      self.__task_putconboundlist( idxs, lb, ub, mosek.boundkey.ra);
  
    def _task_1con_1putboundlist_1fr__3I(self,idxs):
      self.__task_putconboundlist( idxs, None, None, mosek.boundkey.fr);
  
  
    def _task_1var_1putboundlist_1fx__3I_3D(self,idxs, rhs):
      self.__task_putvarboundlist( idxs, rhs, rhs, mosek.boundkey.fx);
  
    def _task_1var_1putboundlist_1lo__3I_3D(self,idxs, rhs):
      self.__task_putvarboundlist( idxs, rhs, rhs, mosek.boundkey.lo);
  
    def _task_1var_1putboundlist_1up__3I_3D(self,idxs, rhs):
      self.__task_putvarboundlist( idxs, rhs, rhs, mosek.boundkey.up);
  
    def _task_1var_1putboundlist_1ra__3I_3D_3D(self,idxs, lb, ub):
      self.__task_putvarboundlist( idxs, lb, ub, mosek.boundkey.ra);
  
    def _task_1var_1putboundlist_1fr__3I(self,idxs):
      self.__task_putvarboundlist( idxs, None, None, mosek.boundkey.fr);
  
    def _task_1var_1putintlist__3I(self,idxs):
      self.__task.putvartypelist(idxs,[mosek.variabletype.type_int] * len(idxs))
    def _task_1var_1putcontlist__3I(self,idxs):
      self.__task.putvartypelist(idxs,[mosek.variabletype.type_cont] * len(idxs))
  
  
    def _task_1task_1optimize_ (self):
      try:
        self.__task.optimize()
        if self.__logwriter is not None:
          self.__task.solutionsummary(streamtype.log)
      except mosek.Error as e:
        raise OptimizeError("Error occurred while optimizing")
  
    def __task_appendvars(self,num):
      idx = self.__task.getnumvar()
      self.__task.appendvars(num)
      return idx
  
    def __task_appendcons(self,num):
      idx = self.__task.getnumcon()
      self.__task.appendcons(num)
      return idx
  
    def _task_1append_1var_I(self,num):
      return self.__task_appendvars(num)
  
    def _task_1append_1con_I(self,num):
      return self.__task_appendcons(num)
  
    # def _task_1append_1zerocones_I(self, numcone):
    #   self.__task.appendconesseq([mosek.conetype.zero for i in range(numcone)], numpy.zeros(numcone),numpy.zeros(numcone,int), 0)
  
    # def _task_1clear_1cones__3I(self, idxs):
    #   for i,k in enumerate(idxs):
    #     self.__task.putcone(k,mosek.conetype.zero, 0.0, 0,[])
  
    # def _task_1put_1zerocones__3III_3I(self, idxs, conesize, numcone, membs):
    #   for i,k in enumerate(idxs):
    #     self.__task.putcone(k,mosek.conetype.zero, 0.0, membs[i*conesize:(i+1)*conesize])
  
    # def _task_1put_1quadcones__3III_3I(self, idxs, conesize, numcone, membs):
    #   for i,k in enumerate(idxs):
    #     self.__task.putcone(k,mosek.conetype.quad, 0.0, membs[i*conesize:(i+1)*conesize])
  
    # def _task_1put_1rquadcones__3III_3I(self, idxs, conesize, numcone, membs):
    #   for i,k in enumerate(idxs):
    #     self.__task.putcone(k,mosek.conetype.rquad, 0.0, membs[i*conesize:(i+1)*conesize])
  
    # def _task_1put_1pexpcones__3III_3I(self, idxs, conesize, numcone, membs):
    #   for i,k in enumerate(idxs):
    #     self.__task.putcone(k,mosek.conetype.pexp, 0.0, membs[i*conesize:(i+1)*conesize])
  
    # def _task_1put_1ppowcones__3III_3I_3D(self, idxs, conesize, numcone, membs, alpha):
    #   for i,k in enumerate(idxs):
    #     self.__task.putcone(k,mosek.conetype.ppow, alpha[i], membs[i*conesize:(i+1)*conesize])
  
    # def _task_1put_1dexpcones__3III_3I(self, idxs, conesize, numcone, membs):
    #   for i,k in enumerate(idxs):
    #     self.__task.putcone(k,mosek.conetype.dexp, 0.0, membs[i*conesize:(i+1)*conesize])
  
    # def _task_1put_1dpowcones__3III_3I_3D(self, idxs, conesize, numcone, membs, alpha):
    #   for i,k in enumerate(idxs):
    #     self.__task.putcone(k,mosek.conetype.dpow, alpha[i], membs[i*conesize:(i+1)*conesize])
  
    # def _task_1put_1onenormcones__3III_3I(self, idxs, conesize, numcone, membs):
    #   for i,k in enumerate(idxs):
    #     self.__task.putcone(k,mosek.conetype.onenrm, 0.0, membs[i*conesize:(i+1)*conesize])
  
    # def _task_1put_1infnormcones__3III_3I(self, idxs, conesize, numcone, membs):
    #   for i,k in enumerate(idxs):
    #     self.__task.putcone(k,mosek.conetype.infnrm, 0.0, membs[i*conesize:(i+1)*conesize])
  
    # def _task_1put_1pgeomeancones__3III_3I(self, idxs, conesize, numcone, membs):
    #   for i,k in enumerate(idxs):
    #     self.__task.putcone(k,mosek.conetype.pgeomean, 0.0, membs[i*conesize:(i+1)*conesize])
  
    # def _task_1put_1dgeomeancones__3III_3I(self, idxs, conesize, numcone, membs):
    #   for i,k in enumerate(idxs):
    #     self.__task.putcone(k,mosek.conetype.dgeomean, 0.0, membs[i*conesize:(i+1)*conesize])
  
    def _task_1putarowlist__3I_3J_3I_3D(self,sub, ptrb, subj, cof):
      num   = len(sub)
      self.__task.putarowlist(sub, ptrb[:-1], ptrb[1:], subj, cof);
  
    def _task_1cleararowlist__3I(self,sub):
      num  = len(sub)
      ptr = numpy.zeros(num,dtype=numpy.int64)
      self.__task.putarowlist(sub, ptr, ptr, numpy.zeros(0,dtype=numpy.int32), numpy.zeros(0,dtype=numpy.float64))
  
      # This is probably awfully slow
      nnz   = self.__task.getnumbaranz()
      if nnz > 0:
        idxij = numpy.zeros(nnz,dtype=numpy.int64)
        self.__task.getbarasparsity(idxij)
        sub = set(sub)
        for idx in idxij:
          i,j = self.__task.getbaraidxij(idx)
          if i in sub:
            self.__task.putbaraij(i,j,[],[])
  
    def _task_1clearacollist__3I(self,sub):
      num  = len(sub)
      ptr = numpy.zeros(num,dtype=numpy.int64)
      self.__task.putacollist(sub, ptr, ptr, numpy.zeros(0,dtype=numpy.int32), numpy.zeros(0,dtype=numpy.float64))
  
    def _task_1putaijlist__3I_3I_3DJ(self,subi,subj,cof,num):
      self.__task.putaijlist(subi[:num],subj[:num],cof[:num])
  
    def _task_1putobjectivename_S(self,name):
      self.__task.putobjname("" if name is None else name)
  
    def _task_1putobjective_Z_3I_3DD(self,maximize,subj,cof,cfix):
      c = numpy.zeros(self.__task.getnumvar(),numpy.float64)
      idxs = numpy.arange(0,len(c),dtype=numpy.int32)
      for i in range(len(subj)):
        c[subj[i]] += cof[i]
      self.__task.putclist(idxs,c)
      self.__task.putcfix(cfix)
      self.__task.putobjsense(mosek.objsense.maximize if maximize else mosek.objsense.minimize)
  
    def _task_1putclist__3I_3D(self,subj,cof):
      self.__task.putclist(subj,cof)
  
  
    def _task_1appendsymmatlist__3I_3J_3I_3I_3D(self,dim,nz,subi,subj,cof):
      r = numpy.zeros(len(dim),numpy.int64)
      #print(dim,nz,"totalnz = {}, len(subi) = {},len(subj) = {}, subi = {}".format(sum(nz),len(subi),len(subj),subi))
      self.__task.appendsparsesymmatlist(dim,nz,subi,subj,cof,r)
      return r
  
    def _task_1putbarc__3I_3I_3I_3D(self,subj,subk,subl,val):
      #rint("putbarc: ",subj,subk,subl,val)
      self.__task.putbarcblocktriplet(subj,subk,subl,val)
      #self.__task.writedata("intermediate1.ptf")
  
    def _task_1putbaraijlist__3I_3I_3J(self,subi,subj,matidx):
      alpha = numpy.ones(len(subi),numpy.float64)
      ptr = numpy.arange(0,len(subi)+1,dtype=numpy.int64)
      self.__task.putbaraijlist(subi,subj,ptr[:-1],ptr[1:],matidx,alpha)
  
    def _task_1putbararowlist__3I_3J_3I_3J(self,subi,ptr,subj,matidx):
      alpha = numpy.ones(len(subj),numpy.float64)
      nummat = numpy.ones(len(subj),numpy.int64)
      self.__task.putbararowlist(subi,ptr[:-1],ptr[1:],subj,nummat,matidx,alpha)
  
  
    def _task_1barvardim_I(self,index):
      return self.__task.getdimbarvarj(index)
  
    def _task_1numbarvar_(self):
      return self.__task.getnumbarvar()
  
  
    def _task_1append_1barvar_II(self,size, num):
      res = self.__task.getnumbarvar()
      self.__task.appendbarvars([size] * num)
      return res
  
    def _task_1setnumvar_I(self,num):
      numvar = self.__task.getnumvar()
      if numvar > num:
        self.__task.removevars(range(num,numvar))
  
  
    def _task_1putxx_1slice_Emosek_4fusion_4SolutionType_2II_3D(self,whichsol,first,last,xx):
      if   whichsol == mosek_fusion_SolutionType.Interior:
        self.__task.putxxslice(mosek.soltype.itr, first,last,xx)
      elif whichsol == mosek_fusion_SolutionType.Integer:
        self.__task.putxxslice(mosek.soltype.itg, first,last,xx)
      elif whichsol == mosek_fusion_SolutionType.Basic:
        self.__task.putxxslice(mosek.soltype.bas, first,last,xx)
  
    def _task_1cleanup_IIII(self,inumvar,inumcon,inumcone,inumbarvar):
      numvar  = self.__task.getnumvar()
      numcon  = self.__task.getnumcon()
      numcone = self.__task.getnumcone()
      numbarvar = self.__task.getnumbarvar()
  
      if inumcone < numcone:
        self.__task.removecones(range(inumcone,numcone))
  
      if inumvar < numvar:
        n = numvar-inumvar
        vals = numpy.zeros((n,), numpy.float64)
        bk   = [ mosek.boundkey.fx for i in range(n) ]
        self.__task.putvarboundslice(inumvar,numvar,bk, vals, vals)
  
      if (inumcon < numcon):
        idxs = range(inumcon,numcon)
        self.__task.removecons(idxs)
  
      if (inumbarvar < numbarvar):
        self.__task.removebarvars(range(inumbarvar,numbarvar))
  
    def _task_1append_1afes_J(self,num):
      first = self.__task.getnumafe()
      self.__task.appendafes(num)
      return first
  
  
    def _task_1clearafelist__3J(self,idxs):
      self.__task.emptyafefrowlist(idxs)
      self.__task.emptyafebarfrowlist(idxs)
      self.__task.putafeglist(idxs,numpy.zeros(len(idxs),dtype=numpy.float64))
  
    def _task_1putafeflist__3J_3I_3I_3D_3D(self,idxs,ptr,subj,cof,g):
      lptr = numpy.array(ptr[:-1],dtype=numpy.int64)
      rownz = numpy.array([ptr[i+1]-ptr[i] for i in range(len(ptr)-1)],dtype=numpy.int32)
      self.__task.putafefrowlist(idxs,rownz,lptr, subj,cof)
      self.__task.putafeglist(idxs,g)
  
    # def _task_1putafebarfrowlist__3I_3J_3I_3J (self,idxs,ptr,barsubj,symmatidx):
    #     num = len(barsubj)
    #     afeidxlist = numpy.array([ idxs[i] for i in range(len(idxs)) for j in range(ptr[i],ptr[i+1]) ],dtype=numpy.int64)
    #     numtermslist = numpy.ones(num,numpy.int64)
    #     ptrtermslist = numpy.arange(num,numpy.int64)
    #     termweights = numpy.ones(num,numpy.float64)
    #     self.__task.putafebarfentrylist(afeidxlist,barsubj,numtermslist,ptrtermslist,symmatidx,termweights)
  
    def _task_1putafefijlist__3I_3I_3D (self,idxs,subj,cof):
      self.__task.putafefentrylist(numpy.array(idxs,dtype=numpy.int64),subj,cof)
    def _task_putafefglist__3I_3D(self,idxs,g):
      self.__task.putafeglist(idxs,g)
  
    def _task_1append_1accs_JI_3J_3D(self,domidx,numcone,afeidxs,g):
      domidxs = numpy.array([domidx for i in range(numcone)],dtype=numpy.int64)
      self.__task.appendaccs(domidxs,afeidxs,g)
  
    def _task_1putacclist__3J_3J_3J_3D(self,accidxs,domidxs,afeidxs,g):
      self.__task.putacclist(accidxs,domidxs,afeidxs,g)
  
  
  
    @staticmethod
    def __convertSolutionStatus(soltype,sol,status,prosta):
      pd = {
          mosek.solsta.optimal :                    mosek_fusion_SolutionStatus.Optimal,
          mosek.solsta.integer_optimal :            mosek_fusion_SolutionStatus.Optimal,
          mosek.solsta.prim_and_dual_feas :         mosek_fusion_SolutionStatus.Feasible,
          mosek.solsta.prim_feas :                  mosek_fusion_SolutionStatus.Feasible,
          mosek.solsta.dual_feas :                  mosek_fusion_SolutionStatus.Unknown,
          mosek.solsta.prim_infeas_cer :            mosek_fusion_SolutionStatus.Unknown,
          mosek.solsta.dual_infeas_cer :            mosek_fusion_SolutionStatus.Certificate,
          mosek.solsta.prim_illposed_cer :          mosek_fusion_SolutionStatus.Unknown,
          mosek.solsta.dual_illposed_cer :          mosek_fusion_SolutionStatus.IllposedCert,
      }
  
      dd = {
          mosek.solsta.optimal :                    mosek_fusion_SolutionStatus.Optimal,
          mosek.solsta.integer_optimal :            mosek_fusion_SolutionStatus.Unknown,
          mosek.solsta.prim_and_dual_feas :         mosek_fusion_SolutionStatus.Feasible,
          mosek.solsta.prim_feas :                  mosek_fusion_SolutionStatus.Unknown,
          mosek.solsta.dual_feas :                  mosek_fusion_SolutionStatus.Feasible,
          mosek.solsta.prim_infeas_cer :            mosek_fusion_SolutionStatus.Certificate,
          mosek.solsta.dual_infeas_cer :            mosek_fusion_SolutionStatus.Unknown,
          mosek.solsta.prim_illposed_cer :          mosek_fusion_SolutionStatus.IllposedCert,
          mosek.solsta.dual_illposed_cer :          mosek_fusion_SolutionStatus.Unknown,
      }
  
      psd = {
          mosek.prosta.unknown  :                   mosek_fusion_ProblemStatus.Unknown,
          mosek.prosta.prim_and_dual_feas :         mosek_fusion_ProblemStatus.PrimalAndDualFeasible,
          mosek.prosta.prim_feas :                  mosek_fusion_ProblemStatus.PrimalFeasible,
          mosek.prosta.dual_feas :                  mosek_fusion_ProblemStatus.DualFeasible,
          mosek.prosta.prim_infeas :                mosek_fusion_ProblemStatus.PrimalInfeasible,
          mosek.prosta.dual_infeas :                mosek_fusion_ProblemStatus.DualInfeasible,
          mosek.prosta.prim_and_dual_infeas :       mosek_fusion_ProblemStatus.PrimalAndDualInfeasible,
          mosek.prosta.ill_posed :                  mosek_fusion_ProblemStatus.IllPosed,
          mosek.prosta.prim_infeas_or_unbounded :   mosek_fusion_ProblemStatus.PrimalInfeasibleOrUnbounded,
        }
  
      try: sol.pstatus = pd[status]
      except KeyError: sol.pstatus = mosek_fusion_SolutionStatus.Unknown
  
      try: sol.dstatus = dd[status]
      except KeyError: sol.dstatus = mosek_fusion_SolutionStatus.Unknown
  
      try: sol.probstatus = psd[prosta]
      except KeyError: sol.probstatus = mosek_fusion_SolutionStatus.Unknown
  
  
    @staticmethod
    def _matchargs_task_1write_S(self,*args):
        return True
    def _task_1write_S(self,filename):
        self.__task.putintparam(mosek.iparam.opf_write_solutions, 1)
        #self.__task.putintparam(mosek.iparam.write_ignore_incompatible_items, 1)
        self.__task.writedata(filename)
  
    def _task_1write_1stream_SLSystem_4DataStream_2(self,ext,stream):
        exts = {
          'mps' : mosek.dataformat.mps,
          'cbf' : mosek.dataformat.cb,
          'ptf' : mosek.dataformat.ptf,
          'opf' : mosek.dataformat.op,
          'lp'  : mosek.dataformat.lp,
          'jtask'  : mosek.dataformat.json_task,
          'task'  : mosek.dataformat.task,
        }
        ct = {
          'gz' : mosek.compresstype.gzip,
          'zst' : mosek.compresstype.zstd,
        }
  
        fmt = mosek.dataformat.mps
        comptype = mosek.compresstype.none
        parts = ext.split('.')
        if len(parts) > 0: fmt = parts[0]
        if len(parts) > 1: comptype = parts[1]
  
        try:
          self.__task.putintparam(mosek.iparam.opf_write_solutions, 1)
          self.__task.writedatastream(exts.get(fmt,mosek.dataformat.mps), ct.get(comptype,mosek.compresstype.none), stream)
        except mosek.Error as e:
          raise mosek.fusion.UnexpectedError(e.msg)
  
    def _task_1write(self,filename):
      return self._writeProblem_S(filename)
  
    def _task_1get_(self):
      return self.__task
  
    def _clonetask_(self):
      return mosek.Task(self.__task)
    clonetask = _clonetask_
  
    def _task_1break_1solve_(self):
      self.__break = True
  
    def _task_1putoptserver_1host_S(self, addr):
      self.__task.putoptserverhost(addr)
  
    def _task_1analyze_1problem_I(self, detail):
      try:
        self.__task.putintparam(mosek.iparam.log_ana_pro, detail)
        self.__task.analyzeproblem(mosek.streamtype.log)
      except mosek.Error as e:
        raise mosek.fusion.UnexpectedError(e.msg)
  
    def _report_1solution__Lmosek_4fusion_4SolutionType_Emosek_4fusion_4ProblemStatus_Emosek_4fusion_4SolutionStatus_Lmosek_4fusion_4SolutionStatus_DDIIIIIZZ(
        self,
        soltype,
        prosta,
        psolsta,
        dsolsta,
        pobj,
        dobj,
        numvar,
        numcon,
        numbarelm,
        numacc,
        numaccelm,
        hasprimal,
        hasdual):
      assert False
    def _report_1solution_1get_1xx__3D  (self,v): self.__task.getxxslice(  self.__cursol,0,len(v),v)
    def _report_1solution_1get_1slx__3D (self,v): self.__task.getslxslice( self.__cursol,0,len(v),v)
    def _report_1solution_1get_1sux__3D (self,v): self.__task.getsuxslice( self.__cursol,0,len(v),v)
    def _report_1solution_1get_1xc__3D  (self,v): self.__task.getxcslice(  self.__cursol,0,len(v),v)
    def _report_1solution_1get_1slc__3D (self,v): self.__task.getslcslice( self.__cursol,0,len(v),v)
    def _report_1solution_1get_1suc__3D (self,v): self.__task.getsucslice( self.__cursol,0,len(v),v)
    def _report_1solution_1get_1barx__3D(self,v): self.__task.getbarxslice(self.__cursol,0,self.__task.getnumbarvar(),len(v),v)
    def _report_1solution_1get_1bars__3D(self,v): self.__task.getbarsslice(self.__cursol,0,self.__task.getnumbarvar(),len(v),v)
    def _report_1solution_1get_1accx__3D(self,v): self.__task.evaluateaccs(self.__cursol,v)
    def _report_1solution_1get_1accy__3D(self,v):
      ptr = 0
      numacc = self.__task.getnumacc()
      for i in range(numacc):
        accn   = self.__task.getaccn(i)
        data = numpy.zeros(accn,numpy.float64)
        self.__task.getaccdoty(self.__cursol,i,data);
        v[ptr:ptr+accn] = data
        ptr += accn
  
    def _report_1solution_1get_1accptr__3I(self,v):
      ptr = 0
      numacc = self.__task.getnumacc()
      for i in range(numacc):
        v[i] = ptr;
        ptr += self.__task.getaccn(i)
  
    #def __report_task_solution(self,mosek.soltype st, int numvar, int numcon, int numbarelm, long numacc, long numaccelm) {
    def __report_task_solution(self,st,numvar,numcon,numbarelm,numacc,numaccelm):
      pd = {
          mosek.solsta.optimal :                    mosek_fusion_SolutionStatus.Optimal,
          mosek.solsta.integer_optimal :            mosek_fusion_SolutionStatus.Optimal,
          mosek.solsta.prim_and_dual_feas :         mosek_fusion_SolutionStatus.Feasible,
          mosek.solsta.prim_feas :                  mosek_fusion_SolutionStatus.Feasible,
          mosek.solsta.dual_feas :                  mosek_fusion_SolutionStatus.Undefined,
          mosek.solsta.prim_infeas_cer :            mosek_fusion_SolutionStatus.Undefined,
          mosek.solsta.dual_infeas_cer :            mosek_fusion_SolutionStatus.Certificate,
          mosek.solsta.prim_illposed_cer :          mosek_fusion_SolutionStatus.Undefined,
          mosek.solsta.dual_illposed_cer :          mosek_fusion_SolutionStatus.IllposedCert,
          mosek.solsta.unknown :                    mosek_fusion_SolutionStatus.Unknown,
      }
  
      dd = {
          mosek.solsta.optimal :                    mosek_fusion_SolutionStatus.Optimal,
          mosek.solsta.integer_optimal :            mosek_fusion_SolutionStatus.Undefined,
          mosek.solsta.prim_and_dual_feas :         mosek_fusion_SolutionStatus.Feasible,
          mosek.solsta.prim_feas :                  mosek_fusion_SolutionStatus.Undefined,
          mosek.solsta.dual_feas :                  mosek_fusion_SolutionStatus.Feasible,
          mosek.solsta.prim_infeas_cer :            mosek_fusion_SolutionStatus.Certificate,
          mosek.solsta.dual_infeas_cer :            mosek_fusion_SolutionStatus.Undefined,
          mosek.solsta.prim_illposed_cer :          mosek_fusion_SolutionStatus.IllposedCert,
          mosek.solsta.dual_illposed_cer :          mosek_fusion_SolutionStatus.Undefined,
          mosek.solsta.unknown :                    mosek_fusion_SolutionStatus.Unknown,
      }
  
      psd = {
          mosek.prosta.unknown  :                   mosek_fusion_ProblemStatus.Unknown,
          mosek.prosta.prim_and_dual_feas :         mosek_fusion_ProblemStatus.PrimalAndDualFeasible,
          mosek.prosta.prim_feas :                  mosek_fusion_ProblemStatus.PrimalFeasible,
          mosek.prosta.dual_feas :                  mosek_fusion_ProblemStatus.DualFeasible,
          mosek.prosta.prim_infeas :                mosek_fusion_ProblemStatus.PrimalInfeasible,
          mosek.prosta.dual_infeas :                mosek_fusion_ProblemStatus.DualInfeasible,
          mosek.prosta.prim_and_dual_infeas :       mosek_fusion_ProblemStatus.PrimalAndDualInfeasible,
          mosek.prosta.ill_posed :                  mosek_fusion_ProblemStatus.IllPosed,
          mosek.prosta.prim_infeas_or_unbounded :   mosek_fusion_ProblemStatus.PrimalInfeasibleOrUnbounded,
        }
  
  
      solsta = self.__task.getsolsta(st)
      prosta = self.__task.getprosta(st)
  
      psolsta = pd[solsta]
      dsolsta = dd[solsta]
  
      # Special unconditional cases for integer solution:
      if st == mosek.soltype.itg:
        dsolsta = mosek_fusion_SolutionStatus.Undefined
        if prosta == mosek.prosta.prim_infeas:
          psolsta = mosek_fusion_SolutionStatus.Undefined
  
      hasprimal = psolsta != mosek_fusion_SolutionStatus.Undefined
      hasdual   = dsolsta != mosek_fusion_SolutionStatus.Undefined
  
      pobj   = self.__task.getprimalobj(st) if hasprimal else 0.0
      dobj   = self.__task.getdualobj(st) if hasdual else 0.0
  
      ps = psd[prosta]
  
      if   st == mosek.soltype.bas: soltp = mosek_fusion_SolutionType.Basic
      elif st == mosek.soltype.itr: soltp = mosek_fusion_SolutionType.Interior
      elif st == mosek.soltype.itg: soltp = mosek_fusion_SolutionType.Integer
  
      self.__cursol = st
      self._report_1solution_Emosek_4fusion_4SolutionType_2Emosek_4fusion_4ProblemStatus_2Emosek_4fusion_4SolutionStatus_2Emosek_4fusion_4SolutionStatus_2DDIIIIIZZ(
        soltp,ps,psolsta,dsolsta,pobj,dobj,numvar,numcon,numbarelm,numacc,numaccelm,hasprimal,hasdual)
  
  
  
  
    @classmethod
    def _env_1solve_1batch_ZDI_3Lmosek_4fusion_4Model_2(self,israce,timelimit,numthreads,models):
      n = len(models)
      tasks = [_m.getTask() for _m in models]
      res = [mosek.rescode.err_unknown] * n
      trm = [mosek.rescode.err_unknown] * n
      ok = False
      try:
        BaseModel._globalEnv().optimizebatch(israce,          # israce
                                             timelimit,       # timelimit
                                             numthreads,      # numthread
                                             tasks,
                                             trm,
                                             res)
        ok = True
      except mosek.Error as e:
        raise mosek_fusion_OptimizeError(str(e))
      finally:
        if not ok: # means exception, post-solve won't be called
          for _m in models:
            _m._sol_itr = None
            _m._sol_bas = None
            _m._sol_itg = None
  
      return [mosek_fusion_SolverStatus.Error if res[i]!=mosek.rescode.ok else mosek_fusion_SolverStatus.LostRace if trm[i]==mosek.rescode.trm_lost_race else mosek_fusion_SolverStatus.OK for i in range(n)]
  
    @staticmethod
    def _matchargs_task_1solve_(self,*args):
      return True
    def _task_1solve_ZSS(self, remote, server, port):
      task = self.__task
      ok = False
      try:
        trmcode = mosek.rescode.ok
        try:
          self.__break = False
          if remote:
            trmcode = task.optimizermt(server, port)
          else:
            trmcode = task.optimize()
          task.solutionsummary(mosek.streamtype.log)
          ok = True
        except mosek.Error as e:
          raise mosek_fusion_OptimizeError(str(e))
      finally:
        if not ok: # means exception, post-solve won't be called
          self._sol_itr = None
          self._sol_bas = None
          self._sol_itg = None
  
    def _task_1post_1solve_(self):
      task = self.__task  
      numcon  = task.getnumcon()
      numvar  = task.getnumvar()
      numbarvar = task.getnumbarvar()
      barvarveclen = 0
      for j in range(numbarvar):
        barxjdim = task.getdimbarvarj(j)
        barvarveclen += barxjdim * (1+barxjdim)/2
      barvarveclen = numpy.int32(barvarveclen)
      numacc = task.getnumacc();
      numaccelm = task.getaccntot();
  
      sol_bas_def = 0 != task.solutiondef(mosek.soltype.bas)
      sol_itr_def = 0 != task.solutiondef(mosek.soltype.itr)
      sol_itg_def = 0 != task.solutiondef(mosek.soltype.itg)
  
      self._clear_1solutions_();
      if sol_itr_def:
        self.__report_task_solution(mosek.soltype.itr, numvar, numcon, barvarveclen,numacc,numaccelm)
      if sol_bas_def:
        self.__report_task_solution(mosek.soltype.bas, numvar, numcon, barvarveclen,numacc,numaccelm)
      if sol_itg_def:
        self.__report_task_solution(mosek.soltype.itg, numvar, numcon, barvarveclen,numacc,numaccelm)
  
  
    @staticmethod
    def _env_1syeig_I_3D_3D(n,a,w): BaseModel._globalEnv().syeig(n,a,w)
    @staticmethod
    def _env_1syevd_I_3D_3D(n,a,w): BaseModel._globalEnv().syevd(n,a,w)
    #@staticmethod
    #def _env_1potrf_I_3D(n,a):      BaseModel._globalEnv().potrf(n,a)
  
  
  
    def _task_1putafefrow_J_3I_3D(self,idx,subj,cof): self.__task.putafefrow(idx,subj,cof)
  
    def _task_1clearaferowlist__3I(self,idxs):
      subj = numpy.zeros(0,dtype=numpy.int32)
      val  = numpy.zeros(0,dtype=numpy.float64)
  
      for i in range(len(idxs)):
          self.__task.putafefrow(idxs[i],subj,val)
          self.__task.putafeg(idxs[i],0.0)
      raise  UnexpectedError("Not implemented: clearbarfrowlist");
  
    def _task_1putafefrowlist__3I_3I_3I_3D_3D(self,idxs,ptr,subj,cof,g):
      for i in range(len(idxs)):
          self.__task.putafefrow(idxs[i],subj[ptr[i]:ptr[i+1]],cof[ptr[i]:ptr[i+1]])
          self.__task.putafeg(idxs[i],g[i])
  
    def _task_1putafebarfrowlist__3I_3I_3I_3J (self,idxs,ptr,barsubj,symmatidx):
      num = len(barsubj);
      #print('ptr = ',ptr)
      #print('idxs = ',idxs)
      #print('barsubj = ',barsubj)
      afeidxlist   = numpy.array([idxs[i] for i in range(len(idxs)) for j in range(ptr[i],ptr[i+1])],dtype=numpy.int64)
      numtermslist = numpy.ones(num,dtype=numpy.int64)
      ptrtermslist = numpy.arange(num,dtype=numpy.int64)
      termweights  = numpy.ones(num,dtype=numpy.float64)
      #print('afeidxlist   = ',afeidxlist  )
      #print('numtermslist = ',numtermslist)
      #print('ptrtermslist = ',ptrtermslist)
      #print('termweights  = ',termweights )
  
      #print(idxs,afeidxlist,barsubj,numtermslist,ptrtermslist,symmatidx,termweights)
      #print(len(idxs),len(afeidxlist),len(barsubj),len(numtermslist),len(ptrtermslist),len(symmatidx),len(termweights))
      self.__task.putafebarfentrylist(afeidxlist,barsubj,numtermslist,ptrtermslist,symmatidx,termweights)
  
    #def _task_1putafefijlist__3I_3I_3D(self,idxs,subj,cof):
    #  raise UnexpectedError("Not implemented: putafefijlist")
  
    def _task_1putafefglist__3I_3D (self,idxs,g):
      for i,v in zip(idxs,g):
        self.__task.putafeg(i,v)
  
    def _task_1append_1accs_II_3I_3D_3I(self,domidx,numcone,afeidxs,g,accidxs):
      domidxs = numpy.array([domidx]*numcone,dtype=numpy.int32)
      lafeidxs = numpy.array(afeidxs,dtype=numpy.int64)
      firstacc = self.__task.getnumacc()
  
      for i in range(numcone):
        accidxs[i] = firstacc + i
      self.__task.appendaccs(domidxs,lafeidxs,g)
  
    def _task_1putafefrow_I_3I_3D (self,idx,subj,cof):
      self.__task.putafefrow(idx, subj, cof)
  
    def _task_1append_1domain_1quad_I     (self, conesize): return self.__task.appendquadraticconedomain(conesize)
    def _task_1append_1domain_1rquad_I    (self, conesize): return self.__task.appendrquadraticconedomain(conesize)
    def _task_1append_1domain_1pexp_      (self): return self.__task.appendprimalexpconedomain()
    def _task_1append_1domain_1dexp_      (self): return self.__task.appenddualexpconedomain()
    def _task_1append_1domain_1ppow_I_3D  (self, conesize, alpha): return self.__task.appendprimalpowerconedomain(conesize,alpha)
    def _task_1append_1domain_1ppow_1seq_II_3D(self, conesize, nleftcommon, alpha): 
      numcones = len(alpha) // nleftcommon
      return self.__task.appendprimalpowerconedomainseq(numpy.array([conesize]*numcones,dtype=numpy.int64),
                                                        numpy.array([nleftcommon]*numcones,dtype=numpy.int64),
                                                        alpha)
    def _task_1append_1domain_1dpow_I_3D  (self, conesize, alpha): return self.__task.appenddualpowerconedomain(conesize,alpha)
    def _task_1append_1domain_1dpow_1seq_II_3D(self, conesize, nleftcommon, alpha): 
      numcones = len(alpha) // nleftcommon
      return self.__task.appenddualpowerconedomainseq(numpy.array([conesize]*numcones,dtype=numpy.int64),
                                                      numpy.array([nleftcommon]*numcones,dtype=numpy.int64),
                                                      alpha)
    #def _task_1append_1domain_1onenorm_I  (self, conesize): return self.__task.appendonenormconedomain(conesize)
    #def _task_1append_1domain_1infnorm_I  (self, conesize): return self.__task.appendinfnormconedomain(conesize)
    def _task_1append_1domain_1pgeomean_I (self, conesize): return self.__task.appendprimalgeomeanconedomain(conesize)
    def _task_1append_1domain_1dgeomean_I (self, conesize): return self.__task.appenddualgeomeanconedomain(conesize)
    def _task_1append_1domain_1rpos_I     (self, conesize): return self.__task.appendrplusdomain(conesize)
    def _task_1append_1domain_1rneg_I     (self, conesize): return self.__task.appendrminusdomain(conesize)
    def _task_1append_1domain_1r_I        (self, conesize): return self.__task.appendrdomain(conesize)
    def _task_1append_1domain_1rzero_I    (self, conesize): return self.__task.appendrzerodomain(conesize)
    def _task_1append_1domain_1svec_1psd_I(self, conesize): return self.__task.appendsvecpsdconedomain(conesize)
    def _task_1append_1domain_1empty_     (self): return self.__task.appendrdomain(0)
    def __task_append_1afes(self,num):
      idx = self.__task.getnumafe()
      self.__task.appendafes(num)
      return idx
  
    def __task_appenddjcs(self,num):
      idx = self.__task.getnumdjc()
      self.__task.appenddjcs(num)
      return idx
  
    def _task_1append_1djc_J(self,num):
      return self.__task_appenddjcs(num)
  
    def _task_1putdjcslice_JJ_3J_3J_3J_3J_3D(self,first,last,numterm,termsizes,domidxlist,afeidxlist,b):
      return self.__task.putdjcslice(first,last,domidxlist,afeidxlist,b,termsizes,numterm)
  return BaseModel
mosek_fusion_BaseModel=__mk_mosek_fusion_BaseModel()
def __mk_mosek_fusion_Model():
 class Model(mosek_fusion_BaseModel):
  __slots__ = ['_Model__xs','_Model__ws','_Model__rs','_Model__sol_itg','_Model__sol_bas','_Model__sol_itr','_Model__con_map','_Model__acons','_Model__cons','_Model__task_numaferow','_Model__param_value','_Model__param_num','_Model__par_map','_Model__numparameter','_Model__parameters','_Model__initsol_xx_flag','_Model__initsol_xx','_Model__var_map','_Model__barvars','_Model__vars','_Model__bfixidx','_Model__barvar_block_elm_j','_Model__barvar_block_elm_i','_Model__barvar_block_elm_barj','_Model__barvar_block_elm_ptr','_Model__barvar_block_dim','_Model__barvar_block_ptr','_Model__barvar_dim','_Model__barvar_num','_Model__var_elm_acc_ofs','_Model__var_elm_acc_idx','_Model__var_block_acc_id','_Model__var_block_map','_Model__acon_elm_afe','_Model__acon_elm_ofs','_Model__acon_elm_scale','_Model__acon_elm_accid','_Model__acon_afe','_Model__acon_acc','_Model__acon_block_map','_Model__acc_block_map','_Model__obj_blocks','_Model__afe_blocks','_Model__con_blocks','_Model__num_task_acc','_Model__num_task_afe','_Model__num_task_con','_Model__cache_evaluations','_Model__solutionptr','_Model__acceptable_sol','_Model__model_name']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_(*args): 
      self._ctor_init_(*args)
    elif self.__match_alt_ctor_(*args):
      self._ctor_alt_init_(*args)
    elif self.__match_ctor_S(*args): 
      self._ctor_init_S(*args)
    elif self.__match_alt_ctor_S(*args):
      self._ctor_alt_init_S(*args)
    elif self.__match_ctor_IZ(*args): 
      self._ctor_init_IZ(*args)
    elif self.__match_alt_ctor_IZ(*args):
      self._ctor_alt_init_IZ(*args)
    elif self.__match_ctor_SIZ(*args): 
      self._ctor_init_SIZ(*args)
    elif self.__match_alt_ctor_SIZ(*args):
      self._ctor_alt_init_SIZ(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.Model.ctor()\n\tmosek.fusion.Model.ctor(string)\n\tmosek.fusion.Model.ctor(int32,bool)\n\tmosek.fusion.Model.ctor(string,int32,bool)')
  def setVariableValues(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_setVariableValues_Z_3J_3D(*args): 
      return self._setVariableValues_Z_3J_3D(*args)
    elif mosek_fusion_Model._match_alt_setVariableValues_Z_3J_3D(*args): 
      return self._setVariableValues_alt_Z_3J_3D(*args)
    else:
      raise ValueError('Invalid argument list setVariableValues('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.setVariableValues(bool,array(int64,ndim=1),array(double,ndim=1))')
  def hasConstraint(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_hasConstraint_S(*args): 
      return self._hasConstraint_S(*args)
    elif mosek_fusion_Model._match_alt_hasConstraint_S(*args): 
      return self._hasConstraint_alt_S(*args)
    else:
      raise ValueError('Invalid argument list hasConstraint('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.hasConstraint(string)')
  def getVariable(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_getVariable_S(*args): 
      return self._getVariable_S(*args)
    elif mosek_fusion_Model._match_alt_getVariable_S(*args): 
      return self._getVariable_alt_S(*args)
    elif mosek_fusion_Model._match_getVariable_I(*args): 
      return self._getVariable_I(*args)
    elif mosek_fusion_Model._match_alt_getVariable_I(*args): 
      return self._getVariable_alt_I(*args)
    else:
      raise ValueError('Invalid argument list getVariable('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.getVariable(string)\n\tmosek.fusion.Model.getVariable(int32)')
  def disjunction(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_disjunction_Lmosek_4fusion_4DisjunctionTerms_2(*args): 
      return self._disjunction_Lmosek_4fusion_4DisjunctionTerms_2(*args)
    elif mosek_fusion_Model._match_alt_disjunction_Lmosek_4fusion_4DisjunctionTerms_2(*args): 
      return self._disjunction_alt_Lmosek_4fusion_4DisjunctionTerms_2(*args)
    elif mosek_fusion_Model._match_disjunction__3Lmosek_4fusion_4Term_2(*args): 
      return self._disjunction__3Lmosek_4fusion_4Term_2(*args)
    elif mosek_fusion_Model._match_alt_disjunction__3Lmosek_4fusion_4Term_2(*args): 
      return self._disjunction_alt__3Lmosek_4fusion_4Term_2(*args)
    elif mosek_fusion_Model._match_disjunction_Lmosek_4fusion_4Term_2(*args): 
      return self._disjunction_Lmosek_4fusion_4Term_2(*args)
    elif mosek_fusion_Model._match_alt_disjunction_Lmosek_4fusion_4Term_2(*args): 
      return self._disjunction_alt_Lmosek_4fusion_4Term_2(*args)
    elif mosek_fusion_Model._match_disjunction_Lmosek_4fusion_4ExprDomain_2(*args): 
      return self._disjunction_Lmosek_4fusion_4ExprDomain_2(*args)
    elif mosek_fusion_Model._match_alt_disjunction_Lmosek_4fusion_4ExprDomain_2(*args): 
      return self._disjunction_alt_Lmosek_4fusion_4ExprDomain_2(*args)
    elif mosek_fusion_Model._match_disjunction__3Lmosek_4fusion_4ExprDomain_2(*args): 
      return self._disjunction__3Lmosek_4fusion_4ExprDomain_2(*args)
    elif mosek_fusion_Model._match_alt_disjunction__3Lmosek_4fusion_4ExprDomain_2(*args): 
      return self._disjunction_alt__3Lmosek_4fusion_4ExprDomain_2(*args)
    elif mosek_fusion_Model._match_disjunction_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args): 
      return self._disjunction_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args)
    elif mosek_fusion_Model._match_alt_disjunction_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args): 
      return self._disjunction_alt_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args)
    elif mosek_fusion_Model._match_disjunction_SLmosek_4fusion_4Term_2(*args): 
      return self._disjunction_SLmosek_4fusion_4Term_2(*args)
    elif mosek_fusion_Model._match_alt_disjunction_SLmosek_4fusion_4Term_2(*args): 
      return self._disjunction_alt_SLmosek_4fusion_4Term_2(*args)
    elif mosek_fusion_Model._match_disjunction_SLmosek_4fusion_4ExprDomain_2(*args): 
      return self._disjunction_SLmosek_4fusion_4ExprDomain_2(*args)
    elif mosek_fusion_Model._match_alt_disjunction_SLmosek_4fusion_4ExprDomain_2(*args): 
      return self._disjunction_alt_SLmosek_4fusion_4ExprDomain_2(*args)
    elif mosek_fusion_Model._match_disjunction_S_3Lmosek_4fusion_4Term_2(*args): 
      return self._disjunction_S_3Lmosek_4fusion_4Term_2(*args)
    elif mosek_fusion_Model._match_alt_disjunction_S_3Lmosek_4fusion_4Term_2(*args): 
      return self._disjunction_alt_S_3Lmosek_4fusion_4Term_2(*args)
    elif mosek_fusion_Model._match_disjunction_S_3Lmosek_4fusion_4ExprDomain_2(*args): 
      return self._disjunction_S_3Lmosek_4fusion_4ExprDomain_2(*args)
    elif mosek_fusion_Model._match_alt_disjunction_S_3Lmosek_4fusion_4ExprDomain_2(*args): 
      return self._disjunction_alt_S_3Lmosek_4fusion_4ExprDomain_2(*args)
    elif mosek_fusion_Model._match_disjunction_SLmosek_4fusion_4DisjunctionTerms_2(*args): 
      return self._disjunction_SLmosek_4fusion_4DisjunctionTerms_2(*args)
    elif mosek_fusion_Model._match_alt_disjunction_SLmosek_4fusion_4DisjunctionTerms_2(*args): 
      return self._disjunction_alt_SLmosek_4fusion_4DisjunctionTerms_2(*args)
    elif mosek_fusion_Model._match_disjunction_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args): 
      return self._disjunction_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args)
    elif mosek_fusion_Model._match_alt_disjunction_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args): 
      return self._disjunction_alt_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args)
    elif mosek_fusion_Model._match_disjunction_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args): 
      return self._disjunction_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args)
    elif mosek_fusion_Model._match_alt_disjunction_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args): 
      return self._disjunction_alt_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args)
    elif mosek_fusion_Model._match_disjunction_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args): 
      return self._disjunction_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args)
    elif mosek_fusion_Model._match_alt_disjunction_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args): 
      return self._disjunction_alt_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args)
    else:
      raise ValueError('Invalid argument list disjunction('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.disjunction(mosek.fusion.DisjunctionTerms)\n\tmosek.fusion.Model.disjunction(array(mosek.fusion.Term,ndim=1))\n\tmosek.fusion.Model.disjunction(mosek.fusion.Term)\n\tmosek.fusion.Model.disjunction(mosek.fusion.ExprDomain)\n\tmosek.fusion.Model.disjunction(array(mosek.fusion.ExprDomain,ndim=1))\n\tmosek.fusion.Model.disjunction(mosek.fusion.Term,mosek.fusion.Term)\n\tmosek.fusion.Model.disjunction(string,mosek.fusion.Term)\n\tmosek.fusion.Model.disjunction(string,mosek.fusion.ExprDomain)\n\tmosek.fusion.Model.disjunction(string,array(mosek.fusion.Term,ndim=1))\n\tmosek.fusion.Model.disjunction(string,array(mosek.fusion.ExprDomain,ndim=1))\n\tmosek.fusion.Model.disjunction(string,mosek.fusion.DisjunctionTerms)\n\tmosek.fusion.Model.disjunction(string,mosek.fusion.Term,mosek.fusion.Term)\n\tmosek.fusion.Model.disjunction(mosek.fusion.Term,mosek.fusion.Term,mosek.fusion.Term)\n\tmosek.fusion.Model.disjunction(string,mosek.fusion.Term,mosek.fusion.Term,mosek.fusion.Term)')
  @staticmethod
  def putlicensecode(*args):
    if False: pass
    elif mosek_fusion_Model._match_putlicensecode__3I(*args): 
      return mosek_fusion_Model._putlicensecode__3I(*args)
    elif mosek_fusion_Model._match_alt_putlicensecode__3I(*args): 
      return mosek_fusion_Model._putlicensecode_alt__3I(*args)
    else:
      raise ValueError('Invalid argument list putlicensecode('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.putlicensecode(array(int32,ndim=1))')
  def dualObjValue(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_dualObjValue_(*args): 
      return self._dualObjValue_(*args)
    elif mosek_fusion_Model._match_alt_dualObjValue_(*args): 
      return self._dualObjValue_alt_(*args)
    else:
      raise ValueError('Invalid argument list dualObjValue('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.dualObjValue()')
  def getConstraintDuals(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_getConstraintDuals_Z_3I_3DI(*args): 
      return self._getConstraintDuals_Z_3I_3DI(*args)
    elif mosek_fusion_Model._match_alt_getConstraintDuals_Z_3I_3DI(*args): 
      return self._getConstraintDuals_alt_Z_3I_3DI(*args)
    else:
      raise ValueError('Invalid argument list getConstraintDuals('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.getConstraintDuals(bool,array(int32,ndim=1),array(double,ndim=1),int32)')
  def hasVariable(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_hasVariable_S(*args): 
      return self._hasVariable_S(*args)
    elif mosek_fusion_Model._match_alt_hasVariable_S(*args): 
      return self._hasVariable_alt_S(*args)
    else:
      raise ValueError('Invalid argument list hasVariable('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.hasVariable(string)')
  def expressionCache(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_expressionCache_Z(*args): 
      return self._expressionCache_Z(*args)
    elif mosek_fusion_Model._match_alt_expressionCache_Z(*args): 
      return self._expressionCache_alt_Z(*args)
    else:
      raise ValueError('Invalid argument list expressionCache('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.expressionCache(bool)')
  def acceptedSolutionStatus(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_acceptedSolutionStatus_Emosek_4fusion_4AccSolutionStatus_2(*args): 
      return self._acceptedSolutionStatus_Emosek_4fusion_4AccSolutionStatus_2(*args)
    elif mosek_fusion_Model._match_alt_acceptedSolutionStatus_Emosek_4fusion_4AccSolutionStatus_2(*args): 
      return self._acceptedSolutionStatus_alt_Emosek_4fusion_4AccSolutionStatus_2(*args)
    else:
      raise ValueError('Invalid argument list acceptedSolutionStatus('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.acceptedSolutionStatus(mosek.fusion.AccSolutionStatus)')
  def optserverHost(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_optserverHost_S(*args): 
      return self._optserverHost_S(*args)
    elif mosek_fusion_Model._match_alt_optserverHost_S(*args): 
      return self._optserverHost_alt_S(*args)
    else:
      raise ValueError('Invalid argument list optserverHost('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.optserverHost(string)')
  def clone(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_clone_(*args): 
      return self._clone_(*args)
    elif mosek_fusion_Model._match_alt_clone_(*args): 
      return self._clone_alt_(*args)
    else:
      raise ValueError('Invalid argument list clone('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.clone()')
  def selectedSolution(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_selectedSolution_Emosek_4fusion_4SolutionType_2(*args): 
      return self._selectedSolution_Emosek_4fusion_4SolutionType_2(*args)
    elif mosek_fusion_Model._match_alt_selectedSolution_Emosek_4fusion_4SolutionType_2(*args): 
      return self._selectedSolution_alt_Emosek_4fusion_4SolutionType_2(*args)
    else:
      raise ValueError('Invalid argument list selectedSolution('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.selectedSolution(mosek.fusion.SolutionType)')
  def flushParameters(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_flushParameters_(*args): 
      return self._flushParameters_(*args)
    elif mosek_fusion_Model._match_alt_flushParameters_(*args): 
      return self._flushParameters_alt_(*args)
    else:
      raise ValueError('Invalid argument list flushParameters('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.flushParameters()')
  def breakSolver(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_breakSolver_(*args): 
      return self._breakSolver_(*args)
    elif mosek_fusion_Model._match_alt_breakSolver_(*args): 
      return self._breakSolver_alt_(*args)
    else:
      raise ValueError('Invalid argument list breakSolver('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.breakSolver()')
  def getSolverLIntInfo(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_getSolverLIntInfo_S(*args): 
      return self._getSolverLIntInfo_S(*args)
    elif mosek_fusion_Model._match_alt_getSolverLIntInfo_S(*args): 
      return self._getSolverLIntInfo_alt_S(*args)
    else:
      raise ValueError('Invalid argument list getSolverLIntInfo('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.getSolverLIntInfo(string)')
  def setSolverParam(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_setSolverParam_SS(*args): 
      return self._setSolverParam_SS(*args)
    elif mosek_fusion_Model._match_alt_setSolverParam_SS(*args): 
      return self._setSolverParam_alt_SS(*args)
    elif mosek_fusion_Model._match_setSolverParam_SI(*args): 
      return self._setSolverParam_SI(*args)
    elif mosek_fusion_Model._match_alt_setSolverParam_SI(*args): 
      return self._setSolverParam_alt_SI(*args)
    elif mosek_fusion_Model._match_setSolverParam_SD(*args): 
      return self._setSolverParam_SD(*args)
    elif mosek_fusion_Model._match_alt_setSolverParam_SD(*args): 
      return self._setSolverParam_alt_SD(*args)
    else:
      raise ValueError('Invalid argument list setSolverParam('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.setSolverParam(string,string)\n\tmosek.fusion.Model.setSolverParam(string,int32)\n\tmosek.fusion.Model.setSolverParam(string,double)')
  def setDataCallbackHandler(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_setDataCallbackHandler_LSystem_4DataCallbackHandler_2(*args): 
      return self._setDataCallbackHandler_LSystem_4DataCallbackHandler_2(*args)
    elif mosek_fusion_Model._match_alt_setDataCallbackHandler_LSystem_4DataCallbackHandler_2(*args): 
      return self._setDataCallbackHandler_alt_LSystem_4DataCallbackHandler_2(*args)
    else:
      raise ValueError('Invalid argument list setDataCallbackHandler('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.setDataCallbackHandler(System.DataCallbackHandler)')
  def writeTaskNoFlush(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_writeTaskNoFlush_S(*args): 
      return self._writeTaskNoFlush_S(*args)
    elif mosek_fusion_Model._match_alt_writeTaskNoFlush_S(*args): 
      return self._writeTaskNoFlush_alt_S(*args)
    else:
      raise ValueError('Invalid argument list writeTaskNoFlush('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.writeTaskNoFlush(string)')
  def parameter(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_parameter_(*args): 
      return self._parameter_(*args)
    elif mosek_fusion_Model._match_alt_parameter_(*args): 
      return self._parameter_alt_(*args)
    elif mosek_fusion_Model._match_parameter_S(*args): 
      return self._parameter_S(*args)
    elif mosek_fusion_Model._match_alt_parameter_S(*args): 
      return self._parameter_alt_S(*args)
    elif mosek_fusion_Model._match_parameter_I(*args): 
      return self._parameter_I(*args)
    elif mosek_fusion_Model._match_alt_parameter_I(*args): 
      return self._parameter_alt_I(*args)
    elif mosek_fusion_Model._match_parameter__3I(*args): 
      return self._parameter__3I(*args)
    elif mosek_fusion_Model._match_alt_parameter__3I(*args): 
      return self._parameter_alt__3I(*args)
    elif mosek_fusion_Model._match_parameter_SI(*args): 
      return self._parameter_SI(*args)
    elif mosek_fusion_Model._match_alt_parameter_SI(*args): 
      return self._parameter_alt_SI(*args)
    elif mosek_fusion_Model._match_parameter__3I_3J(*args): 
      return self._parameter__3I_3J(*args)
    elif mosek_fusion_Model._match_alt_parameter__3I_3J(*args): 
      return self._parameter_alt__3I_3J(*args)
    elif mosek_fusion_Model._match_parameter_II(*args): 
      return self._parameter_II(*args)
    elif mosek_fusion_Model._match_alt_parameter_II(*args): 
      return self._parameter_alt_II(*args)
    elif mosek_fusion_Model._match_parameter__3I_3_5I(*args): 
      return self._parameter__3I_3_5I(*args)
    elif mosek_fusion_Model._match_alt_parameter__3I_3_5I(*args): 
      return self._parameter_alt__3I_3_5I(*args)
    elif mosek_fusion_Model._match_parameter_S_3I(*args): 
      return self._parameter_S_3I(*args)
    elif mosek_fusion_Model._match_alt_parameter_S_3I(*args): 
      return self._parameter_alt_S_3I(*args)
    elif mosek_fusion_Model._match_parameter_S_3I_3J(*args): 
      return self._parameter_S_3I_3J(*args)
    elif mosek_fusion_Model._match_alt_parameter_S_3I_3J(*args): 
      return self._parameter_alt_S_3I_3J(*args)
    elif mosek_fusion_Model._match_parameter_III(*args): 
      return self._parameter_III(*args)
    elif mosek_fusion_Model._match_alt_parameter_III(*args): 
      return self._parameter_alt_III(*args)
    elif mosek_fusion_Model._match_parameter_S_3I_3_5I(*args): 
      return self._parameter_S_3I_3_5I(*args)
    elif mosek_fusion_Model._match_alt_parameter_S_3I_3_5I(*args): 
      return self._parameter_alt_S_3I_3_5I(*args)
    elif mosek_fusion_Model._match_parameter_SII(*args): 
      return self._parameter_SII(*args)
    elif mosek_fusion_Model._match_alt_parameter_SII(*args): 
      return self._parameter_alt_SII(*args)
    elif mosek_fusion_Model._match_parameter_SIII(*args): 
      return self._parameter_SIII(*args)
    elif mosek_fusion_Model._match_alt_parameter_SIII(*args): 
      return self._parameter_alt_SIII(*args)
    else:
      raise ValueError('Invalid argument list parameter('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.parameter()\n\tmosek.fusion.Model.parameter(string)\n\tmosek.fusion.Model.parameter(int32)\n\tmosek.fusion.Model.parameter(array(int32,ndim=1))\n\tmosek.fusion.Model.parameter(string,int32)\n\tmosek.fusion.Model.parameter(array(int32,ndim=1),array(int64,ndim=1))\n\tmosek.fusion.Model.parameter(int32,int32)\n\tmosek.fusion.Model.parameter(array(int32,ndim=1),array(int32,ndim=2))\n\tmosek.fusion.Model.parameter(string,array(int32,ndim=1))\n\tmosek.fusion.Model.parameter(string,array(int32,ndim=1),array(int64,ndim=1))\n\tmosek.fusion.Model.parameter(int32,int32,int32)\n\tmosek.fusion.Model.parameter(string,array(int32,ndim=1),array(int32,ndim=2))\n\tmosek.fusion.Model.parameter(string,int32,int32)\n\tmosek.fusion.Model.parameter(string,int32,int32,int32)')
  def getConstraint(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_getConstraint_S(*args): 
      return self._getConstraint_S(*args)
    elif mosek_fusion_Model._match_alt_getConstraint_S(*args): 
      return self._getConstraint_alt_S(*args)
    elif mosek_fusion_Model._match_getConstraint_I(*args): 
      return self._getConstraint_I(*args)
    elif mosek_fusion_Model._match_alt_getConstraint_I(*args): 
      return self._getConstraint_alt_I(*args)
    else:
      raise ValueError('Invalid argument list getConstraint('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.getConstraint(string)\n\tmosek.fusion.Model.getConstraint(int32)')
  def getAcceptedSolutionStatus(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_getAcceptedSolutionStatus_(*args): 
      return self._getAcceptedSolutionStatus_(*args)
    elif mosek_fusion_Model._match_alt_getAcceptedSolutionStatus_(*args): 
      return self._getAcceptedSolutionStatus_alt_(*args)
    else:
      raise ValueError('Invalid argument list getAcceptedSolutionStatus('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.getAcceptedSolutionStatus()')
  @staticmethod
  def putlicensewait(*args):
    if False: pass
    elif mosek_fusion_Model._match_putlicensewait_Z(*args): 
      return mosek_fusion_Model._putlicensewait_Z(*args)
    elif mosek_fusion_Model._match_alt_putlicensewait_Z(*args): 
      return mosek_fusion_Model._putlicensewait_alt_Z(*args)
    else:
      raise ValueError('Invalid argument list putlicensewait('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.putlicensewait(bool)')
  def getTask(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_getTask_(*args): 
      return self._getTask_(*args)
    elif mosek_fusion_Model._match_alt_getTask_(*args): 
      return self._getTask_alt_(*args)
    else:
      raise ValueError('Invalid argument list getTask('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.getTask()')
  def getName(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_getName_(*args): 
      return self._getName_(*args)
    elif mosek_fusion_Model._match_alt_getName_(*args): 
      return self._getName_alt_(*args)
    else:
      raise ValueError('Invalid argument list getName('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.getName()')
  def writeTaskStream(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_writeTaskStream_SLSystem_4DataStream_2(*args): 
      return self._writeTaskStream_SLSystem_4DataStream_2(*args)
    elif mosek_fusion_Model._match_alt_writeTaskStream_SLSystem_4DataStream_2(*args): 
      return self._writeTaskStream_alt_SLSystem_4DataStream_2(*args)
    else:
      raise ValueError('Invalid argument list writeTaskStream('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.writeTaskStream(string,System.DataStream)')
  def getPrimalSolutionStatus(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_getPrimalSolutionStatus_(*args): 
      return self._getPrimalSolutionStatus_(*args)
    elif mosek_fusion_Model._match_alt_getPrimalSolutionStatus_(*args): 
      return self._getPrimalSolutionStatus_alt_(*args)
    elif mosek_fusion_Model._match_getPrimalSolutionStatus_Emosek_4fusion_4SolutionType_2(*args): 
      return self._getPrimalSolutionStatus_Emosek_4fusion_4SolutionType_2(*args)
    elif mosek_fusion_Model._match_alt_getPrimalSolutionStatus_Emosek_4fusion_4SolutionType_2(*args): 
      return self._getPrimalSolutionStatus_alt_Emosek_4fusion_4SolutionType_2(*args)
    else:
      raise ValueError('Invalid argument list getPrimalSolutionStatus('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.getPrimalSolutionStatus()\n\tmosek.fusion.Model.getPrimalSolutionStatus(mosek.fusion.SolutionType)')
  def getVariableDuals(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_getVariableDuals_Z_3J_3DI(*args): 
      return self._getVariableDuals_Z_3J_3DI(*args)
    elif mosek_fusion_Model._match_alt_getVariableDuals_Z_3J_3DI(*args): 
      return self._getVariableDuals_alt_Z_3J_3DI(*args)
    else:
      raise ValueError('Invalid argument list getVariableDuals('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.getVariableDuals(bool,array(int64,ndim=1),array(double,ndim=1),int32)')
  def getSolverIntInfo(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_getSolverIntInfo_S(*args): 
      return self._getSolverIntInfo_S(*args)
    elif mosek_fusion_Model._match_alt_getSolverIntInfo_S(*args): 
      return self._getSolverIntInfo_alt_S(*args)
    else:
      raise ValueError('Invalid argument list getSolverIntInfo('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.getSolverIntInfo(string)')
  def primalObjValue(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_primalObjValue_(*args): 
      return self._primalObjValue_(*args)
    elif mosek_fusion_Model._match_alt_primalObjValue_(*args): 
      return self._primalObjValue_alt_(*args)
    else:
      raise ValueError('Invalid argument list primalObjValue('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.primalObjValue()')
  def getDualSolutionStatus(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_getDualSolutionStatus_(*args): 
      return self._getDualSolutionStatus_(*args)
    elif mosek_fusion_Model._match_alt_getDualSolutionStatus_(*args): 
      return self._getDualSolutionStatus_alt_(*args)
    elif mosek_fusion_Model._match_getDualSolutionStatus_Emosek_4fusion_4SolutionType_2(*args): 
      return self._getDualSolutionStatus_Emosek_4fusion_4SolutionType_2(*args)
    elif mosek_fusion_Model._match_alt_getDualSolutionStatus_Emosek_4fusion_4SolutionType_2(*args): 
      return self._getDualSolutionStatus_alt_Emosek_4fusion_4SolutionType_2(*args)
    else:
      raise ValueError('Invalid argument list getDualSolutionStatus('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.getDualSolutionStatus()\n\tmosek.fusion.Model.getDualSolutionStatus(mosek.fusion.SolutionType)')
  def getProblemStatus(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_getProblemStatus_(*args): 
      return self._getProblemStatus_(*args)
    elif mosek_fusion_Model._match_alt_getProblemStatus_(*args): 
      return self._getProblemStatus_alt_(*args)
    elif mosek_fusion_Model._match_getProblemStatus_Emosek_4fusion_4SolutionType_2(*args): 
      return self._getProblemStatus_Emosek_4fusion_4SolutionType_2(*args)
    elif mosek_fusion_Model._match_alt_getProblemStatus_Emosek_4fusion_4SolutionType_2(*args): 
      return self._getProblemStatus_alt_Emosek_4fusion_4SolutionType_2(*args)
    else:
      raise ValueError('Invalid argument list getProblemStatus('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.getProblemStatus()\n\tmosek.fusion.Model.getProblemStatus(mosek.fusion.SolutionType)')
  def hasParameter(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_hasParameter_S(*args): 
      return self._hasParameter_S(*args)
    elif mosek_fusion_Model._match_alt_hasParameter_S(*args): 
      return self._hasParameter_alt_S(*args)
    else:
      raise ValueError('Invalid argument list hasParameter('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.hasParameter(string)')
  def setCallbackHandler(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_setCallbackHandler_LSystem_4CallbackHandler_2(*args): 
      return self._setCallbackHandler_LSystem_4CallbackHandler_2(*args)
    elif mosek_fusion_Model._match_alt_setCallbackHandler_LSystem_4CallbackHandler_2(*args): 
      return self._setCallbackHandler_alt_LSystem_4CallbackHandler_2(*args)
    else:
      raise ValueError('Invalid argument list setCallbackHandler('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.setCallbackHandler(System.CallbackHandler)')
  def constraint(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_constraint_Lmosek_4fusion_4ExprRangeDomain_2(*args): 
      return self._constraint_Lmosek_4fusion_4ExprRangeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_constraint_Lmosek_4fusion_4ExprRangeDomain_2(*args): 
      return self._constraint_alt_Lmosek_4fusion_4ExprRangeDomain_2(*args)
    elif mosek_fusion_Model._match_constraint_Lmosek_4fusion_4ExprConicDomain_2(*args): 
      return self._constraint_Lmosek_4fusion_4ExprConicDomain_2(*args)
    elif mosek_fusion_Model._match_alt_constraint_Lmosek_4fusion_4ExprConicDomain_2(*args): 
      return self._constraint_alt_Lmosek_4fusion_4ExprConicDomain_2(*args)
    elif mosek_fusion_Model._match_constraint_Lmosek_4fusion_4ExprPSDDomain_2(*args): 
      return self._constraint_Lmosek_4fusion_4ExprPSDDomain_2(*args)
    elif mosek_fusion_Model._match_alt_constraint_Lmosek_4fusion_4ExprPSDDomain_2(*args): 
      return self._constraint_alt_Lmosek_4fusion_4ExprPSDDomain_2(*args)
    elif mosek_fusion_Model._match_constraint_Lmosek_4fusion_4ExprLinearDomain_2(*args): 
      return self._constraint_Lmosek_4fusion_4ExprLinearDomain_2(*args)
    elif mosek_fusion_Model._match_alt_constraint_Lmosek_4fusion_4ExprLinearDomain_2(*args): 
      return self._constraint_alt_Lmosek_4fusion_4ExprLinearDomain_2(*args)
    elif mosek_fusion_Model._match_constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args): 
      return self._constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args): 
      return self._constraint_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args)
    elif mosek_fusion_Model._match_constraint_SLmosek_4fusion_4ExprLinearDomain_2(*args): 
      return self._constraint_SLmosek_4fusion_4ExprLinearDomain_2(*args)
    elif mosek_fusion_Model._match_alt_constraint_SLmosek_4fusion_4ExprLinearDomain_2(*args): 
      return self._constraint_alt_SLmosek_4fusion_4ExprLinearDomain_2(*args)
    elif mosek_fusion_Model._match_constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args): 
      return self._constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args)
    elif mosek_fusion_Model._match_alt_constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args): 
      return self._constraint_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args)
    elif mosek_fusion_Model._match_constraint_SLmosek_4fusion_4ExprPSDDomain_2(*args): 
      return self._constraint_SLmosek_4fusion_4ExprPSDDomain_2(*args)
    elif mosek_fusion_Model._match_alt_constraint_SLmosek_4fusion_4ExprPSDDomain_2(*args): 
      return self._constraint_alt_SLmosek_4fusion_4ExprPSDDomain_2(*args)
    elif mosek_fusion_Model._match_constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args): 
      return self._constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args): 
      return self._constraint_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_Model._match_constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args): 
      return self._constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Model._match_alt_constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args): 
      return self._constraint_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Model._match_constraint_SLmosek_4fusion_4ExprRangeDomain_2(*args): 
      return self._constraint_SLmosek_4fusion_4ExprRangeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_constraint_SLmosek_4fusion_4ExprRangeDomain_2(*args): 
      return self._constraint_alt_SLmosek_4fusion_4ExprRangeDomain_2(*args)
    elif mosek_fusion_Model._match_constraint_SLmosek_4fusion_4ExprConicDomain_2(*args): 
      return self._constraint_SLmosek_4fusion_4ExprConicDomain_2(*args)
    elif mosek_fusion_Model._match_alt_constraint_SLmosek_4fusion_4ExprConicDomain_2(*args): 
      return self._constraint_alt_SLmosek_4fusion_4ExprConicDomain_2(*args)
    elif mosek_fusion_Model._match_constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args): 
      return self._constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args): 
      return self._constraint_alt_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_Model._match_constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args): 
      return self._constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Model._match_alt_constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args): 
      return self._constraint_alt_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Model._match_constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args): 
      return self._constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args)
    elif mosek_fusion_Model._match_alt_constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args): 
      return self._constraint_alt_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args)
    elif mosek_fusion_Model._match_constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args): 
      return self._constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args): 
      return self._constraint_alt_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args)
    else:
      raise ValueError('Invalid argument list constraint('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.constraint(mosek.fusion.ExprRangeDomain)\n\tmosek.fusion.Model.constraint(mosek.fusion.ExprConicDomain)\n\tmosek.fusion.Model.constraint(mosek.fusion.ExprPSDDomain)\n\tmosek.fusion.Model.constraint(mosek.fusion.ExprLinearDomain)\n\tmosek.fusion.Model.constraint(mosek.fusion.Expression,mosek.fusion.ConeDomain)\n\tmosek.fusion.Model.constraint(string,mosek.fusion.ExprLinearDomain)\n\tmosek.fusion.Model.constraint(mosek.fusion.Expression,mosek.fusion.PSDDomain)\n\tmosek.fusion.Model.constraint(string,mosek.fusion.ExprPSDDomain)\n\tmosek.fusion.Model.constraint(mosek.fusion.Expression,mosek.fusion.RangeDomain)\n\tmosek.fusion.Model.constraint(mosek.fusion.Expression,mosek.fusion.LinearDomain)\n\tmosek.fusion.Model.constraint(string,mosek.fusion.ExprRangeDomain)\n\tmosek.fusion.Model.constraint(string,mosek.fusion.ExprConicDomain)\n\tmosek.fusion.Model.constraint(string,mosek.fusion.Expression,mosek.fusion.RangeDomain)\n\tmosek.fusion.Model.constraint(string,mosek.fusion.Expression,mosek.fusion.LinearDomain)\n\tmosek.fusion.Model.constraint(string,mosek.fusion.Expression,mosek.fusion.PSDDomain)\n\tmosek.fusion.Model.constraint(string,mosek.fusion.Expression,mosek.fusion.ConeDomain)')
  @staticmethod
  def putlicensepath(*args):
    if False: pass
    elif mosek_fusion_Model._match_putlicensepath_S(*args): 
      return mosek_fusion_Model._putlicensepath_S(*args)
    elif mosek_fusion_Model._match_alt_putlicensepath_S(*args): 
      return mosek_fusion_Model._putlicensepath_alt_S(*args)
    else:
      raise ValueError('Invalid argument list putlicensepath('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.putlicensepath(string)')
  def setLogHandler(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_setLogHandler_LSystem_4StreamWriter_2(*args): 
      return self._setLogHandler_LSystem_4StreamWriter_2(*args)
    elif mosek_fusion_Model._match_alt_setLogHandler_LSystem_4StreamWriter_2(*args): 
      return self._setLogHandler_alt_LSystem_4StreamWriter_2(*args)
    else:
      raise ValueError('Invalid argument list setLogHandler('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.setLogHandler(System.StreamWriter)')
  def writeTask(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_writeTask_S(*args): 
      return self._writeTask_S(*args)
    elif mosek_fusion_Model._match_alt_writeTask_S(*args): 
      return self._writeTask_alt_S(*args)
    else:
      raise ValueError('Invalid argument list writeTask('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.writeTask(string)')
  def getVariableValues(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_getVariableValues_Z_3J_3DI(*args): 
      return self._getVariableValues_Z_3J_3DI(*args)
    elif mosek_fusion_Model._match_alt_getVariableValues_Z_3J_3DI(*args): 
      return self._getVariableValues_alt_Z_3J_3DI(*args)
    else:
      raise ValueError('Invalid argument list getVariableValues('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.getVariableValues(bool,array(int64,ndim=1),array(double,ndim=1),int32)')
  def solve(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_solve_(*args): 
      return self._solve_(*args)
    elif mosek_fusion_Model._match_alt_solve_(*args): 
      return self._solve_alt_(*args)
    elif mosek_fusion_Model._match_solve_SS(*args): 
      return self._solve_SS(*args)
    elif mosek_fusion_Model._match_alt_solve_SS(*args): 
      return self._solve_alt_SS(*args)
    else:
      raise ValueError('Invalid argument list solve('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.solve()\n\tmosek.fusion.Model.solve(string,string)')
  def updateObjective(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_updateObjective_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(*args): 
      return self._updateObjective_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Model._match_alt_updateObjective_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(*args): 
      return self._updateObjective_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(*args)
    else:
      raise ValueError('Invalid argument list updateObjective('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.updateObjective(mosek.fusion.Expression,mosek.fusion.Variable)')
  def getConstraintValues(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_getConstraintValues_Z_3I_3DI(*args): 
      return self._getConstraintValues_Z_3I_3DI(*args)
    elif mosek_fusion_Model._match_alt_getConstraintValues_Z_3I_3DI(*args): 
      return self._getConstraintValues_alt_Z_3I_3DI(*args)
    else:
      raise ValueError('Invalid argument list getConstraintValues('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.getConstraintValues(bool,array(int32,ndim=1),array(double,ndim=1),int32)')
  def dispose(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_dispose_(*args): 
      return self._dispose_(*args)
    elif mosek_fusion_Model._match_alt_dispose_(*args): 
      return self._dispose_alt_(*args)
    else:
      raise ValueError('Invalid argument list dispose('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.dispose()')
  def dataReport(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_dataReport_(*args): 
      return self._dataReport_(*args)
    elif mosek_fusion_Model._match_alt_dataReport_(*args): 
      return self._dataReport_alt_(*args)
    elif mosek_fusion_Model._match_dataReport_I(*args): 
      return self._dataReport_I(*args)
    elif mosek_fusion_Model._match_alt_dataReport_I(*args): 
      return self._dataReport_alt_I(*args)
    else:
      raise ValueError('Invalid argument list dataReport('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.dataReport()\n\tmosek.fusion.Model.dataReport(int32)')
  @staticmethod
  def solveBatch(*args):
    if False: pass
    elif mosek_fusion_Model._match_solveBatch_ZDI_3Lmosek_4fusion_4Model_2(*args): 
      return mosek_fusion_Model._solveBatch_ZDI_3Lmosek_4fusion_4Model_2(*args)
    elif mosek_fusion_Model._match_alt_solveBatch_ZDI_3Lmosek_4fusion_4Model_2(*args): 
      return mosek_fusion_Model._solveBatch_alt_ZDI_3Lmosek_4fusion_4Model_2(*args)
    else:
      raise ValueError('Invalid argument list solveBatch('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.solveBatch(bool,double,int32,array(mosek.fusion.Model,ndim=1))')
  def getParameter(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_getParameter_S(*args): 
      return self._getParameter_S(*args)
    elif mosek_fusion_Model._match_alt_getParameter_S(*args): 
      return self._getParameter_alt_S(*args)
    else:
      raise ValueError('Invalid argument list getParameter('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.getParameter(string)')
  def flushSolutions(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_flushSolutions_(*args): 
      return self._flushSolutions_(*args)
    elif mosek_fusion_Model._match_alt_flushSolutions_(*args): 
      return self._flushSolutions_alt_(*args)
    else:
      raise ValueError('Invalid argument list flushSolutions('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.flushSolutions()')
  def objective(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_objective_D(*args): 
      return self._objective_D(*args)
    elif mosek_fusion_Model._match_alt_objective_D(*args): 
      return self._objective_alt_D(*args)
    elif mosek_fusion_Model._match_objective_SD(*args): 
      return self._objective_SD(*args)
    elif mosek_fusion_Model._match_alt_objective_SD(*args): 
      return self._objective_alt_SD(*args)
    elif mosek_fusion_Model._match_objective_Emosek_4fusion_4ObjectiveSense_2D(*args): 
      return self._objective_Emosek_4fusion_4ObjectiveSense_2D(*args)
    elif mosek_fusion_Model._match_alt_objective_Emosek_4fusion_4ObjectiveSense_2D(*args): 
      return self._objective_alt_Emosek_4fusion_4ObjectiveSense_2D(*args)
    elif mosek_fusion_Model._match_objective_Emosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(*args): 
      return self._objective_Emosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Model._match_alt_objective_Emosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(*args): 
      return self._objective_alt_Emosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Model._match_objective_SEmosek_4fusion_4ObjectiveSense_2D(*args): 
      return self._objective_SEmosek_4fusion_4ObjectiveSense_2D(*args)
    elif mosek_fusion_Model._match_alt_objective_SEmosek_4fusion_4ObjectiveSense_2D(*args): 
      return self._objective_alt_SEmosek_4fusion_4ObjectiveSense_2D(*args)
    elif mosek_fusion_Model._match_objective_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(*args): 
      return self._objective_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Model._match_alt_objective_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(*args): 
      return self._objective_alt_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list objective('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.objective(double)\n\tmosek.fusion.Model.objective(string,double)\n\tmosek.fusion.Model.objective(mosek.fusion.ObjectiveSense,double)\n\tmosek.fusion.Model.objective(mosek.fusion.ObjectiveSense,mosek.fusion.Expression)\n\tmosek.fusion.Model.objective(string,mosek.fusion.ObjectiveSense,double)\n\tmosek.fusion.Model.objective(string,mosek.fusion.ObjectiveSense,mosek.fusion.Expression)')
  def getSolverDoubleInfo(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_getSolverDoubleInfo_S(*args): 
      return self._getSolverDoubleInfo_S(*args)
    elif mosek_fusion_Model._match_alt_getSolverDoubleInfo_S(*args): 
      return self._getSolverDoubleInfo_alt_S(*args)
    else:
      raise ValueError('Invalid argument list getSolverDoubleInfo('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.getSolverDoubleInfo(string)')
  @staticmethod
  def getVersion(*args):
    if False: pass
    elif mosek_fusion_Model._match_getVersion_(*args): 
      return mosek_fusion_Model._getVersion_(*args)
    elif mosek_fusion_Model._match_alt_getVersion_(*args): 
      return mosek_fusion_Model._getVersion_alt_(*args)
    else:
      raise ValueError('Invalid argument list getVersion('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.getVersion()')
  def variable(self,*args):
    if False: pass
    elif mosek_fusion_Model._match_variable_(*args): 
      return self._variable_(*args)
    elif mosek_fusion_Model._match_alt_variable_(*args): 
      return self._variable_alt_(*args)
    elif mosek_fusion_Model._match_variable_Lmosek_4fusion_4RangeDomain_2(*args): 
      return self._variable_Lmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_Lmosek_4fusion_4RangeDomain_2(*args): 
      return self._variable_alt_Lmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_Model._match_variable_S(*args): 
      return self._variable_S(*args)
    elif mosek_fusion_Model._match_alt_variable_S(*args): 
      return self._variable_alt_S(*args)
    elif mosek_fusion_Model._match_variable_Lmosek_4fusion_4LinearDomain_2(*args): 
      return self._variable_Lmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_Lmosek_4fusion_4LinearDomain_2(*args): 
      return self._variable_alt_Lmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Model._match_variable_I(*args): 
      return self._variable_I(*args)
    elif mosek_fusion_Model._match_alt_variable_I(*args): 
      return self._variable_alt_I(*args)
    elif mosek_fusion_Model._match_variable_Lmosek_4fusion_4ConeDomain_2(*args): 
      return self._variable_Lmosek_4fusion_4ConeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_Lmosek_4fusion_4ConeDomain_2(*args): 
      return self._variable_alt_Lmosek_4fusion_4ConeDomain_2(*args)
    elif mosek_fusion_Model._match_variable__3I(*args): 
      return self._variable__3I(*args)
    elif mosek_fusion_Model._match_alt_variable__3I(*args): 
      return self._variable_alt__3I(*args)
    elif mosek_fusion_Model._match_variable_Lmosek_4fusion_4PSDDomain_2(*args): 
      return self._variable_Lmosek_4fusion_4PSDDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_Lmosek_4fusion_4PSDDomain_2(*args): 
      return self._variable_alt_Lmosek_4fusion_4PSDDomain_2(*args)
    elif mosek_fusion_Model._match_variable_SLmosek_4fusion_4LinearDomain_2(*args): 
      return self._variable_SLmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_SLmosek_4fusion_4LinearDomain_2(*args): 
      return self._variable_alt_SLmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Model._match_variable_SLmosek_4fusion_4PSDDomain_2(*args): 
      return self._variable_SLmosek_4fusion_4PSDDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_SLmosek_4fusion_4PSDDomain_2(*args): 
      return self._variable_alt_SLmosek_4fusion_4PSDDomain_2(*args)
    elif mosek_fusion_Model._match_variable__3ILmosek_4fusion_4ConeDomain_2(*args): 
      return self._variable__3ILmosek_4fusion_4ConeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable__3ILmosek_4fusion_4ConeDomain_2(*args): 
      return self._variable_alt__3ILmosek_4fusion_4ConeDomain_2(*args)
    elif mosek_fusion_Model._match_variable__3ILmosek_4fusion_4RangeDomain_2(*args): 
      return self._variable__3ILmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable__3ILmosek_4fusion_4RangeDomain_2(*args): 
      return self._variable_alt__3ILmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_Model._match_variable_SI(*args): 
      return self._variable_SI(*args)
    elif mosek_fusion_Model._match_alt_variable_SI(*args): 
      return self._variable_alt_SI(*args)
    elif mosek_fusion_Model._match_variable__3ILmosek_4fusion_4LinearDomain_2(*args): 
      return self._variable__3ILmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable__3ILmosek_4fusion_4LinearDomain_2(*args): 
      return self._variable_alt__3ILmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Model._match_variable_ILmosek_4fusion_4LinearDomain_2(*args): 
      return self._variable_ILmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_ILmosek_4fusion_4LinearDomain_2(*args): 
      return self._variable_alt_ILmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Model._match_variable_S_3I(*args): 
      return self._variable_S_3I(*args)
    elif mosek_fusion_Model._match_alt_variable_S_3I(*args): 
      return self._variable_alt_S_3I(*args)
    elif mosek_fusion_Model._match_variable_ILmosek_4fusion_4RangeDomain_2(*args): 
      return self._variable_ILmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_ILmosek_4fusion_4RangeDomain_2(*args): 
      return self._variable_alt_ILmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_Model._match_variable_ILmosek_4fusion_4ConeDomain_2(*args): 
      return self._variable_ILmosek_4fusion_4ConeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_ILmosek_4fusion_4ConeDomain_2(*args): 
      return self._variable_alt_ILmosek_4fusion_4ConeDomain_2(*args)
    elif mosek_fusion_Model._match_variable_SLmosek_4fusion_4ConeDomain_2(*args): 
      return self._variable_SLmosek_4fusion_4ConeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_SLmosek_4fusion_4ConeDomain_2(*args): 
      return self._variable_alt_SLmosek_4fusion_4ConeDomain_2(*args)
    elif mosek_fusion_Model._match_variable_SLmosek_4fusion_4RangeDomain_2(*args): 
      return self._variable_SLmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_SLmosek_4fusion_4RangeDomain_2(*args): 
      return self._variable_alt_SLmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_Model._match_variable_ILmosek_4fusion_4PSDDomain_2(*args): 
      return self._variable_ILmosek_4fusion_4PSDDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_ILmosek_4fusion_4PSDDomain_2(*args): 
      return self._variable_alt_ILmosek_4fusion_4PSDDomain_2(*args)
    elif mosek_fusion_Model._match_variable_S_3ILmosek_4fusion_4RangeDomain_2(*args): 
      return self._variable_S_3ILmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_S_3ILmosek_4fusion_4RangeDomain_2(*args): 
      return self._variable_alt_S_3ILmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_Model._match_variable_S_3ILmosek_4fusion_4LinearDomain_2(*args): 
      return self._variable_S_3ILmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_S_3ILmosek_4fusion_4LinearDomain_2(*args): 
      return self._variable_alt_S_3ILmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Model._match_variable_SILmosek_4fusion_4ConeDomain_2(*args): 
      return self._variable_SILmosek_4fusion_4ConeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_SILmosek_4fusion_4ConeDomain_2(*args): 
      return self._variable_alt_SILmosek_4fusion_4ConeDomain_2(*args)
    elif mosek_fusion_Model._match_variable_IILmosek_4fusion_4PSDDomain_2(*args): 
      return self._variable_IILmosek_4fusion_4PSDDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_IILmosek_4fusion_4PSDDomain_2(*args): 
      return self._variable_alt_IILmosek_4fusion_4PSDDomain_2(*args)
    elif mosek_fusion_Model._match_variable_S_3ILmosek_4fusion_4ConeDomain_2(*args): 
      return self._variable_S_3ILmosek_4fusion_4ConeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_S_3ILmosek_4fusion_4ConeDomain_2(*args): 
      return self._variable_alt_S_3ILmosek_4fusion_4ConeDomain_2(*args)
    elif mosek_fusion_Model._match_variable_S_3ILmosek_4fusion_4PSDDomain_2(*args): 
      return self._variable_S_3ILmosek_4fusion_4PSDDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_S_3ILmosek_4fusion_4PSDDomain_2(*args): 
      return self._variable_alt_S_3ILmosek_4fusion_4PSDDomain_2(*args)
    elif mosek_fusion_Model._match_variable_SILmosek_4fusion_4RangeDomain_2(*args): 
      return self._variable_SILmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_SILmosek_4fusion_4RangeDomain_2(*args): 
      return self._variable_alt_SILmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_Model._match_variable_SILmosek_4fusion_4PSDDomain_2(*args): 
      return self._variable_SILmosek_4fusion_4PSDDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_SILmosek_4fusion_4PSDDomain_2(*args): 
      return self._variable_alt_SILmosek_4fusion_4PSDDomain_2(*args)
    elif mosek_fusion_Model._match_variable_SILmosek_4fusion_4LinearDomain_2(*args): 
      return self._variable_SILmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_SILmosek_4fusion_4LinearDomain_2(*args): 
      return self._variable_alt_SILmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Model._match_variable_SIILmosek_4fusion_4PSDDomain_2(*args): 
      return self._variable_SIILmosek_4fusion_4PSDDomain_2(*args)
    elif mosek_fusion_Model._match_alt_variable_SIILmosek_4fusion_4PSDDomain_2(*args): 
      return self._variable_alt_SIILmosek_4fusion_4PSDDomain_2(*args)
    else:
      raise ValueError('Invalid argument list variable('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Model.variable()\n\tmosek.fusion.Model.variable(mosek.fusion.RangeDomain)\n\tmosek.fusion.Model.variable(string)\n\tmosek.fusion.Model.variable(mosek.fusion.LinearDomain)\n\tmosek.fusion.Model.variable(int32)\n\tmosek.fusion.Model.variable(mosek.fusion.ConeDomain)\n\tmosek.fusion.Model.variable(array(int32,ndim=1))\n\tmosek.fusion.Model.variable(mosek.fusion.PSDDomain)\n\tmosek.fusion.Model.variable(string,mosek.fusion.LinearDomain)\n\tmosek.fusion.Model.variable(string,mosek.fusion.PSDDomain)\n\tmosek.fusion.Model.variable(array(int32,ndim=1),mosek.fusion.ConeDomain)\n\tmosek.fusion.Model.variable(array(int32,ndim=1),mosek.fusion.RangeDomain)\n\tmosek.fusion.Model.variable(string,int32)\n\tmosek.fusion.Model.variable(array(int32,ndim=1),mosek.fusion.LinearDomain)\n\tmosek.fusion.Model.variable(int32,mosek.fusion.LinearDomain)\n\tmosek.fusion.Model.variable(string,array(int32,ndim=1))\n\tmosek.fusion.Model.variable(int32,mosek.fusion.RangeDomain)\n\tmosek.fusion.Model.variable(int32,mosek.fusion.ConeDomain)\n\tmosek.fusion.Model.variable(string,mosek.fusion.ConeDomain)\n\tmosek.fusion.Model.variable(string,mosek.fusion.RangeDomain)\n\tmosek.fusion.Model.variable(int32,mosek.fusion.PSDDomain)\n\tmosek.fusion.Model.variable(string,array(int32,ndim=1),mosek.fusion.RangeDomain)\n\tmosek.fusion.Model.variable(string,array(int32,ndim=1),mosek.fusion.LinearDomain)\n\tmosek.fusion.Model.variable(string,int32,mosek.fusion.ConeDomain)\n\tmosek.fusion.Model.variable(int32,int32,mosek.fusion.PSDDomain)\n\tmosek.fusion.Model.variable(string,array(int32,ndim=1),mosek.fusion.ConeDomain)\n\tmosek.fusion.Model.variable(string,array(int32,ndim=1),mosek.fusion.PSDDomain)\n\tmosek.fusion.Model.variable(string,int32,mosek.fusion.RangeDomain)\n\tmosek.fusion.Model.variable(string,int32,mosek.fusion.PSDDomain)\n\tmosek.fusion.Model.variable(string,int32,mosek.fusion.LinearDomain)\n\tmosek.fusion.Model.variable(string,int32,int32,mosek.fusion.PSDDomain)')
  def __repr__(self): return 'mosek.fusion.Model'
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2(m):
    o = Model.__new__(Model)
    o._ctor_init_Lmosek_4fusion_4Model_2(m)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2(*args):
    if len(args) != 1: return False
    m, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(m))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2(*args):
    if len(args) != 1: return False
    m, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(m))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2(self,m):
    self._ctor_init_Lmosek_4fusion_4Model_2(m)
  def _ctor_init_Lmosek_4fusion_4Model_2(self,m):
   mosek_fusion_BaseModel._ctor_init_Lmosek_4fusion_4BaseModel_2(self,m)
   _0=self
   self.__model_name = (m.__model_name)
   self.__acceptable_sol = (m.__acceptable_sol)
   self.__solutionptr = (m.__solutionptr)
   self.__cache_evaluations = (m.__cache_evaluations)
   self.__sol_itr = ((m.__sol_itr).clone() if (((m.__sol_itr) is not None) ) else None)
   self.__sol_itg = ((m.__sol_itg).clone() if (((m.__sol_itg) is not None) ) else None)
   self.__sol_bas = ((m.__sol_bas).clone() if (((m.__sol_bas) is not None) ) else None)
   self.__num_task_afe = (m.__num_task_afe)
   self.__num_task_con = (m.__num_task_con)
   self.__num_task_acc = (m.__num_task_acc)
   self.__con_blocks = mosek_fusion_RowBlockManager._ctor_Lmosek_4fusion_4RowBlockManager_2((m.__con_blocks))
   self.__afe_blocks = mosek_fusion_RowBlockManager._ctor_Lmosek_4fusion_4RowBlockManager_2((m.__afe_blocks))
   self.__obj_blocks = mosek_fusion_RowBlockManager._ctor_Lmosek_4fusion_4RowBlockManager_2((m.__obj_blocks))
   self.__acc_block_map = mosek_fusion_LinkedBlocks._ctor_Lmosek_4fusion_4LinkedBlocks_2((m.__acc_block_map))
   self.__acon_block_map = mosek_fusion_LinkedBlocks._ctor_Lmosek_4fusion_4LinkedBlocks_2((m.__acon_block_map))
   self.__acon_acc = mosek.fusion.Utils.Tools._arraycopy__3I((m.__acon_acc))
   self.__acon_afe = mosek.fusion.Utils.Tools._arraycopy__3I((m.__acon_afe))
   self.__acon_elm_accid = mosek.fusion.Utils.Tools._arraycopy__3I((m.__acon_elm_accid))
   self.__acon_elm_scale = mosek.fusion.Utils.Tools._arraycopy__3D((m.__acon_elm_scale))
   self.__acon_elm_ofs = mosek.fusion.Utils.Tools._arraycopy__3I((m.__acon_elm_ofs))
   self.__acon_elm_afe = mosek.fusion.Utils.Tools._arraycopy__3I((m.__acon_elm_afe))
   self.__task_numaferow = (m.__task_numaferow)
   self.__var_block_map = mosek_fusion_LinkedBlocks._ctor_Lmosek_4fusion_4LinkedBlocks_2((m.__var_block_map))
   self.__var_block_acc_id = mosek.fusion.Utils.Tools._arraycopy__3I((m.__var_block_acc_id))
   self.__var_elm_acc_idx = mosek.fusion.Utils.Tools._arraycopy__3I((m.__var_elm_acc_idx))
   self.__var_elm_acc_ofs = mosek.fusion.Utils.Tools._arraycopy__3I((m.__var_elm_acc_ofs))
   self.__barvar_num = 0
   self.__barvar_dim = mosek.fusion.Utils.Tools._arraycopy__3I((m.__barvar_dim))
   self.__barvar_block_ptr = mosek.fusion.Utils.Tools._arraycopy__3I((m.__barvar_block_ptr))
   self.__barvar_block_dim = mosek.fusion.Utils.Tools._arraycopy__3I((m.__barvar_block_dim))
   self.__barvar_block_elm_ptr = mosek.fusion.Utils.Tools._arraycopy__3I((m.__barvar_block_elm_ptr))
   self.__barvar_block_elm_barj = mosek.fusion.Utils.Tools._arraycopy__3I((m.__barvar_block_elm_barj))
   self.__barvar_block_elm_i = mosek.fusion.Utils.Tools._arraycopy__3I((m.__barvar_block_elm_i))
   self.__barvar_block_elm_j = mosek.fusion.Utils.Tools._arraycopy__3I((m.__barvar_block_elm_j))
   self.__vars = numpy.array([((m.__vars)[_1]._clone_Lmosek_4fusion_4Model_2(_0) if (((m.__vars)[_1] is not None) ) else None) for _1 in range(0,int(((m.__vars)).shape[0]))], dtype=numpy.dtype(object))
   self.__barvars = numpy.array([((m.__barvars)[_2]._clone_Lmosek_4fusion_4Model_2(_0) if (((m.__barvars)[_2] is not None) ) else None) for _2 in range(0,int(((m.__barvars)).shape[0]))], dtype=numpy.dtype(object))
   self.__var_map = (m.__var_map)._clone_()
   self.__cons = numpy.array([((m.__cons)[_3]._clone_Lmosek_4fusion_4Model_2(_0) if (((m.__cons)[_3] is not None) ) else None) for _3 in range(0,int(((m.__cons)).shape[0]))], dtype=numpy.dtype(object))
   self.__acons = numpy.array([((m.__acons)[_4]._clone_Lmosek_4fusion_4Model_2(_0) if (((m.__acons)[_4] is not None) ) else None) for _4 in range(0,int(((m.__acons)).shape[0]))], dtype=numpy.dtype(object))
   self.__con_map = (m.__con_map)._clone_()
   self.__numparameter = (m.__numparameter)
   self.__parameters = (None if (((m.__parameters) is None) ) else numpy.array([((m.__parameters)[_5].clone(_0) if (((m.__parameters)[_5] is not None) ) else None) for _5 in range(0,int(((m.__parameters)).shape[0]))], dtype=numpy.dtype(object)))
   self.__par_map = (m.__par_map)._clone_()
   self.__param_num = (m.__param_num)
   self.__param_value = (mosek.fusion.Utils.Tools._arraycopy__3D((m.__param_value)) if (((m.__param_value) is not None) ) else None)
   self.__initsol_xx = None
   self.__initsol_xx_flag = None
   self.__bfixidx = (m.__bfixidx)
   self.__rs = mosek_fusion_WorkStack._ctor_()
   self.__ws = mosek_fusion_WorkStack._ctor_()
   self.__xs = mosek_fusion_WorkStack._ctor_()
  @staticmethod
  def _ctor_SIZ(name,basesize,cache_eval):
    o = Model.__new__(Model)
    o._ctor_init_SIZ(name,basesize,cache_eval)
    return o
  @staticmethod
  def __match_ctor_SIZ(*args):
    if len(args) != 3: return False
    name,basesize,cache_eval, = args
    return (__arg_match_S__(name) and __arg_match_I__(basesize) and __arg_match_Z__(cache_eval))
  @staticmethod
  def __match_alt_ctor_SIZ(*args):
    if len(args) != 3: return False
    name,basesize,cache_eval, = args
    return (__arg_alt_match_S__(name) and __arg_alt_match_I__(basesize) and __arg_alt_match_Z__(cache_eval))
  def _ctor_alt_init_SIZ(self,name,basesize,cache_eval):
    self._ctor_init_SIZ(name,numpy.int32(basesize),cache_eval)
  def _ctor_init_SIZ(self,name,basesize,cache_eval):
   mosek_fusion_BaseModel._ctor_init_SS(self,name,"")
   self.__model_name = name
   self.__acceptable_sol = mosek.fusion.AccSolutionStatus.Optimal
   self.__solutionptr = mosek.fusion.SolutionType.Default
   self.__cache_evaluations = cache_eval
   self.__sol_itr = None
   self.__sol_itg = None
   self.__sol_bas = None
   self.__num_task_afe = 0
   self.__num_task_con = 0
   self.__num_task_acc = 0
   self.__con_blocks = mosek_fusion_RowBlockManager._ctor_()
   self.__afe_blocks = mosek_fusion_RowBlockManager._ctor_()
   self.__obj_blocks = mosek_fusion_RowBlockManager._ctor_()
   self.__acc_block_map = mosek_fusion_LinkedBlocks._ctor_()
   self.__acon_block_map = mosek_fusion_LinkedBlocks._ctor_()
   self.__task_numaferow = 0
   self.__acon_acc = numpy.zeros((self.__acon_block_map.block_capacity(),), dtype=numpy.dtype(numpy.int32))
   self.__acon_afe = numpy.zeros((self.__acon_block_map.block_capacity(),), dtype=numpy.dtype(numpy.int32))
   self.__acon_elm_accid = numpy.zeros((self.__acon_block_map.capacity(),), dtype=numpy.dtype(numpy.int32))
   self.__acon_elm_scale = numpy.array([1.0 for _0 in range(0,self.__acon_block_map.capacity())], dtype=numpy.dtype(numpy.float64))
   self.__acon_elm_ofs = numpy.zeros((self.__acon_block_map.capacity(),), dtype=numpy.dtype(numpy.int32))
   self.__acon_elm_afe = numpy.zeros((self.__acon_block_map.capacity(),), dtype=numpy.dtype(numpy.int32))
   self.__var_block_map = mosek_fusion_LinkedBlocks._ctor_()
   self.__var_block_acc_id = numpy.zeros((self.__var_block_map.block_capacity(),), dtype=numpy.dtype(numpy.int32))
   self.__var_elm_acc_idx = numpy.zeros((self.__var_block_map.capacity(),), dtype=numpy.dtype(numpy.int32))
   self.__var_elm_acc_ofs = numpy.zeros((self.__var_block_map.capacity(),), dtype=numpy.dtype(numpy.int32))
   self.__barvar_num = 0
   self.__barvar_dim = numpy.zeros((basesize,), dtype=numpy.dtype(numpy.int32))
   self.__barvar_block_ptr = numpy.zeros(((basesize + 1),), dtype=numpy.dtype(numpy.int32))
   self.__barvar_block_dim = numpy.zeros((basesize,), dtype=numpy.dtype(numpy.int32))
   self.__barvar_block_elm_ptr = numpy.zeros(((basesize + 1),), dtype=numpy.dtype(numpy.int32))
   self.__barvar_block_elm_barj = numpy.zeros((basesize,), dtype=numpy.dtype(numpy.int32))
   self.__barvar_block_elm_i = numpy.zeros((basesize,), dtype=numpy.dtype(numpy.int32))
   self.__barvar_block_elm_j = numpy.zeros((basesize,), dtype=numpy.dtype(numpy.int32))
   self.__vars = numpy.array([None for _1 in range(0,(basesize * 8))], dtype=numpy.dtype(object))
   self.__barvars = numpy.array([None for _2 in range(0,basesize)], dtype=numpy.dtype(object))
   self.__var_map = mosek.fusion.Utils.StringIntMap()
   self.__initsol_xx = None
   self.__initsol_xx_flag = None
   self.__cons = numpy.array([None for _3 in range(0,(basesize * 8))], dtype=numpy.dtype(object))
   self.__acons = numpy.array([None for _4 in range(0,(basesize * 8))], dtype=numpy.dtype(object))
   self.__con_map = mosek.fusion.Utils.StringIntMap()
   self.__numparameter = 0
   self.__parameters = None
   self.__par_map = mosek.fusion.Utils.StringIntMap()
   self.__param_num = 0
   self.__param_value = None
   _5=numpy.zeros((1,), dtype=numpy.dtype(numpy.int32))
   _6=self.__linearvar_1alloc_I_3I(1,_5)
   self.__bfixidx = _5[0]
   self._task_1var_1putboundlist_1fx__3I_3D(numpy.array([self.__bfixidx], dtype=numpy.dtype(numpy.int32)),numpy.array([1.0], dtype=numpy.dtype(numpy.float64)))
   self._task_1var_1name_IS(self.__bfixidx,"1.0")
   self._task_1append_1domain_1empty_()
   self.__rs = mosek_fusion_WorkStack._ctor_()
   self.__ws = mosek_fusion_WorkStack._ctor_()
   self.__xs = mosek_fusion_WorkStack._ctor_()
  @staticmethod
  def _ctor_IZ(basesize,cache_eval):
    o = Model.__new__(Model)
    o._ctor_init_IZ(basesize,cache_eval)
    return o
  @staticmethod
  def __match_ctor_IZ(*args):
    if len(args) != 2: return False
    basesize,cache_eval, = args
    return (__arg_match_I__(basesize) and __arg_match_Z__(cache_eval))
  @staticmethod
  def __match_alt_ctor_IZ(*args):
    if len(args) != 2: return False
    basesize,cache_eval, = args
    return (__arg_alt_match_I__(basesize) and __arg_alt_match_Z__(cache_eval))
  def _ctor_alt_init_IZ(self,basesize,cache_eval):
    self._ctor_init_IZ(numpy.int32(basesize),cache_eval)
  def _ctor_init_IZ(self,basesize,cache_eval):
   mosek_fusion_Model._ctor_init_SIZ(self,"",basesize,cache_eval)
  @staticmethod
  def _ctor_S(name):
    o = Model.__new__(Model)
    o._ctor_init_S(name)
    return o
  @staticmethod
  def __match_ctor_S(*args):
    if len(args) != 1: return False
    name, = args
    return (__arg_match_S__(name))
  @staticmethod
  def __match_alt_ctor_S(*args):
    if len(args) != 1: return False
    name, = args
    return (__arg_alt_match_S__(name))
  def _ctor_alt_init_S(self,name):
    self._ctor_init_S(name)
  def _ctor_init_S(self,name):
   mosek_fusion_Model._ctor_init_SIZ(self,name,128,False)
  @staticmethod
  def _ctor_():
    o = Model.__new__(Model)
    o._ctor_init_()
    return o
  @staticmethod
  def __match_ctor_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def __match_alt_ctor_(*args):
    if len(args) != 0: return False
    return True
  def _ctor_alt_init_(self,):
    self._ctor_init_()
  def _ctor_init_(self,):
   mosek_fusion_Model._ctor_init_SIZ(self,"",128,False)
  @staticmethod
  def _match_disjunction_S_3Lmosek_4fusion_4Term_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match__3Lmosek_4fusion_4Term_2__(_1))
  @staticmethod
  def _match_alt_disjunction_S_3Lmosek_4fusion_4Term_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match__3Lmosek_4fusion_4Term_2__(_1))
  def _disjunction_alt_S_3Lmosek_4fusion_4Term_2(self,_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(object))
   _1_res = self._disjunction_S_3Lmosek_4fusion_4Term_2(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _disjunction_S_3Lmosek_4fusion_4Term_2(self,_0,_1):
   _2=int((_1).shape[0])
   _3=0
   _4=0
   _5=0
   _6=0
   for _7 in range(0,_2):
    _3 += _1[_7].size()
    _4 += _1[_7]._num_()
    _6 += _1[_7]._numaccrows_()
    _5 += _1[_7]._numaccterms_()
   _8=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
   _9=numpy.zeros((_6,), dtype=numpy.dtype(numpy.int32))
   _10=numpy.zeros((_6,), dtype=numpy.dtype(numpy.float64))
   _11=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int64))
   _12=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int64))
   _13=self.__afe_1allocate__3I(_8)
   _14=0
   _15=0
   _16=0
   _17=0
   for _18 in range(0,_2):
    for _19 in range(0,_1[_18]._num_()):
     _20=(_1[_18]._domains)[_19]
     _21=mosek_fusion_ExprDense._ctor_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprOptimizeCode._ctor_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprCompress._ctor_Lmosek_4fusion_4Expression_2((_1[_18]._exprs)[_19])))
     _21.recursive_eval(self.__rs,self.__ws,self.__xs,self.__cache_evaluations)
     self.__rs.pop_expr()
     _22=(self.__rs.i32)
     _23=(self.__rs.i64)
     _24=(self.__rs.f64)
     _25=(self.__rs.nd)
     _26=(self.__rs.shape_base)
     _27=(self.__rs.nelem)
     _28=(self.__rs.nnz)
     _29=(self.__rs.ncodeatom)
     _30=(self.__rs.hassp)
     _31=(self.__rs.ptr_base)
     _32=(self.__rs.nidxs_base)
     _33=(self.__rs.cof_base)
     _34=(self.__rs.code_base)
     _35=(self.__rs.codeptr_base)
     _36=(self.__rs.cconst_base)
     _37=numpy.array([_22[(_26 + _38)] for _38 in range(0,_25)], dtype=numpy.dtype(numpy.int32))
     self.__putfrows__3IILmosek_4fusion_4WorkStack_2IIIII(_8,_17,self.__rs,_27,_28,_31,_32,_33)
     if ((_20.dom)==mosek.fusion.DJCDomainType.InRange):
      _39=(_20.b)
      _40=(_20.par)
      for _41 in range(0,_27):
       _9[(_16 + _41)] = _8[(_17 + _41)]
       _9[((_16 + _27) + _41)] = _8[(_17 + _41)]
       _10[(_16 + _41)] = _39[_41]
       _10[((_16 + _27) + _41)] = _40[_41]
      _11[_15] = self._task_1append_1domain_1rpos_I(_27)
      _11[(_15 + 1)] = self._task_1append_1domain_1rneg_I(_27)
      _12[_18] += 2
      _15 += 2
      _16 += (_27 * 2)
     elif (((_20.dom)==mosek.fusion.DJCDomainType.EqualTo) or (((_20.dom)==mosek.fusion.DJCDomainType.LessThan) or (((_20.dom)==mosek.fusion.DJCDomainType.GreaterThan) or ((_20.dom)==mosek.fusion.DJCDomainType.IsFree)))): # bld/grindsted/final/default/src/fusion/Model.mbi:4890:20-4893:51
      _42=(_20.b)
      for _43 in range(0,_27):
       _9[(_16 + _43)] = _8[(_17 + _43)]
       _10[(_16 + _43)] = _42[_43]
      if ((_20.dom)==mosek.fusion.DJCDomainType.EqualTo):
       _11[_15] = self._task_1append_1domain_1rzero_I(_27)
      elif ((_20.dom)==mosek.fusion.DJCDomainType.LessThan): # bld/grindsted/final/default/src/fusion/Model.mbi:4903:22-55
       _11[_15] = self._task_1append_1domain_1rneg_I(_27)
      elif ((_20.dom)==mosek.fusion.DJCDomainType.GreaterThan): # bld/grindsted/final/default/src/fusion/Model.mbi:4905:22-58
       _11[_15] = self._task_1append_1domain_1rpos_I(_27)
      else:
       _11[_15] = self._task_1append_1domain_1r_I(_27)
      _12[_18] += 1
      _15 += 1
      _16 += _27
     else:
      raise mosek_fusion_UnexpectedError._ctor_S("Not implemented: Non-linear conic DJC constraints")
     if (_29 > 0):
      self.__afe_blocks.replace_row_code(self.__rs,numpy.array([_8[(_17 + _44)] for _44 in range(0,_27)], dtype=numpy.dtype(numpy.int32)),_31,_32,_35,_34,_36)
     _17 += _27
     _14 += 1
   _45=self._task_1append_1djc_J(1)
   self._task_1putdjcslice_JJ_3J_3J_3J_3J_3D(_45,(_45 + 1),numpy.array([numpy.int64(_2)], dtype=numpy.dtype(numpy.int64)),_12,_11,numpy.array([_9[_46] for _46 in range(0,int((_9).shape[0]))], dtype=numpy.dtype(numpy.int64)),_10)
   if (int(len(_0)) > 0):
    self._task_1djc_1name_JS(_45,mosek.fusion.Utils.StringBuffer()._a_S(_0)._a_S("[")._a_S("]")._toString_())
   return (mosek_fusion_Disjunction._ctor_J(_45))
  @staticmethod
  def _match_disjunction__3Lmosek_4fusion_4Term_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3Lmosek_4fusion_4Term_2__(_0))
  @staticmethod
  def _match_alt_disjunction__3Lmosek_4fusion_4Term_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Term_2__(_0))
  def _disjunction_alt__3Lmosek_4fusion_4Term_2(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = self._disjunction__3Lmosek_4fusion_4Term_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _disjunction__3Lmosek_4fusion_4Term_2(self,_0):
   return (self.disjunction("",_0))
  @staticmethod
  def _match_disjunction_Lmosek_4fusion_4DisjunctionTerms_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4DisjunctionTerms_2__(_0))
  @staticmethod
  def _match_alt_disjunction_Lmosek_4fusion_4DisjunctionTerms_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4DisjunctionTerms_2__(_0))
  def _disjunction_alt_Lmosek_4fusion_4DisjunctionTerms_2(self,_t__0):
    return self._disjunction_Lmosek_4fusion_4DisjunctionTerms_2(_0)
  def _disjunction_Lmosek_4fusion_4DisjunctionTerms_2(self,_0):
   return (self.disjunction((_0._terms)))
  @staticmethod
  def _match_disjunction_SLmosek_4fusion_4DisjunctionTerms_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_Lmosek_4fusion_4DisjunctionTerms_2__(_1))
  @staticmethod
  def _match_alt_disjunction_SLmosek_4fusion_4DisjunctionTerms_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Lmosek_4fusion_4DisjunctionTerms_2__(_1))
  def _disjunction_alt_SLmosek_4fusion_4DisjunctionTerms_2(self,_t__0,_t__1):
    return self._disjunction_SLmosek_4fusion_4DisjunctionTerms_2(_0,_1)
  def _disjunction_SLmosek_4fusion_4DisjunctionTerms_2(self,_0,_1):
   return (self.disjunction(_0,(_1._terms)))
  @staticmethod
  def _match_disjunction_S_3Lmosek_4fusion_4ExprDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match__3Lmosek_4fusion_4ExprDomain_2__(_1))
  @staticmethod
  def _match_alt_disjunction_S_3Lmosek_4fusion_4ExprDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match__3Lmosek_4fusion_4ExprDomain_2__(_1))
  def _disjunction_alt_S_3Lmosek_4fusion_4ExprDomain_2(self,_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(object))
   _1_res = self._disjunction_S_3Lmosek_4fusion_4ExprDomain_2(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _disjunction_S_3Lmosek_4fusion_4ExprDomain_2(self,_0,_1):
   return (self.disjunction(_0,numpy.array([_1[_2].toDJCTerm() for _2 in range(0,int((_1).shape[0]))], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_disjunction__3Lmosek_4fusion_4ExprDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3Lmosek_4fusion_4ExprDomain_2__(_0))
  @staticmethod
  def _match_alt_disjunction__3Lmosek_4fusion_4ExprDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3Lmosek_4fusion_4ExprDomain_2__(_0))
  def _disjunction_alt__3Lmosek_4fusion_4ExprDomain_2(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = self._disjunction__3Lmosek_4fusion_4ExprDomain_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _disjunction__3Lmosek_4fusion_4ExprDomain_2(self,_0):
   return (self.disjunction("",numpy.array([_0[_1].toDJCTerm() for _1 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_disjunction_SLmosek_4fusion_4ExprDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_Lmosek_4fusion_4ExprDomain_2__(_1))
  @staticmethod
  def _match_alt_disjunction_SLmosek_4fusion_4ExprDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Lmosek_4fusion_4ExprDomain_2__(_1))
  def _disjunction_alt_SLmosek_4fusion_4ExprDomain_2(self,_t__0,_t__1):
    return self._disjunction_SLmosek_4fusion_4ExprDomain_2(_0,_1)
  def _disjunction_SLmosek_4fusion_4ExprDomain_2(self,_0,_1):
   return (self.disjunction(_0,numpy.array([_1.toDJCTerm()], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_disjunction_Lmosek_4fusion_4ExprDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4ExprDomain_2__(_0))
  @staticmethod
  def _match_alt_disjunction_Lmosek_4fusion_4ExprDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4ExprDomain_2__(_0))
  def _disjunction_alt_Lmosek_4fusion_4ExprDomain_2(self,_t__0):
    return self._disjunction_Lmosek_4fusion_4ExprDomain_2(_0)
  def _disjunction_Lmosek_4fusion_4ExprDomain_2(self,_0):
   return (self.disjunction("",numpy.array([_0.toDJCTerm()], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_disjunction_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Term_2__(_0) and __arg_match_Lmosek_4fusion_4Term_2__(_1) and __arg_match_Lmosek_4fusion_4Term_2__(_2))
  @staticmethod
  def _match_alt_disjunction_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Term_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Term_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Term_2__(_2))
  def _disjunction_alt_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(self,_t__0,_t__1,_t__2):
    return self._disjunction_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(_0,_1,_2)
  def _disjunction_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(self,_0,_1,_2):
   return (self.disjunction("",numpy.array([_0,_1,_2], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_disjunction_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Term_2__(_0) and __arg_match_Lmosek_4fusion_4Term_2__(_1))
  @staticmethod
  def _match_alt_disjunction_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Term_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Term_2__(_1))
  def _disjunction_alt_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(self,_t__0,_t__1):
    return self._disjunction_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(_0,_1)
  def _disjunction_Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(self,_0,_1):
   return (self.disjunction("",numpy.array([_0,_1], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_disjunction_Lmosek_4fusion_4Term_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Term_2__(_0))
  @staticmethod
  def _match_alt_disjunction_Lmosek_4fusion_4Term_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Term_2__(_0))
  def _disjunction_alt_Lmosek_4fusion_4Term_2(self,_t__0):
    return self._disjunction_Lmosek_4fusion_4Term_2(_0)
  def _disjunction_Lmosek_4fusion_4Term_2(self,_0):
   return (self.disjunction("",numpy.array([_0], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_disjunction_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_S__(_0) and __arg_match_Lmosek_4fusion_4Term_2__(_1) and __arg_match_Lmosek_4fusion_4Term_2__(_2) and __arg_match_Lmosek_4fusion_4Term_2__(_3))
  @staticmethod
  def _match_alt_disjunction_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Lmosek_4fusion_4Term_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Term_2__(_2) and __arg_alt_match_Lmosek_4fusion_4Term_2__(_3))
  def _disjunction_alt_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(self,_t__0,_t__1,_t__2,_t__3):
    return self._disjunction_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(_0,_1,_2,_3)
  def _disjunction_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(self,_0,_1,_2,_3):
   return (self.disjunction(_0,numpy.array([_1,_2,_3], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_disjunction_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match_Lmosek_4fusion_4Term_2__(_1) and __arg_match_Lmosek_4fusion_4Term_2__(_2))
  @staticmethod
  def _match_alt_disjunction_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Lmosek_4fusion_4Term_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Term_2__(_2))
  def _disjunction_alt_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(self,_t__0,_t__1,_t__2):
    return self._disjunction_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(_0,_1,_2)
  def _disjunction_SLmosek_4fusion_4Term_2Lmosek_4fusion_4Term_2(self,_0,_1,_2):
   return (self.disjunction(_0,numpy.array([_1,_2], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_disjunction_SLmosek_4fusion_4Term_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_Lmosek_4fusion_4Term_2__(_1))
  @staticmethod
  def _match_alt_disjunction_SLmosek_4fusion_4Term_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Lmosek_4fusion_4Term_2__(_1))
  def _disjunction_alt_SLmosek_4fusion_4Term_2(self,_t__0,_t__1):
    return self._disjunction_SLmosek_4fusion_4Term_2(_0,_1)
  def _disjunction_SLmosek_4fusion_4Term_2(self,_0,_1):
   return (self.disjunction(_0,numpy.array([_1], dtype=numpy.dtype(object))))
  def _formstConstr_alt_Lmosek_4fusion_4Utils_4StringBuffer_2_3I_3I(self,_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _1_res = self._formstConstr_Lmosek_4fusion_4Utils_4StringBuffer_2_3I_3I(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _formstConstr_Lmosek_4fusion_4Utils_4StringBuffer_2_3I_3I(self,_0,_1,_2):
   return (_0)
  def __acon_1release_alt_I(self,_t__0):
    return self.__acon_1release_I(numpy.int32(__0))
  def __acon_1release_I(self,_0):
   _1=self.__acon_block_map.blocksize(_0)
   if (_1 >= 0):
    _2=self.__acc_block_map.blocksize(self.__acon_acc[_0])
    _3=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int32))
    _4=numpy.zeros((_1,), dtype=numpy.dtype(numpy.int32))
    self.__acc_block_map.get(self.__acon_acc[_0],_3,0)
    self.__acc_block_map.free(self.__acon_acc[_0])
    self.__afe_blocks.get(self.__acon_afe[_0],_4,0)
    self.__afe_1release_I(self.__acon_afe[_0])
    self.__acon_block_map.free(_0)
    self._task_1clearafelist__3J(numpy.array([_4[_5] for _5 in range(0,_1)], dtype=numpy.dtype(numpy.int64)))
    self._task_1putacclist__3J_3J_3J_3D(numpy.array([_3[_6] for _6 in range(0,_2)], dtype=numpy.dtype(numpy.int64)),numpy.array([0 for _7 in range(0,_2)], dtype=numpy.dtype(numpy.int64)),numpy.zeros((0,), dtype=numpy.dtype(numpy.int64)),numpy.zeros((0,), dtype=numpy.dtype(numpy.float64)))
  def __acon_1allocate_alt__3JII_3D_3I_3I(self,_t__0,_t__1,_t__2,_t__3,_t__4,_t__5):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.int32(_t__1)
   _2=numpy.int32(_t__2)
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.float64))
   _4=numpy.array(_t__4,dtype=numpy.dtype(numpy.int32))
   _5=numpy.array(_t__5,dtype=numpy.dtype(numpy.int32))
   _1_res = self.__acon_1allocate__3JII_3D_3I_3I(_0,_1,_2,_3,_4,_5)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__5[:] = _5
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __acon_1allocate__3JII_3D_3I_3I(self,_0,_1,_2,_3,_4,_5):
   _6=(_2 * _1)
   _7=numpy.zeros((_6,), dtype=numpy.dtype(numpy.int32))
   _8=self.__acon_block_map.alloc(_6)
   _9=self.__acc_block_map.alloc(_2)
   _10=self.__afe_1allocate__3I(_4)
   self.__acon_block_map.get(_8,_7,0)
   self.__acc_block_map.get(_9,_5,0)
   _11=self.__acon_block_map.block_capacity()
   _12=self.__acon_block_map.capacity()
   if (_11 > int((self.__acon_acc).shape[0])):
    _13=numpy.zeros((_11,), dtype=numpy.dtype(numpy.int32))
    _14=numpy.zeros((_11,), dtype=numpy.dtype(numpy.int32))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__acon_acc,0,_13,0,int((self.__acon_acc).shape[0]))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__acon_afe,0,_14,0,int((self.__acon_afe).shape[0]))
    self.__acon_acc = _13
    self.__acon_afe = _14
   self.__acon_acc[_8] = _9
   self.__acon_afe[_8] = _10
   if (_8 >= int((self.__acons).shape[0])):
    _15=numpy.array([None for _16 in range(0,(int((self.__acons).shape[0]) * 2))], dtype=numpy.dtype(object))
    for _17 in range(0,int((self.__acons).shape[0])):
     _15[_17] = self.__acons[_17]
    self.__acons = _15
   if (_12 > int((self.__acon_elm_accid).shape[0])):
    _18=numpy.zeros((_12,), dtype=numpy.dtype(numpy.int32))
    _19=numpy.zeros((_12,), dtype=numpy.dtype(numpy.float64))
    _20=numpy.zeros((_12,), dtype=numpy.dtype(numpy.int32))
    _21=numpy.zeros((_12,), dtype=numpy.dtype(numpy.int32))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__acon_elm_accid,0,_18,0,int((self.__acon_elm_accid).shape[0]))
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.__acon_elm_scale,0,_19,0,int((self.__acon_elm_scale).shape[0]))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__acon_elm_ofs,0,_20,0,int((self.__acon_elm_ofs).shape[0]))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__acon_elm_afe,0,_21,0,int((self.__acon_elm_afe).shape[0]))
    self.__acon_elm_accid = _18
    self.__acon_elm_ofs = _20
    self.__acon_elm_afe = _21
    self.__acon_elm_scale = _19
   _22=0
   for _23 in range(0,int((_5).shape[0])):
    if (_5[_23] > _22):
     _22 = _5[_23]
   _22 += 1
   _24=self._task_1numacc_()
   if (_24 < _22):
    self._task_1append_1accs_JI_3J_3D(0,(_22 - _24),numpy.zeros((0,), dtype=numpy.dtype(numpy.int64)),numpy.zeros((0,), dtype=numpy.dtype(numpy.float64)))
   self._task_1putacclist__3J_3J_3J_3D(numpy.array([_5[_25] for _25 in range(0,int((_5).shape[0]))], dtype=numpy.dtype(numpy.int64)),_0,numpy.array([_4[_26] for _26 in range(0,int((_4).shape[0]))], dtype=numpy.dtype(numpy.int64)),_3)
   _27=0
   for _28 in range(0,_2):
    for _29 in range(0,_1):
     self.__acon_elm_accid[_7[_27]] = _5[_28]
     self.__acon_elm_ofs[_7[_27]] = _29
     self.__acon_elm_afe[_7[_27]] = _4[_27]
     self.__acon_elm_scale[_7[_27]] = 1.0
     _27 += 1
   return numpy.int32(_8)
  def __afe_1release_alt_I(self,_t__0):
    return self.__afe_1release_I(numpy.int32(__0))
  def __afe_1release_I(self,_0):
   _1=numpy.zeros((self.__afe_blocks.blocksize(_0),), dtype=numpy.dtype(numpy.int32))
   self.__afe_blocks.release(_0,_1)
   self._task_1clearafelist__3J(numpy.array([_1[_2] for _2 in range(0,int((_1).shape[0]))], dtype=numpy.dtype(numpy.int64)))
  def __afe_1allocate_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self.__afe_1allocate__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __afe_1allocate__3I(self,_0):
   _1=self.__afe_blocks.allocate(_0)
   if (int((_0).shape[0]) > 0):
    _2=self._task_1numafe_()
    _3=_0[0]
    for _4 in range(1,int((_0).shape[0])):
     if (_0[_4] > _3):
      _3 = _0[_4]
    if ((_3 + 1) > _2):
     _5=((_3 + 1) - _2)
     self._task_1append_1afes_J(_5)
     self.__task_numaferow += _5
   return numpy.int32(_1)
  def __con_1release_alt_I(self,_t__0):
    return self.__con_1release_I(numpy.int32(__0))
  def __con_1release_I(self,_0):
   _1=self.__con_blocks.blocksize(_0)
   if (_1 >= 0):
    _2=numpy.zeros((_1,), dtype=numpy.dtype(numpy.int32))
    self.__con_blocks.release(_0,_2)
    self.__cons[_0] = None
    self._task_1con_1putboundlist_1fr__3I(_2)
  def __con_1allocate_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self.__con_1allocate__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __con_1allocate__3I(self,_0):
   _1=self.__con_blocks.allocate(_0)
   if (int((_0).shape[0]) > 0):
    _2=_0[0]
    for _3 in range(1,int((_0).shape[0])):
     if (_0[_3] > _2):
      _2 = _0[_3]
    if ((_2 + 1) > self.__num_task_con):
     _4=((_2 + 1) - self.__num_task_con)
     self._task_1append_1con_I(_4)
     self.__num_task_con += _4
   if (_1 >= int((self.__cons).shape[0])):
    _5=numpy.array([None for _6 in range(0,(int((self.__cons).shape[0]) * 2))], dtype=numpy.dtype(object))
    for _7 in range(0,int((self.__cons).shape[0])):
     _5[_7] = self.__cons[_7]
    self.__cons = _5
   return numpy.int32(_1)
  def __barvar_1alloc_alt_II_3I_3J(self,_t__0,_t__1,_t__2,_t__3):
   _0=numpy.int32(_t__0)
   _1=numpy.int32(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.int64))
   _1_res = self.__barvar_1alloc_II_3I_3J(_0,_1,_2,_3)
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __barvar_1alloc_II_3I_3J(self,_0,_1,_2,_3):
   _4=self.__barvar_num
   self.__barvar_num += 1
   _5=((_0 * (_0 + 1)) // 2)
   _6=(_5 * _1)
   _7=self.__barvar_block_ptr[_4]
   _8=int((self.__barvar_block_dim).shape[0])
   _9=self.__barvar_block_elm_ptr[_4]
   _10=int((self.__barvar_block_elm_barj).shape[0])
   if (_8 < (_7 + 1)):
    _11=numpy.zeros(((int((self.__barvar_block_dim).shape[0]) * 2),), dtype=numpy.dtype(numpy.int32))
    _12=numpy.zeros((((int((self.__barvar_block_dim).shape[0]) * 2) + 1),), dtype=numpy.dtype(numpy.int32))
    _13=numpy.zeros((((int((self.__barvar_block_dim).shape[0]) * 2) + 1),), dtype=numpy.dtype(numpy.int32))
    _14=numpy.array([None for _15 in range(0,((int((self.__barvar_block_dim).shape[0]) * 2) + 1))], dtype=numpy.dtype(object))
    for _16 in range(0,int((self.__barvars).shape[0])):
     _14[_16] = self.__barvars[_16]
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__barvar_block_dim,0,_11,0,int((self.__barvar_block_dim).shape[0]))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__barvar_block_ptr,0,_12,0,int((self.__barvar_block_ptr).shape[0]))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__barvar_block_elm_ptr,0,_13,0,int((self.__barvar_block_elm_ptr).shape[0]))
    self.__barvar_block_dim = _11
    self.__barvar_block_ptr = _12
    self.__barvar_block_elm_ptr = _13
    self.__barvars = _14
   if (_10 < (_9 + _6)):
    _17=((_10 + _6) - _9)
    if (_17 < _10):
     _17 = _10
    _18=(_10 + _17)
    _19=numpy.zeros((_18,), dtype=numpy.dtype(numpy.int32))
    _20=numpy.zeros((_18,), dtype=numpy.dtype(numpy.int32))
    _21=numpy.zeros((_18,), dtype=numpy.dtype(numpy.int32))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__barvar_block_elm_barj,0,_19,0,int((self.__barvar_block_elm_barj).shape[0]))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__barvar_block_elm_i,0,_20,0,int((self.__barvar_block_elm_i).shape[0]))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__barvar_block_elm_j,0,_21,0,int((self.__barvar_block_elm_j).shape[0]))
    self.__barvar_block_elm_barj = _19
    self.__barvar_block_elm_i = _20
    self.__barvar_block_elm_j = _21
   _22=self._task_1numbarvar_()
   for _23 in range(0,_1):
    _2[_23] = (_22 + _23)
   if ((_22 + _1) >= int((self.__barvar_dim).shape[0])):
    _24=((_22 + _1) - int((self.__barvar_dim).shape[0]))
    if (_24 < int((self.__barvar_dim).shape[0])):
     _24 = int((self.__barvar_dim).shape[0])
    _25=(_24 + int((self.__barvar_dim).shape[0]))
    _26=numpy.zeros((_25,), dtype=numpy.dtype(numpy.int32))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__barvar_dim,0,_26,0,int((self.__barvar_dim).shape[0]))
    self.__barvar_dim = _26
   self.__barvar_block_dim[_4] = _0
   self.__barvar_block_ptr[(_4 + 1)] = (self.__barvar_block_ptr[_4] + _1)
   self.__barvar_block_elm_ptr[(_4 + 1)] = (self.__barvar_block_elm_ptr[_4] + _6)
   _27=0
   _28=self.__barvar_block_elm_ptr[_4]
   for _29 in range(0,_1):
    for _30 in range(0,_0):
     for _31 in range(_30,_0):
      self.__barvar_block_elm_barj[(_28 + _27)] = (_22 + _29)
      self.__barvar_block_elm_i[(_28 + _27)] = _31
      self.__barvar_block_elm_j[(_28 + _27)] = _30
      _3[_27] = (_28 + _27)
      _27 += 1
   for _32 in range(0,_1):
    self.__barvar_dim[(_22 + _32)] = _0
   _33=self._task_1append_1barvar_II(_0,_1)
   return numpy.int32(_4)
  def __conicvar_1alloc_alt__3JII_3I_3I(self,_t__0,_t__1,_t__2,_t__3,_t__4):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.int32(_t__1)
   _2=numpy.int32(_t__2)
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.int32))
   _4=numpy.array(_t__4,dtype=numpy.dtype(numpy.int32))
   _1_res = self.__conicvar_1alloc__3JII_3I_3I(_0,_1,_2,_3,_4)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __conicvar_1alloc__3JII_3I_3I(self,_0,_1,_2,_3,_4):
   _5=(_1 * _2)
   _6=self.__linearvar_1alloc_I_3I(_5,_4)
   _7=numpy.zeros((_5,), dtype=numpy.dtype(numpy.float64))
   _8=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int32))
   _9=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int32))
   _10=self.__acon_1allocate__3JII_3D_3I_3I(_0,_1,_2,_7,_9,_3)
   self.__var_block_acc_id[_6] = _10
   for _11 in range(0,_5):
    self.__var_elm_acc_idx[_4[_11]] = _3[(_11 // _1)]
    self.__var_elm_acc_ofs[_4[_11]] = (_11 % _1)
   self._task_1putafeflist__3J_3I_3I_3D_3D(numpy.array([_9[_12] for _12 in range(0,int((_9).shape[0]))], dtype=numpy.dtype(numpy.int64)),numpy.array([_13 for _13 in range(0,(_5 + 1))], dtype=numpy.dtype(numpy.int32)),_4,numpy.array([1.0 for _14 in range(0,_5)], dtype=numpy.dtype(numpy.float64)),numpy.array([0.0 for _15 in range(0,_5)], dtype=numpy.dtype(numpy.float64)))
   return numpy.int32(_6)
  def __linearvar_1alloc_alt_I_3I(self,_t__0,_t__1):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self.__linearvar_1alloc_I_3I(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __linearvar_1alloc_I_3I(self,_0,_1):
   _2=self.__var_block_map.alloc(_0)
   _3=(self.__var_block_map.maxidx(_2) + 1)
   _4=self.__var_block_map.capacity()
   _5=self.__var_block_map.block_capacity()
   self.__var_block_map.get(_2,_1,0)
   if (self._task_1numvar_() < _3):
    self._task_1append_1var_I((_3 - self._task_1numvar_()))
   if (_2 >= int((self.__vars).shape[0])):
    _6=numpy.array([None for _7 in range(0,(int((self.__vars).shape[0]) * 2))], dtype=numpy.dtype(object))
    for _8 in range(0,int((self.__vars).shape[0])):
     _6[_8] = self.__vars[_8]
    self.__vars = _6
   if (_5 > int((self.__var_block_acc_id).shape[0])):
    _9=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int32))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__var_block_acc_id,0,_9,0,int((self.__var_block_acc_id).shape[0]))
    self.__var_block_acc_id = _9
   if (_4 > int((self.__var_elm_acc_idx).shape[0])):
    _10=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__var_elm_acc_idx,0,_10,0,int((self.__var_elm_acc_idx).shape[0]))
    self.__var_elm_acc_idx = _10
    _11=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__var_elm_acc_ofs,0,_11,0,int((self.__var_elm_acc_ofs).shape[0]))
    self.__var_elm_acc_ofs = _11
   self.__var_block_acc_id[_2] = (- 1)
   for _12 in range(0,_0):
    self.__var_elm_acc_idx[_1[_12]] = (- 1)
   return numpy.int32(_2)
  def _make_1continuous_alt__3J(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1_res = self._make_1continuous__3J(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _make_1continuous__3J(self,_0):
   _1=0
   for _2 in range(0,int((_0).shape[0])):
    if (_0[_2] > 0):
     _1 += 1
   _3=numpy.zeros((_1,), dtype=numpy.dtype(numpy.int32))
   _4=0
   for _5 in range(0,int((_0).shape[0])):
    if (_0[_5] > 0):
     _3[_4] = numpy.int32(_0[_5])
     _4 += 1
   self._task_1var_1putcontlist__3I(_3)
  def _make_1integer_alt__3J(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1_res = self._make_1integer__3J(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _make_1integer__3J(self,_0):
   _1=0
   for _2 in range(0,int((_0).shape[0])):
    if (_0[_2] > 0):
     _1 += 1
   _3=numpy.zeros((_1,), dtype=numpy.dtype(numpy.int32))
   _4=0
   for _5 in range(0,int((_0).shape[0])):
    if (_0[_5] > 0):
     _3[_4] = numpy.int32(_0[_5])
     _4 += 1
   self._task_1var_1putintlist__3I(_3)
  @staticmethod
  def _match_putlicensewait_Z(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Z__(_0))
  @staticmethod
  def _match_alt_putlicensewait_Z(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Z__(_0))
  @staticmethod
  def _putlicensewait_alt_Z(_t__0):
    return mosek_fusion_Model._putlicensewait_Z(_0)
  @staticmethod
  def _putlicensewait_Z(_0):
   mosek.fusion.BaseModel._env_1putlicensewait_Z(_0)
  @staticmethod
  def _match_putlicensepath_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_S__(_0))
  @staticmethod
  def _match_alt_putlicensepath_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_S__(_0))
  @staticmethod
  def _putlicensepath_alt_S(_t__0):
    return mosek_fusion_Model._putlicensepath_S(_0)
  @staticmethod
  def _putlicensepath_S(_0):
   mosek.fusion.BaseModel._env_1putlicensepath_S(_0)
  @staticmethod
  def _match_putlicensecode__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_putlicensecode__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  @staticmethod
  def _putlicensecode_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Model._putlicensecode__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _putlicensecode__3I(_0):
   mosek.fusion.BaseModel._env_1putlicensecode__3I(_0)
  @staticmethod
  def _match_dispose_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_dispose_(*args):
    if len(args) != 0: return False
    return True
  def _dispose_alt_(self,):
    return self._dispose_()
  def _dispose_(self,):
   for _0 in range(0,int((self.__vars).shape[0])):
    self.__vars[_0] = None
   for _1 in range(0,int((self.__cons).shape[0])):
    self.__cons[_1] = None
   for _2 in range(0,int((self.__acons).shape[0])):
    self.__acons[_2] = None
   for _3 in range(0,int((self.__barvars).shape[0])):
    self.__barvars[_3] = None
   if (self.__parameters is not None):
    for _4 in range(0,int((self.__parameters).shape[0])):
     self.__parameters[_4] = None
   mosek_fusion_BaseModel._dispose_(self)
  @staticmethod
  def _match_getTask_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getTask_(*args):
    if len(args) != 0: return False
    return True
  def _getTask_alt_(self,):
    return self._getTask_()
  def _getTask_(self,):
   return (self._task_1get_())
  @staticmethod
  def _match_getConstraintDuals_Z_3I_3DI(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Z__(_0) and __arg_match__3I__(_1) and __arg_match__3D__(_2) and __arg_match_I__(_3))
  @staticmethod
  def _match_alt_getConstraintDuals_Z_3I_3DI(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Z__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3D__(_2) and __arg_alt_match_I__(_3))
  def _getConstraintDuals_alt_Z_3I_3DI(self,_t__0,_t__1,_t__2,_t__3):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _3=numpy.int32(_t__3)
   _1_res = self._getConstraintDuals_Z_3I_3DI(_0,_1,_2,_3)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _getConstraintDuals_Z_3I_3DI(self,_0,_1,_2,_3):
   _4=int((_1).shape[0])
   _5=self._getSolution_1slc_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Default)
   _6=self._getSolution_1suc_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Default)
   for _7 in range(0,_4):
    if (_1[_7] >= 0):
     if _0:
      _2[(_3 + _7)] = _5[_1[_7]]
     else:
      _2[(_3 + _7)] = (- _6[_1[_7]])
    else:
     raise mosek_fusion_SolutionError._ctor_S("Requested invalid solution item")
  @staticmethod
  def _match_getConstraintValues_Z_3I_3DI(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Z__(_0) and __arg_match__3I__(_1) and __arg_match__3D__(_2) and __arg_match_I__(_3))
  @staticmethod
  def _match_alt_getConstraintValues_Z_3I_3DI(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Z__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3D__(_2) and __arg_alt_match_I__(_3))
  def _getConstraintValues_alt_Z_3I_3DI(self,_t__0,_t__1,_t__2,_t__3):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _3=numpy.int32(_t__3)
   _1_res = self._getConstraintValues_Z_3I_3DI(_0,_1,_2,_3)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _getConstraintValues_Z_3I_3DI(self,_0,_1,_2,_3):
   _4=int((_1).shape[0])
   if _0:
    _5=self._getSolution_1xc_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Default)
    _6=self._getSolution_1accx_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Default)
    _7=self._getSolution_1accptr_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Default)
    for _8 in range(0,_4):
     if (_1[_8] >= 0):
      _2[(_3 + _8)] = _5[_1[_8]]
     else:
      _9=(- (1 + _1[_8]))
      _2[(_3 + _8)] = (_6[(_7[self.__acon_elm_accid[_9]] + self.__acon_elm_ofs[_9])] * self.__acon_elm_scale[_9])
   else:
    _10=self._getSolution_1y_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Default)
    _11=self._getSolution_1accy_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Default)
    _12=self._getSolution_1accptr_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Default)
    for _13 in range(0,_4):
     if (_1[_13] >= 0):
      _2[(_3 + _13)] = _10[_1[_13]]
     else:
      _14=(- (1 + _1[_13]))
      _2[(_3 + _13)] = (_11[(_12[self.__acon_elm_accid[_14]] + self.__acon_elm_ofs[_14])] * self.__acon_elm_scale[_14])
  @staticmethod
  def _match_getVariableDuals_Z_3J_3DI(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Z__(_0) and __arg_match__3J__(_1) and __arg_match__3D__(_2) and __arg_match_I__(_3))
  @staticmethod
  def _match_alt_getVariableDuals_Z_3J_3DI(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Z__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match__3D__(_2) and __arg_alt_match_I__(_3))
  def _getVariableDuals_alt_Z_3J_3DI(self,_t__0,_t__1,_t__2,_t__3):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _3=numpy.int32(_t__3)
   _1_res = self._getVariableDuals_Z_3J_3DI(_0,_1,_2,_3)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _getVariableDuals_Z_3J_3DI(self,_0,_1,_2,_3):
   _4=int((_1).shape[0])
   if _0:
    _5=self._getSolution_1slx_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Default)
    for _6 in range(0,_4):
     if (_1[_6] > 0):
      _2[(_3 + _6)] = _5[_1[_6]]
     else:
      _2[(_3 + _6)] = 0
   else:
    _7=self._getSolution_1sux_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Default)
    for _8 in range(0,_4):
     if (_1[_8] > 0):
      _2[(_3 + _8)] = (- _7[_1[_8]])
     else:
      _2[(_3 + _8)] = 0
  @staticmethod
  def _match_getVariableValues_Z_3J_3DI(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Z__(_0) and __arg_match__3J__(_1) and __arg_match__3D__(_2) and __arg_match_I__(_3))
  @staticmethod
  def _match_alt_getVariableValues_Z_3J_3DI(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Z__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match__3D__(_2) and __arg_alt_match_I__(_3))
  def _getVariableValues_alt_Z_3J_3DI(self,_t__0,_t__1,_t__2,_t__3):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _3=numpy.int32(_t__3)
   _1_res = self._getVariableValues_Z_3J_3DI(_0,_1,_2,_3)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _getVariableValues_Z_3J_3DI(self,_0,_1,_2,_3):
   _4=int((_1).shape[0])
   self.__barvar_num = self._task_1numbarvar_()
   if _0:
    _5=self._getSolution_1xx_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Default)
    _6=(self._getSolution_1barx_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Default) if ((self.__barvar_num > 0) ) else None)
    for _7 in range(0,_4):
     if (_1[_7] > 0):
      _2[(_3 + _7)] = _5[_1[_7]]
     elif (_1[_7] < 0): # bld/grindsted/final/default/src/fusion/Model.mbi:4177:20-37
      _8=(- (_1[_7] + 1))
      _2[(_3 + _7)] = _6[_8]
     else:
      _2[(_3 + _7)] = 0
   else:
    _9=self._getSolution_1yx_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Default)
    _10=(self._getSolution_1bars_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Default) if ((self.__barvar_num > 0) ) else None)
    _11=self._getSolution_1accy_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Default)
    _12=self._getSolution_1accptr_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Default)
    for _13 in range(0,_4):
     if (_1[_13] < 0):
      _14=(- (_1[_13] + 1))
      _2[(_3 + _13)] = _10[_14]
     elif (_1[_13]==0): # bld/grindsted/final/default/src/fusion/Model.mbi:4196:20-38
      _2[(_3 + _13)] = 0
     elif (self.__var_elm_acc_idx[_1[_13]] >= 0): # bld/grindsted/final/default/src/fusion/Model.mbi:4198:20-55
      _2[(_3 + _13)] = _11[(_12[self.__var_elm_acc_idx[_1[_13]]] + self.__var_elm_acc_ofs[_1[_13]])]
     else:
      _2[(_3 + _13)] = _9[_1[_13]]
  @staticmethod
  def _match_setVariableValues_Z_3J_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Z__(_0) and __arg_match__3J__(_1) and __arg_match__3D__(_2))
  @staticmethod
  def _match_alt_setVariableValues_Z_3J_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Z__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match__3D__(_2))
  def _setVariableValues_alt_Z_3J_3D(self,_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _1_res = self._setVariableValues_Z_3J_3D(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _setVariableValues_Z_3J_3D(self,_0,_1,_2):
   if _0:
    _3=0
    for _4 in range(0,int((_1).shape[0])):
     if (_1[_4] >= 0):
      _3 += 1
    _5=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
    _6=numpy.zeros((_3,), dtype=numpy.dtype(numpy.float64))
    _7=0
    for _8 in range(0,int((_1).shape[0])):
     if (_1[_8] >= 0):
      _5[_7] = numpy.int32(_1[_8])
      _6[_7] = _2[_8]
      _7 += 1
    self._setSolution_1xx__3I_3D(_5,_6)
   else:
    pass
  @staticmethod
  def _match_writeTaskNoFlush_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_S__(_0))
  @staticmethod
  def _match_alt_writeTaskNoFlush_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_S__(_0))
  def _writeTaskNoFlush_alt_S(self,_t__0):
    return self._writeTaskNoFlush_S(_0)
  def _writeTaskNoFlush_S(self,_0):
   self._task_1write_S(_0)
  @staticmethod
  def _match_writeTaskStream_SLSystem_4DataStream_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_LSystem_4DataStream_2__(_1))
  @staticmethod
  def _match_alt_writeTaskStream_SLSystem_4DataStream_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_LSystem_4DataStream_2__(_1))
  def _writeTaskStream_alt_SLSystem_4DataStream_2(self,_t__0,_t__1):
    return self._writeTaskStream_SLSystem_4DataStream_2(_0,_1)
  def _writeTaskStream_SLSystem_4DataStream_2(self,_0,_1):
   self.__flush_1parameters_()
   self._task_1write_1stream_SLSystem_4DataStream_2(_0,_1)
  @staticmethod
  def _match_expressionCache_Z(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Z__(_0))
  @staticmethod
  def _match_alt_expressionCache_Z(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Z__(_0))
  def _expressionCache_alt_Z(self,_t__0):
    return self._expressionCache_Z(_0)
  def _expressionCache_Z(self,_0):
   self.__cache_evaluations = _0
  @staticmethod
  def _match_dataReport_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_dataReport_(*args):
    if len(args) != 0: return False
    return True
  def _dataReport_alt_(self,):
    return self._dataReport_()
  def _dataReport_(self,):
   self.dataReport(10)
  @staticmethod
  def _match_dataReport_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_dataReport_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _dataReport_alt_I(self,_t__0):
    return self._dataReport_I(numpy.int32(__0))
  def _dataReport_I(self,_0):
   self.__flush_1parameters_()
   self._task_1analyze_1problem_I(_0)
  @staticmethod
  def _match_writeTask_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_S__(_0))
  @staticmethod
  def _match_alt_writeTask_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_S__(_0))
  def _writeTask_alt_S(self,_t__0):
    return self._writeTask_S(_0)
  def _writeTask_S(self,_0):
   self.__flush_1parameters_()
   self._task_1write_S(_0)
  @staticmethod
  def _match_getSolverLIntInfo_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_S__(_0))
  @staticmethod
  def _match_alt_getSolverLIntInfo_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_S__(_0))
  def _getSolverLIntInfo_alt_S(self,_t__0):
    return self._getSolverLIntInfo_S(_0)
  def _getSolverLIntInfo_S(self,_0):
   return numpy.int64(self._task_1get_1liinf_S(_0))
  @staticmethod
  def _match_getSolverIntInfo_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_S__(_0))
  @staticmethod
  def _match_alt_getSolverIntInfo_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_S__(_0))
  def _getSolverIntInfo_alt_S(self,_t__0):
    return self._getSolverIntInfo_S(_0)
  def _getSolverIntInfo_S(self,_0):
   return numpy.int32(self._task_1get_1iinf_S(_0))
  @staticmethod
  def _match_getSolverDoubleInfo_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_S__(_0))
  @staticmethod
  def _match_alt_getSolverDoubleInfo_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_S__(_0))
  def _getSolverDoubleInfo_alt_S(self,_t__0):
    return self._getSolverDoubleInfo_S(_0)
  def _getSolverDoubleInfo_S(self,_0):
   return numpy.float64(self._task_1get_1dinf_S(_0))
  @staticmethod
  def _match_setCallbackHandler_LSystem_4CallbackHandler_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_LSystem_4CallbackHandler_2__(_0))
  @staticmethod
  def _match_alt_setCallbackHandler_LSystem_4CallbackHandler_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_LSystem_4CallbackHandler_2__(_0))
  def _setCallbackHandler_alt_LSystem_4CallbackHandler_2(self,_t__0):
    return self._setCallbackHandler_LSystem_4CallbackHandler_2(_0)
  def _setCallbackHandler_LSystem_4CallbackHandler_2(self,_0):
   self._task_1setCallbackHandler_LSystem_4CallbackHandler_2(_0)
  @staticmethod
  def _match_setDataCallbackHandler_LSystem_4DataCallbackHandler_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_LSystem_4DataCallbackHandler_2__(_0))
  @staticmethod
  def _match_alt_setDataCallbackHandler_LSystem_4DataCallbackHandler_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_LSystem_4DataCallbackHandler_2__(_0))
  def _setDataCallbackHandler_alt_LSystem_4DataCallbackHandler_2(self,_t__0):
    return self._setDataCallbackHandler_LSystem_4DataCallbackHandler_2(_0)
  def _setDataCallbackHandler_LSystem_4DataCallbackHandler_2(self,_0):
   self._task_1setDataCallbackHandler_LSystem_4DataCallbackHandler_2(_0)
  @staticmethod
  def _match_setLogHandler_LSystem_4StreamWriter_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_LSystem_4StreamWriter_2__(_0))
  @staticmethod
  def _match_alt_setLogHandler_LSystem_4StreamWriter_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_LSystem_4StreamWriter_2__(_0))
  def _setLogHandler_alt_LSystem_4StreamWriter_2(self,_t__0):
    return self._setLogHandler_LSystem_4StreamWriter_2(_0)
  def _setLogHandler_LSystem_4StreamWriter_2(self,_0):
   self._task_1setLogHandler_LSystem_4StreamWriter_2(_0)
  @staticmethod
  def _match_setSolverParam_SD(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_D__(_1))
  @staticmethod
  def _match_alt_setSolverParam_SD(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_D__(_1))
  def _setSolverParam_alt_SD(self,_t__0,_t__1):
    return self._setSolverParam_SD(_0,numpy.float64(__1))
  def _setSolverParam_SD(self,_0,_1):
   mosek.fusion.Parameters._setParameter_Lmosek_4fusion_4Model_2SD(self,_0,_1)
  @staticmethod
  def _match_setSolverParam_SI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_setSolverParam_SI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_I__(_1))
  def _setSolverParam_alt_SI(self,_t__0,_t__1):
    return self._setSolverParam_SI(_0,numpy.int32(__1))
  def _setSolverParam_SI(self,_0,_1):
   mosek.fusion.Parameters._setParameter_Lmosek_4fusion_4Model_2SI(self,_0,_1)
  @staticmethod
  def _match_setSolverParam_SS(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_S__(_1))
  @staticmethod
  def _match_alt_setSolverParam_SS(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_S__(_1))
  def _setSolverParam_alt_SS(self,_t__0,_t__1):
    return self._setSolverParam_SS(_0,_1)
  def _setSolverParam_SS(self,_0,_1):
   mosek.fusion.Parameters._setParameter_Lmosek_4fusion_4Model_2SS(self,_0,_1)
  @staticmethod
  def _match_breakSolver_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_breakSolver_(*args):
    if len(args) != 0: return False
    return True
  def _breakSolver_alt_(self,):
    return self._breakSolver_()
  def _breakSolver_(self,):
   self._task_1break_1solve_()
  @staticmethod
  def _match_optserverHost_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_S__(_0))
  @staticmethod
  def _match_alt_optserverHost_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_S__(_0))
  def _optserverHost_alt_S(self,_t__0):
    return self._optserverHost_S(_0)
  def _optserverHost_S(self,_0):
   self._task_1putoptserver_1host_S(_0)
  def _report_1solution_alt_Emosek_4fusion_4SolutionType_2Emosek_4fusion_4ProblemStatus_2Emosek_4fusion_4SolutionStatus_2Emosek_4fusion_4SolutionStatus_2DDIIIIIZZ(self,_t__0,_t__1,_t__2,_t__3,_t__4,_t__5,_t__6,_t__7,_t__8,_t__9,_t__10,_t__11,_t__12):
    return self._report_1solution_Emosek_4fusion_4SolutionType_2Emosek_4fusion_4ProblemStatus_2Emosek_4fusion_4SolutionStatus_2Emosek_4fusion_4SolutionStatus_2DDIIIIIZZ(__0,__1,__2,__3,numpy.float64(__4),numpy.float64(__5),numpy.int32(__6),numpy.int32(__7),numpy.int32(__8),numpy.int32(__9),numpy.int32(__10),_11,_12)
  def _report_1solution_Emosek_4fusion_4SolutionType_2Emosek_4fusion_4ProblemStatus_2Emosek_4fusion_4SolutionStatus_2Emosek_4fusion_4SolutionStatus_2DDIIIIIZZ(self,_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12):
   if (_0==mosek.fusion.SolutionType.Interior):
    _13 = self.__sol_itr
   elif (_0==mosek.fusion.SolutionType.Basic): # bld/grindsted/final/default/src/fusion/Model.mbi:3854:16-45
    _13 = self.__sol_bas
   elif (_0==mosek.fusion.SolutionType.Integer): # bld/grindsted/final/default/src/fusion/Model.mbi:3855:16-47
    _13 = self.__sol_itg
   else:
    _13 = None
   if (_13 is None):
    _13 = mosek_fusion_SolutionStruct._ctor_IIIII(_6,_7,_8,_9,_10)
   else:
    _13.resize(_6,_7,_8,_9,_10)
   (_13.pobj) = _4
   (_13.dobj) = _5
   (_13.pstatus) = _2
   (_13.dstatus) = _3
   (_13.probstatus) = _1
   if (_6 > 0):
    if _11:
     self._report_1solution_1get_1xx__3D((_13.xx))
    if _12:
     self._report_1solution_1get_1slx__3D((_13.slx))
     self._report_1solution_1get_1sux__3D((_13.sux))
     _14=(_13.yx)
     _15=(_13.slx)
     _16=(_13.sux)
     for _17 in range(0,_6):
      _14[_17] = (_15[_17] - _16[_17])
   if (_7 > 0):
    if _11:
     self._report_1solution_1get_1xc__3D((_13.xc))
    if _12:
     self._report_1solution_1get_1slc__3D((_13.slc))
     self._report_1solution_1get_1suc__3D((_13.suc))
     _18=(_13.y)
     _19=(_13.slc)
     _20=(_13.suc)
     for _21 in range(0,_7):
      _18[_21] = (_19[_21] - _20[_21])
   if (_8 > 0):
    if _11:
     self._report_1solution_1get_1barx__3D((_13.barx))
    if _12:
     self._report_1solution_1get_1bars__3D((_13.bars))
   if (self._task_1numacc_() > 0):
    self._report_1solution_1get_1accptr__3I((_13.accptr))
    if _11:
     self._report_1solution_1get_1accx__3D((_13.accx))
    if _12:
     self._report_1solution_1get_1accy__3D((_13.accy))
   if (_0==mosek.fusion.SolutionType.Interior):
    self.__sol_itr = _13
   elif (_0==mosek.fusion.SolutionType.Basic): # bld/grindsted/final/default/src/fusion/Model.mbi:3911:16-45
    self.__sol_bas = _13
   elif (_0==mosek.fusion.SolutionType.Integer): # bld/grindsted/final/default/src/fusion/Model.mbi:3912:16-47
    self.__sol_itg = _13
  def _clear_1solutions_alt_(self,):
    return self._clear_1solutions_()
  def _clear_1solutions_(self,):
   self.__sol_itr = None
   self.__sol_itg = None
   self.__sol_bas = None
  @staticmethod
  def _match_solveBatch_ZDI_3Lmosek_4fusion_4Model_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Z__(_0) and __arg_match_D__(_1) and __arg_match_I__(_2) and __arg_match__3Lmosek_4fusion_4Model_2__(_3))
  @staticmethod
  def _match_alt_solveBatch_ZDI_3Lmosek_4fusion_4Model_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Z__(_0) and __arg_alt_match_D__(_1) and __arg_alt_match_I__(_2) and __arg_alt_match__3Lmosek_4fusion_4Model_2__(_3))
  @staticmethod
  def _solveBatch_alt_ZDI_3Lmosek_4fusion_4Model_2(_t__0,_t__1,_t__2,_t__3):
   _0=_t__0
   _1=numpy.float64(_t__1)
   _2=numpy.int32(_t__2)
   _3=numpy.array(_t__3,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Model._solveBatch_ZDI_3Lmosek_4fusion_4Model_2(_0,_1,_2,_3)
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _solveBatch_ZDI_3Lmosek_4fusion_4Model_2(_0,_1,_2,_3):
   _4=int((_3).shape[0])
   for _5 in range(0,_4):
    if (_3[_5] is None):
     raise mosek_fusion_OptimizeError._ctor_S("One of the models is a null object")
   for _6 in range(0,_4):
    _3[_6].flushSolutions()
    _3[_6].__flush_1parameters_()
   _7=mosek.fusion.BaseModel._env_1solve_1batch_ZDI_3Lmosek_4fusion_4Model_2(_0,_1,_2,_3)
   for _8 in range(0,_4):
    _3[_8]._task_1post_1solve_()
   return (_7)
  @staticmethod
  def _match_solve_SS(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_S__(_1))
  @staticmethod
  def _match_alt_solve_SS(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_S__(_1))
  def _solve_alt_SS(self,_t__0,_t__1):
    return self._solve_SS(_0,_1)
  def _solve_SS(self,_0,_1):
   self.flushSolutions()
   self.__flush_1parameters_()
   self._task_1solve_ZSS(True,_0,_1)
   self._task_1post_1solve_()
  @staticmethod
  def _match_solve_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_solve_(*args):
    if len(args) != 0: return False
    return True
  def _solve_alt_(self,):
    return self._solve_()
  def _solve_(self,):
   self.flushSolutions()
   self.__flush_1parameters_()
   self._task_1solve_ZSS(False,"","")
   self._task_1post_1solve_()
  def __flush_1parameters_alt_(self,):
    return self.__flush_1parameters_()
  def __flush_1parameters_(self,):
   _0=self.__con_blocks.num_parameterized()
   _1=self.__afe_blocks.num_parameterized()
   _2=self.__obj_blocks.num_parameterized()
   if (_0 > 0):
    _3=numpy.zeros((_0,), dtype=numpy.dtype(numpy.int32))
    _4=numpy.zeros((_0,), dtype=numpy.dtype(numpy.int32))
    _5=numpy.zeros((_0,), dtype=numpy.dtype(numpy.float64))
    self.__con_blocks.evaluate(self.__xs,self.__param_value,_3,_4,_5)
    self._task_1putaijlist__3I_3I_3DJ(_3,_4,_5,_0)
   if (_1 > 0):
    _6=numpy.zeros((_1,), dtype=numpy.dtype(numpy.int32))
    _7=numpy.zeros((_1,), dtype=numpy.dtype(numpy.int32))
    _8=numpy.zeros((_1,), dtype=numpy.dtype(numpy.float64))
    self.__afe_blocks.evaluate(self.__xs,self.__param_value,_6,_7,_8)
    self._task_1putafefijlist__3I_3I_3D(_6,_7,_8)
   if (_2 > 0):
    _9=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int32))
    _10=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int32))
    _11=numpy.zeros((_2,), dtype=numpy.dtype(numpy.float64))
    self.__obj_blocks.evaluate(self.__xs,self.__param_value,_9,_10,_11)
    self._task_1putclist__3I_3D(_10,_11)
  @staticmethod
  def _match_flushParameters_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_flushParameters_(*args):
    if len(args) != 0: return False
    return True
  def _flushParameters_alt_(self,):
    return self._flushParameters_()
  def _flushParameters_(self,):
   self.__flush_1parameters_()
  def __evaluate_1parameterized_alt_Lmosek_4fusion_4WorkStack_2I_3I_3I_3J_3I_3I_3I_3D_3I_3D(self,_t__0,_t__1,_t__2,_t__3,_t__4,_t__5,_t__6,_t__7,_t__8,_t__9,_t__10):
   _0=_t__0
   _1=numpy.int32(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.int32))
   _4=numpy.array(_t__4,dtype=numpy.dtype(numpy.int64))
   _5=numpy.array(_t__5,dtype=numpy.dtype(numpy.int32))
   _6=numpy.array(_t__6,dtype=numpy.dtype(numpy.int32))
   _7=numpy.array(_t__7,dtype=numpy.dtype(numpy.int32))
   _8=numpy.array(_t__8,dtype=numpy.dtype(numpy.float64))
   _9=numpy.array(_t__9,dtype=numpy.dtype(numpy.int32))
   _10=numpy.array(_t__10,dtype=numpy.dtype(numpy.float64))
   _1_res = self.__evaluate_1parameterized_Lmosek_4fusion_4WorkStack_2I_3I_3I_3J_3I_3I_3I_3D_3I_3D(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10)
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__5[:] = _5
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__6[:] = _6
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__7[:] = _7
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__8[:] = _8
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__9[:] = _9
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__10[:] = _10
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __evaluate_1parameterized_Lmosek_4fusion_4WorkStack_2I_3I_3I_3J_3I_3I_3I_3D_3I_3D(self,_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10):
   _11=_0.allocf64(int((_7).shape[0]))
   _12=0
   _13=(_0.f64)
   _14=0
   for _15 in range(0,_1):
    _16=_5[_15]
    for _17 in range(_2[_15],_3[_15]):
     for _18 in range(0,_6[_17]):
      if (_7[_16]==0):
       pass
      else:
       if (_7[_16]==1):
        _13[(_11 + _12)] = self.__param_value[numpy.int32(_8[_16])]
        _12 += 1
       else:
        if (_7[_16]==2):
         _13[(_11 + _12)] = _8[_16]
         _12 += 1
        else:
         if (_7[_16]==3):
          _13[((_11 + _12) - 2)] += _13[((_11 + _12) - 1)]
          _12 -= 1
         else:
          if (_7[_16]==4):
           _13[((_11 + _12) - 1)] = (- _13[((_11 + _12) - 1)])
          else:
           if (_7[_16]==5):
            _13[((_11 + _12) - 2)] *= _13[((_11 + _12) - 1)]
            _12 -= 1
           else:
            if (_7[_16]==6):
             _13[((_11 + _12) - 1)] = (1.0 / _13[((_11 + _12) - 1)])
            else:
             if (_7[_16]==8):
              _19=0.0
              for _20 in range(0,numpy.int32(_8[_16])):
               _19 += _13[((_11 + _12) - 1)]
               _12 -= 1
              _13[(_11 + _12)] = _19
              _12 += 1
             else:
              pass
      _16 += 1
     _9[_14] = numpy.int32(_4[_17])
     _10[_14] = _13[_11]
     _12 = 0
     _14 += 1
   _0.popf64(int((_7).shape[0]))
  @staticmethod
  def _match_flushSolutions_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_flushSolutions_(*args):
    if len(args) != 0: return False
    return True
  def _flushSolutions_alt_(self,):
    return self._flushSolutions_()
  def _flushSolutions_(self,):
   self.__flush_1initsol_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Interior)
   self.__flush_1initsol_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Integer)
   self.__flush_1initsol_Emosek_4fusion_4SolutionType_2(mosek.fusion.SolutionType.Basic)
  def __flush_1initsol_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self.__flush_1initsol_Emosek_4fusion_4SolutionType_2(__0)
  def __flush_1initsol_Emosek_4fusion_4SolutionType_2(self,_0):
   if (self.__initsol_xx is not None):
    _1=self._task_1numvar_()
    _2=numpy.zeros((_1,), dtype=numpy.dtype(numpy.float64))
    try:
     _3=self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2Z(_0,True)
     if ((_3.xx) is not None):
      mosek.fusion.Utils.Tools._arraycopy__3DI_3DII((_3.xx),0,_2,0,(int(((_3.xx)).shape[0]) if ((int(((_3.xx)).shape[0]) <= _1) ) else _1))
    except mosek_fusion_SolutionError as _4:
     pass
    _5=(int((self.__initsol_xx).shape[0]) if ((int((self.__initsol_xx).shape[0]) <= _1) ) else _1)
    for _6 in range(0,_5):
     if self.__initsol_xx_flag[_6]:
      _2[_6] = self.__initsol_xx[_6]
    _2[self.__bfixidx] = 1.0
    self._task_1putxx_1slice_Emosek_4fusion_4SolutionType_2II_3D(_0,0,_1,_2)
  @staticmethod
  def _match_getDualSolutionStatus_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getDualSolutionStatus_(*args):
    if len(args) != 0: return False
    return True
  def _getDualSolutionStatus_alt_(self,):
    return self._getDualSolutionStatus_()
  def _getDualSolutionStatus_(self,):
   return (self.getDualSolutionStatus(self.__solutionptr))
  @staticmethod
  def _match_getProblemStatus_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getProblemStatus_(*args):
    if len(args) != 0: return False
    return True
  def _getProblemStatus_alt_(self,):
    return self._getProblemStatus_()
  def _getProblemStatus_(self,):
   return (self.getProblemStatus(self.__solutionptr))
  @staticmethod
  def _match_getPrimalSolutionStatus_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getPrimalSolutionStatus_(*args):
    if len(args) != 0: return False
    return True
  def _getPrimalSolutionStatus_alt_(self,):
    return self._getPrimalSolutionStatus_()
  def _getPrimalSolutionStatus_(self,):
   return (self._getPrimalSolutionStatus_Emosek_4fusion_4SolutionType_2(self.__solutionptr))
  @staticmethod
  def _match_dualObjValue_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_dualObjValue_(*args):
    if len(args) != 0: return False
    return True
  def _dualObjValue_alt_(self,):
    return self._dualObjValue_()
  def _dualObjValue_(self,):
   return numpy.float64((self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2Z(mosek.fusion.SolutionType.Default,False).dobj))
  @staticmethod
  def _match_primalObjValue_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_primalObjValue_(*args):
    if len(args) != 0: return False
    return True
  def _primalObjValue_alt_(self,):
    return self._primalObjValue_()
  def _primalObjValue_(self,):
   return numpy.float64((self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2Z(mosek.fusion.SolutionType.Default,True).pobj))
  def _get_1sol_1cache_alt_Emosek_4fusion_4SolutionType_2ZZ(self,_t__0,_t__1,_t__2):
    return self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2ZZ(__0,_1,_2)
  def _get_1sol_1cache_Emosek_4fusion_4SolutionType_2ZZ(self,_0,_1,_2):
   _3=None
   _4=_0
   if (_4==mosek.fusion.SolutionType.Default):
    _4 = self.__solutionptr
   if (_4==mosek.fusion.SolutionType.Default):
    if (self.__sol_itg is not None):
     _3 = self.__sol_itg
    elif (self.__sol_bas is not None): # bld/grindsted/final/default/src/fusion/Model.mbi:3512:18-33
     _3 = self.__sol_bas
    else:
     _3 = self.__sol_itr
   elif (_4==mosek.fusion.SolutionType.Interior): # bld/grindsted/final/default/src/fusion/Model.mbi:3515:16-46
    _3 = self.__sol_itr
   elif (_4==mosek.fusion.SolutionType.Basic): # bld/grindsted/final/default/src/fusion/Model.mbi:3516:16-43
    _3 = self.__sol_bas
   elif (_4==mosek.fusion.SolutionType.Integer): # bld/grindsted/final/default/src/fusion/Model.mbi:3517:16-45
    _3 = self.__sol_itg
   if (_3 is None):
    raise mosek_fusion_SolutionError._ctor_S("Solution not available")
   else:
    if (_2 or ((_1 and _3.isPrimalAcceptable(self.__acceptable_sol)) or ((not _1) and _3.isDualAcceptable(self.__acceptable_sol)))):
     return (_3)
    elif ((_3 is self.__sol_itg) and (not _1)): # bld/grindsted/final/default/src/fusion/Model.mbi:3531:18-49
     raise mosek_fusion_SolutionError._ctor_S("Dual solution does not exists for mixed-integer problems.")
    else:
     _5=mosek.fusion.Utils.StringBuffer()
     _6=(_3.pstatus)
     _7=(_3.probstatus)
     if (not _1):
      _6 = (_3.dstatus)
     _5._a_S("Solution status is ")
     if (_6==mosek.fusion.SolutionStatus.Undefined):
      _5._a_S("Undefined")
     elif (_6==mosek.fusion.SolutionStatus.Unknown): # bld/grindsted/final/default/src/fusion/Model.mbi:3542:20-52
      _5._a_S("Unknown")
     elif (_6==mosek.fusion.SolutionStatus.Optimal): # bld/grindsted/final/default/src/fusion/Model.mbi:3543:20-52
      _5._a_S("Optimal")
     elif (_6==mosek.fusion.SolutionStatus.Feasible): # bld/grindsted/final/default/src/fusion/Model.mbi:3544:20-53
      _5._a_S("Feasible")
     elif (_6==mosek.fusion.SolutionStatus.Certificate): # bld/grindsted/final/default/src/fusion/Model.mbi:3545:20-56
      _5._a_S("Certificate")
     elif (_6==mosek.fusion.SolutionStatus.IllposedCert): # bld/grindsted/final/default/src/fusion/Model.mbi:3546:20-57
      _5._a_S("IllposedCert")
     _5._a_S(" but ")
     if (self.__acceptable_sol==mosek.fusion.AccSolutionStatus.Anything):
      _5._a_S("Anything")
     elif (self.__acceptable_sol==mosek.fusion.AccSolutionStatus.Optimal): # bld/grindsted/final/default/src/fusion/Model.mbi:3549:20-63
      _5._a_S("Optimal")
     elif (self.__acceptable_sol==mosek.fusion.AccSolutionStatus.Feasible): # bld/grindsted/final/default/src/fusion/Model.mbi:3550:20-64
      _5._a_S("at least Feasible")
     elif (self.__acceptable_sol==mosek.fusion.AccSolutionStatus.Certificate): # bld/grindsted/final/default/src/fusion/Model.mbi:3551:20-67
      _5._a_S("Certificate")
     _5._a_S(" is expected. Reason: Accessing ")
     if (_3 is self.__sol_itr):
      _5._a_S("interior-point solution")
     elif (_3 is self.__sol_bas): # bld/grindsted/final/default/src/fusion/Model.mbi:3554:20-34
      _5._a_S("basic solution")
     elif (_3 is self.__sol_itg): # bld/grindsted/final/default/src/fusion/Model.mbi:3555:20-34
      _5._a_S("integer solution")
     _5._a_S(" whose problem status is ")
     if (_7==mosek.fusion.ProblemStatus.Unknown):
      _5._a_S("Unknown")
     elif (_7==mosek.fusion.ProblemStatus.PrimalAndDualFeasible): # bld/grindsted/final/default/src/fusion/Model.mbi:3558:20-66
      _5._a_S("PrimalAndDualFeasible")
     elif (_7==mosek.fusion.ProblemStatus.PrimalFeasible): # bld/grindsted/final/default/src/fusion/Model.mbi:3559:20-59
      _5._a_S("PrimalFeasible")
     elif (_7==mosek.fusion.ProblemStatus.DualFeasible): # bld/grindsted/final/default/src/fusion/Model.mbi:3560:20-57
      _5._a_S("DualFeasible")
     elif (_7==mosek.fusion.ProblemStatus.PrimalInfeasible): # bld/grindsted/final/default/src/fusion/Model.mbi:3561:20-61
      _5._a_S("PrimalInfeasible")
     elif (_7==mosek.fusion.ProblemStatus.DualInfeasible): # bld/grindsted/final/default/src/fusion/Model.mbi:3562:20-59
      _5._a_S("DualInfeasible")
     elif (_7==mosek.fusion.ProblemStatus.PrimalAndDualInfeasible): # bld/grindsted/final/default/src/fusion/Model.mbi:3563:20-68
      _5._a_S("PrimalAndDualInfeasible")
     elif (_7==mosek.fusion.ProblemStatus.IllPosed): # bld/grindsted/final/default/src/fusion/Model.mbi:3564:20-53
      _5._a_S("IllPosed")
     elif (_7==mosek.fusion.ProblemStatus.PrimalInfeasibleOrUnbounded): # bld/grindsted/final/default/src/fusion/Model.mbi:3565:20-72
      _5._a_S("PrimalInfeasibleOrUnbounded")
     _5._a_S(".")
     raise mosek_fusion_SolutionError._ctor_S(_5._toString_())
  def _get_1sol_1cache_alt_Emosek_4fusion_4SolutionType_2Z(self,_t__0,_t__1):
    return self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2Z(__0,_1)
  def _get_1sol_1cache_Emosek_4fusion_4SolutionType_2Z(self,_0,_1):
   return (self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2ZZ(_0,_1,False))
  def _setSolution_1xx_alt__3I_3D(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _1_res = self._setSolution_1xx__3I_3D(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _setSolution_1xx__3I_3D(self,_0,_1):
   self._ensure_1initsol_1xx_()
   for _2 in range(0,int((_0).shape[0])):
    self.__initsol_xx[_0[_2]] = _1[_2]
    self.__initsol_xx_flag[_0[_2]] = True
  def _ensure_1initsol_1xx_alt_(self,):
    return self._ensure_1initsol_1xx_()
  def _ensure_1initsol_1xx_(self,):
   _0=self._task_1numvar_()
   if (self.__initsol_xx is None):
    self.__initsol_xx = numpy.zeros((_0,), dtype=numpy.dtype(numpy.float64))
    self.__initsol_xx_flag = numpy.array([False for _1 in range(0,_0)], dtype=numpy.dtype(bool))
   elif (int((self.__initsol_xx).shape[0]) < _0): # bld/grindsted/final/default/src/fusion/Model.mbi:3467:16-47
    _2=self.__initsol_xx
    _3=self.__initsol_xx_flag
    self.__initsol_xx = numpy.zeros((_0,), dtype=numpy.dtype(numpy.float64))
    self.__initsol_xx_flag = numpy.zeros((_0,), dtype=numpy.dtype(bool))
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(_2,0,self.__initsol_xx,0,int((_2).shape[0]))
    for _4 in range(0,int((_2).shape[0])):
     self.__initsol_xx_flag[_4] = _3[_4]
  def _getSolution_1accptr_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self._getSolution_1accptr_Emosek_4fusion_4SolutionType_2(__0)
  def _getSolution_1accptr_Emosek_4fusion_4SolutionType_2(self,_0):
   return ((self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2ZZ(_0,True,True).accptr))
  def _getSolution_1accy_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self._getSolution_1accy_Emosek_4fusion_4SolutionType_2(__0)
  def _getSolution_1accy_Emosek_4fusion_4SolutionType_2(self,_0):
   return ((self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2Z(_0,False).accy))
  def _getSolution_1accx_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self._getSolution_1accx_Emosek_4fusion_4SolutionType_2(__0)
  def _getSolution_1accx_Emosek_4fusion_4SolutionType_2(self,_0):
   return ((self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2Z(_0,True).accx))
  def _getSolution_1bars_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self._getSolution_1bars_Emosek_4fusion_4SolutionType_2(__0)
  def _getSolution_1bars_Emosek_4fusion_4SolutionType_2(self,_0):
   return ((self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2Z(_0,False).bars))
  def _getSolution_1barx_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self._getSolution_1barx_Emosek_4fusion_4SolutionType_2(__0)
  def _getSolution_1barx_Emosek_4fusion_4SolutionType_2(self,_0):
   return ((self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2Z(_0,True).barx))
  def _getSolution_1y_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self._getSolution_1y_Emosek_4fusion_4SolutionType_2(__0)
  def _getSolution_1y_Emosek_4fusion_4SolutionType_2(self,_0):
   return ((self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2Z(_0,False).y))
  def _getSolution_1xc_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self._getSolution_1xc_Emosek_4fusion_4SolutionType_2(__0)
  def _getSolution_1xc_Emosek_4fusion_4SolutionType_2(self,_0):
   return ((self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2Z(_0,True).xc))
  def _getSolution_1suc_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self._getSolution_1suc_Emosek_4fusion_4SolutionType_2(__0)
  def _getSolution_1suc_Emosek_4fusion_4SolutionType_2(self,_0):
   return ((self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2Z(_0,False).suc))
  def _getSolution_1slc_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self._getSolution_1slc_Emosek_4fusion_4SolutionType_2(__0)
  def _getSolution_1slc_Emosek_4fusion_4SolutionType_2(self,_0):
   return ((self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2Z(_0,False).slc))
  def _getSolution_1sux_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self._getSolution_1sux_Emosek_4fusion_4SolutionType_2(__0)
  def _getSolution_1sux_Emosek_4fusion_4SolutionType_2(self,_0):
   return ((self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2Z(_0,False).sux))
  def _getSolution_1slx_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self._getSolution_1slx_Emosek_4fusion_4SolutionType_2(__0)
  def _getSolution_1slx_Emosek_4fusion_4SolutionType_2(self,_0):
   return ((self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2Z(_0,False).slx))
  def _getSolution_1yx_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self._getSolution_1yx_Emosek_4fusion_4SolutionType_2(__0)
  def _getSolution_1yx_Emosek_4fusion_4SolutionType_2(self,_0):
   return ((self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2Z(_0,False).yx))
  def _getSolution_1xx_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self._getSolution_1xx_Emosek_4fusion_4SolutionType_2(__0)
  def _getSolution_1xx_Emosek_4fusion_4SolutionType_2(self,_0):
   return ((self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2Z(_0,True).xx))
  @staticmethod
  def _match_selectedSolution_Emosek_4fusion_4SolutionType_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Emosek_4fusion_4SolutionType_2__(_0))
  @staticmethod
  def _match_alt_selectedSolution_Emosek_4fusion_4SolutionType_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Emosek_4fusion_4SolutionType_2__(_0))
  def _selectedSolution_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self._selectedSolution_Emosek_4fusion_4SolutionType_2(__0)
  def _selectedSolution_Emosek_4fusion_4SolutionType_2(self,_0):
   self.__solutionptr = _0
  @staticmethod
  def _match_getAcceptedSolutionStatus_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getAcceptedSolutionStatus_(*args):
    if len(args) != 0: return False
    return True
  def _getAcceptedSolutionStatus_alt_(self,):
    return self._getAcceptedSolutionStatus_()
  def _getAcceptedSolutionStatus_(self,):
   return (self.__acceptable_sol)
  @staticmethod
  def _match_acceptedSolutionStatus_Emosek_4fusion_4AccSolutionStatus_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Emosek_4fusion_4AccSolutionStatus_2__(_0))
  @staticmethod
  def _match_alt_acceptedSolutionStatus_Emosek_4fusion_4AccSolutionStatus_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Emosek_4fusion_4AccSolutionStatus_2__(_0))
  def _acceptedSolutionStatus_alt_Emosek_4fusion_4AccSolutionStatus_2(self,_t__0):
    return self._acceptedSolutionStatus_Emosek_4fusion_4AccSolutionStatus_2(__0)
  def _acceptedSolutionStatus_Emosek_4fusion_4AccSolutionStatus_2(self,_0):
   self.__acceptable_sol = _0
  @staticmethod
  def _match_getProblemStatus_Emosek_4fusion_4SolutionType_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Emosek_4fusion_4SolutionType_2__(_0))
  @staticmethod
  def _match_alt_getProblemStatus_Emosek_4fusion_4SolutionType_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Emosek_4fusion_4SolutionType_2__(_0))
  def _getProblemStatus_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self._getProblemStatus_Emosek_4fusion_4SolutionType_2(__0)
  def _getProblemStatus_Emosek_4fusion_4SolutionType_2(self,_0):
   _1=None
   if (_0==mosek.fusion.SolutionType.Default):
    if (self.__sol_itg is not None):
     _1 = self.__sol_itg
    elif (self.__sol_bas is not None): # bld/grindsted/final/default/src/fusion/Model.mbi:3334:18-33
     _1 = self.__sol_bas
    else:
     _1 = self.__sol_itr
   elif (_0==mosek.fusion.SolutionType.Interior): # bld/grindsted/final/default/src/fusion/Model.mbi:3337:16-46
    _1 = self.__sol_itr
   elif (_0==mosek.fusion.SolutionType.Basic): # bld/grindsted/final/default/src/fusion/Model.mbi:3338:16-43
    _1 = self.__sol_bas
   elif (_0==mosek.fusion.SolutionType.Integer): # bld/grindsted/final/default/src/fusion/Model.mbi:3339:16-45
    _1 = self.__sol_itg
   if (_1 is None):
    return (mosek.fusion.ProblemStatus.Unknown)
   else:
    return ((_1.probstatus))
  @staticmethod
  def _match_getDualSolutionStatus_Emosek_4fusion_4SolutionType_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Emosek_4fusion_4SolutionType_2__(_0))
  @staticmethod
  def _match_alt_getDualSolutionStatus_Emosek_4fusion_4SolutionType_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Emosek_4fusion_4SolutionType_2__(_0))
  def _getDualSolutionStatus_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self._getDualSolutionStatus_Emosek_4fusion_4SolutionType_2(__0)
  def _getDualSolutionStatus_Emosek_4fusion_4SolutionType_2(self,_0):
   return (self._getSolutionStatus_Emosek_4fusion_4SolutionType_2Z(_0,False))
  @staticmethod
  def _match_getPrimalSolutionStatus_Emosek_4fusion_4SolutionType_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Emosek_4fusion_4SolutionType_2__(_0))
  @staticmethod
  def _match_alt_getPrimalSolutionStatus_Emosek_4fusion_4SolutionType_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Emosek_4fusion_4SolutionType_2__(_0))
  def _getPrimalSolutionStatus_alt_Emosek_4fusion_4SolutionType_2(self,_t__0):
    return self._getPrimalSolutionStatus_Emosek_4fusion_4SolutionType_2(__0)
  def _getPrimalSolutionStatus_Emosek_4fusion_4SolutionType_2(self,_0):
   return (self._getSolutionStatus_Emosek_4fusion_4SolutionType_2Z(_0,True))
  def _getSolutionStatus_alt_Emosek_4fusion_4SolutionType_2Z(self,_t__0,_t__1):
    return self._getSolutionStatus_Emosek_4fusion_4SolutionType_2Z(__0,_1)
  def _getSolutionStatus_Emosek_4fusion_4SolutionType_2Z(self,_0,_1):
   try:
    _2=self._get_1sol_1cache_Emosek_4fusion_4SolutionType_2ZZ(_0,_1,True)
    if _1:
     return ((_2.pstatus))
    else:
     return ((_2.dstatus))
   except mosek_fusion_SolutionError as _3:
    return (mosek.fusion.SolutionStatus.Undefined)
  def _update_alt__3ILmosek_4fusion_4Expression_2(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=_t__1
   _1_res = self._update__3ILmosek_4fusion_4Expression_2(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _update__3ILmosek_4fusion_4Expression_2(self,_0,_1):
   mosek_fusion_ExprDense._ctor_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprOptimizeCode._ctor_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprCompress._ctor_Lmosek_4fusion_4Expression_2(_1))).recursive_eval(self.__ws,self.__rs,self.__xs,self.__cache_evaluations)
   self.__ws.pop_expr()
   _2=(self.__ws.nd)
   _3=(self.__ws.shape_base)
   _4=(self.__ws.nelem)
   _5=(self.__ws.nnz)
   _6=(self.__ws.hassp)
   _7=(self.__ws.ncodeatom)
   _8=(self.__ws.ptr_base)
   _9=(self.__ws.sp_base)
   _10=(self.__ws.nidxs_base)
   _11=(self.__ws.cof_base)
   _12=(self.__ws.code_base)
   _13=(self.__ws.codeptr_base)
   _14=(self.__ws.cconst_base)
   _15=(self.__ws.i32)
   _16=(self.__ws.i64)
   _17=(self.__ws.f64)
   _18=0
   for _19 in range(0,_4):
    if (_0[_19] >= 0):
     _18 += 1
   _20=(_4 - _18)
   if (_18==_4):
    self.__putarows__3ILmosek_4fusion_4WorkStack_2IIIII(_0,self.__ws,_4,_5,_8,_10,_11)
    if (_7 > 0):
     self.__con_blocks.replace_row_code(self.__rs,_0,_8,_10,_13,_12,_14)
    else:
     self.__con_blocks.clear_row_code(_0)
   elif (_20==_4): # bld/grindsted/final/default/src/fusion/Model.mbi:3192:16-35
    self.__putfrows__3IILmosek_4fusion_4WorkStack_2IIIII(numpy.array([(- (1 + _0[_21])) for _21 in range(0,_4)], dtype=numpy.dtype(numpy.int32)),0,self.__ws,_4,_5,_8,_10,_11)
    if (_7 > 0):
     self.__afe_blocks.replace_row_code(self.__rs,numpy.array([(- (1 + _0[_22])) for _22 in range(0,_4)], dtype=numpy.dtype(numpy.int32)),_8,_10,_13,_12,_14)
    else:
     self.__afe_blocks.clear_row_code(numpy.array([(- (1 + _0[_23])) for _23 in range(0,_4)], dtype=numpy.dtype(numpy.int32)))
   else:
    _24=0
    _25=0
    _26=0
    _27=0
    for _28 in range(0,_4):
     if (_0[_28] >= 0):
      _27 += (_15[((_8 + _28) + 1)] - _15[(_8 + _28)])
     else:
      _26 += (_15[((_8 + _28) + 1)] - _15[(_8 + _28)])
    _29=self.__xs.alloci32(_18)
    _30=self.__xs.alloci32(_20)
    _31=self.__xs.alloci32((_18 + 1))
    _32=self.__xs.alloci32((_20 + 1))
    _33=self.__xs.alloci64(_27)
    _34=self.__xs.alloci64(_26)
    _35=self.__xs.allocf64(_27)
    _36=self.__xs.allocf64(_26)
    _37=(self.__xs.f64)
    _38=(self.__xs.i64)
    _39=(self.__xs.i32)
    _39[_31] = 0
    _39[_32] = 0
    _40=0
    _41=0
    _42=0
    _43=0
    for _44 in range(0,_4):
     _45=_15[(_8 + _44)]
     _46=_15[((_8 + _44) + 1)]
     if (_0[_44] >= 0):
      mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(_16,(_10 + _45),_38,(_33 + _43),(_46 - _45))
      mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(_17,(_11 + _45),_37,(_35 + _43),(_46 - _45))
      _43 += (_46 - _45)
      _39[(_29 + _41)] = _0[_44]
      _39[((_31 + _41) + 1)] = _43
      _41 += 1
     else:
      mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(_16,(_10 + _45),_38,(_34 + _42),(_46 - _45))
      mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(_17,(_11 + _45),_37,(_36 + _42),(_46 - _45))
      _42 += (_46 - _45)
      _39[(_30 + _40)] = (- (1 + _0[_44]))
      _39[((_32 + _40) + 1)] = _42
      _40 += 1
    self.__putarows__3ILmosek_4fusion_4WorkStack_2IIIII(numpy.array([_39[(_29 + _47)] for _47 in range(0,_18)], dtype=numpy.dtype(numpy.int32)),self.__xs,_18,_27,_31,_33,_35)
    self.__putfrows__3IILmosek_4fusion_4WorkStack_2IIIII(_39,_30,self.__xs,_20,_26,_32,_34,_36)
    if (_7 > 0):
     for _48 in range(0,_4):
      if (_0[_48] >= 0):
       _25 += (_15[(_13 + _15[((_8 + _48) + 1)])] - _15[(_13 + _15[(_8 + _48)])])
      else:
       _24 += (_15[(_13 + _15[((_8 + _48) + 1)])] - _15[(_13 + _15[(_8 + _48)])])
     _49=self.__xs.alloci32((_27 + 1))
     _50=self.__xs.alloci32((_26 + 1))
     _51=self.__xs.alloci32(_25)
     _52=self.__xs.alloci32(_24)
     _53=self.__xs.allocf64(_25)
     _54=self.__xs.allocf64(_24)
     _39[_49] = 0
     _39[_50] = 0
     _55=0
     _56=0
     _57=0
     _58=0
     for _59 in range(0,_4):
      _60=_15[(_8 + _59)]
      _61=_15[((_8 + _59) + 1)]
      if (_0[_59] >= 0):
       mosek.fusion.Utils.Tools._arraycopy__3II_3III(_15,(_12 + _15[(_13 + _60)]),_39,(_51 + _56),(_15[(_13 + _61)] - _15[(_13 + _60)]))
       mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(_17,(_14 + _15[(_13 + _60)]),_37,(_53 + _56),(_15[(_13 + _61)] - _15[(_13 + _60)]))
       for _62 in range(_60,_61):
        _56 += (_15[((_13 + _62) + 1)] - _15[(_13 + _62)])
        _39[((_49 + _58) + 1)] = _56
        _58 += 1
      else:
       mosek.fusion.Utils.Tools._arraycopy__3II_3III(_15,(_12 + _15[(_13 + _60)]),_39,(_52 + _55),(_15[(_13 + _61)] - _15[(_13 + _60)]))
       mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(_17,(_14 + _15[(_13 + _60)]),_37,(_54 + _55),(_15[(_13 + _61)] - _15[(_13 + _60)]))
       for _63 in range(_60,_61):
        _55 += (_15[((_13 + _63) + 1)] - _15[(_13 + _63)])
        _39[((_50 + _42) + 1)] = _55
        _42 += 1
     self.__con_blocks.replace_row_code(self.__xs,numpy.array([_39[(_29 + _64)] for _64 in range(0,_18)], dtype=numpy.dtype(numpy.int32)),_31,_33,_49,_51,_53)
     self.__afe_blocks.replace_row_code(self.__xs,numpy.array([numpy.int32(_38[(_30 + _65)]) for _65 in range(0,_20)], dtype=numpy.dtype(numpy.int32)),_32,_34,_50,_52,_54)
    else:
     self.__con_blocks.clear_row_code(numpy.array([_39[(_29 + _66)] for _66 in range(0,_18)], dtype=numpy.dtype(numpy.int32)))
     self.__afe_blocks.clear_row_code(numpy.array([numpy.int32(_38[(_30 + _67)]) for _67 in range(0,_20)], dtype=numpy.dtype(numpy.int32)))
   self.__xs.clear()
  def _update_alt__3ILmosek_4fusion_4Expression_2_3I(self,_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=_t__1
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _1_res = self._update__3ILmosek_4fusion_4Expression_2_3I(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _update__3ILmosek_4fusion_4Expression_2_3I(self,_0,_1,_2):
   for _3 in range(0,int((_0).shape[0])):
    if ((_0[_3] >= 0) and self.__con_blocks.row_is_parameterized(_3)):
     raise mosek_fusion_UpdateError._ctor_S("Cannot update parameterized constraint")
    elif ((_0[_3] < 0) and self.__con_blocks.row_is_parameterized((- (_3 + 1)))): # bld/grindsted/final/default/src/fusion/Model.mbi:2949:18-77
     raise mosek_fusion_UpdateError._ctor_S("Cannot update parameterized constraint")
   mosek_fusion_ExprDense._ctor_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprCompress._ctor_Lmosek_4fusion_4Expression_2(_1)).recursive_eval(self.__ws,self.__rs,self.__xs,self.__cache_evaluations)
   self.__ws.pop_expr()
   _4=(self.__ws.nd)
   _5=(self.__ws.nelem)
   _6=(self.__ws.nnz)
   _7=(self.__ws.hassp)
   _8=(self.__ws.ncodeatom)
   _9=(self.__ws.shape_base)
   _10=(self.__ws.ptr_base)
   _11=(self.__ws.sp_base)
   _12=(self.__ws.nidxs_base)
   _13=(self.__ws.cof_base)
   _14=(self.__ws.code_base)
   _15=(self.__ws.codeptr_base)
   _16=(self.__ws.cconst_base)
   _17=(self.__ws.i32)
   _18=(self.__ws.i64)
   _19=(self.__ws.f64)
   _20=0
   for _21 in range(0,_5):
    if (_0[_21] >= 0):
     _20 += 1
   _22=(_5 - _20)
   if ((_20==_5) or (_22==_5)):
    _23=(int((_0).shape[0]) * int((_2).shape[0]))
    _24=numpy.zeros((_23,), dtype=numpy.dtype(numpy.float64))
    _25=0
    for _26 in range(0,_5):
     _27=_17[(_10 + _26)]
     _28=_17[((_10 + _26) + 1)]
     _29=_27
     _30=0
     while ((_30 < int((_2).shape[0])) and (_29 < _28)):
      if (_2[_30] < _18[(_12 + _29)]):
       _30 += 1
      elif (_2[_30] > _18[(_12 + _29)]): # bld/grindsted/final/default/src/fusion/Model.mbi:2990:22-53
       _29 += 1
      else:
       _24[(_25 + _30)] = _19[(_13 + _29)]
       _30 += 1
       _29 += 1
     _25 += int((_2).shape[0])
    _31=numpy.array([_2[_33] for _32 in range(0,_5) for _33 in range(0,int((_2).shape[0]))], dtype=numpy.dtype(numpy.int32))
    if (_20==_5):
     _34=numpy.array([_0[_35] for _35 in range(0,_5) for _36 in range(0,int((_2).shape[0]))], dtype=numpy.dtype(numpy.int32))
     self._task_1putaijlist__3I_3I_3DJ(_34,_31,_24,_25)
     if (_8 > 0):
      self.__con_blocks.replace_row_code(self.__rs,_0,_10,_12,_15,_14,_16)
    else:
     _37=numpy.array([(- (_0[_38] + 1)) for _38 in range(0,_5) for _39 in range(0,int((_2).shape[0]))], dtype=numpy.dtype(numpy.int32))
     self._task_1putafefijlist__3I_3I_3D(_37,_31,_24)
     if (_8 > 0):
      self.__afe_blocks.replace_row_code(self.__rs,numpy.array([(- (1 + _0[_40])) for _40 in range(0,_5)], dtype=numpy.dtype(numpy.int32)),_10,_12,_15,_14,_16)
   else:
    _41=(_22 * int((_2).shape[0]))
    _42=(_20 * int((_2).shape[0]))
    _43=numpy.zeros((_42,), dtype=numpy.dtype(numpy.float64))
    _44=numpy.zeros((_41,), dtype=numpy.dtype(numpy.float64))
    _45=numpy.array([_2[_47] for _46 in range(0,_20) for _47 in range(0,int((_2).shape[0]))], dtype=numpy.dtype(numpy.int32))
    _48=numpy.array([_2[_50] for _49 in range(0,_22) for _50 in range(0,int((_2).shape[0]))], dtype=numpy.dtype(numpy.int32))
    _51=numpy.zeros((_20,), dtype=numpy.dtype(numpy.int32))
    _52=numpy.zeros((_22,), dtype=numpy.dtype(numpy.int32))
    _53=0
    _54=0
    _55=0
    _56=0
    _57=0
    _58=0
    for _59 in range(0,_5):
     _60=_17[(_10 + _59)]
     _61=_17[((_10 + _59) + 1)]
     _62=_60
     _63=0
     if (_0[_59] >= 0):
      while ((_63 < int((_2).shape[0])) and (_62 < _61)):
       if (_2[_63] < _18[(_12 + _62)]):
        _63 += 1
       elif (_2[_63] > _18[(_12 + _62)]): # bld/grindsted/final/default/src/fusion/Model.mbi:3032:24-55
        _62 += 1
       else:
        _43[(_58 + _63)] = _19[(_13 + _62)]
        _63 += 1
        _62 += 1
      for _64 in range(0,int((_2).shape[0])):
       _51[(_58 + _64)] = _0[_59]
      _58 += int((_2).shape[0])
     else:
      while ((_63 < int((_2).shape[0])) and (_62 < _61)):
       if (_2[_63] < _18[(_12 + _62)]):
        _63 += 1
       elif (_2[_63] > _18[(_12 + _62)]): # bld/grindsted/final/default/src/fusion/Model.mbi:3044:24-55
        _62 += 1
       else:
        _44[(_57 + _63)] = _19[(_13 + _62)]
        _63 += 1
        _62 += 1
      for _65 in range(0,int((_2).shape[0])):
       _52[(_57 + _65)] = (- (1 + _0[_59]))
      _57 += int((_2).shape[0])
    self._task_1putaijlist__3I_3I_3DJ(_51,_45,_43,_58)
    self._task_1putafefijlist__3I_3I_3D(_52,_48,_44)
    if (_8 > 0):
     for _66 in range(0,_5):
      if (_0[_66] >= 0):
       _58 += (_17[((_10 + _66) + 1)] - _17[(_10 + _66)])
      else:
       _57 += (_17[((_10 + _66) + 1)] - _17[(_10 + _66)])
     _67=numpy.zeros((_20,), dtype=numpy.dtype(numpy.int32))
     _68=numpy.zeros((_22,), dtype=numpy.dtype(numpy.int32))
     _69=self.__xs.alloci32((_20 + 1))
     _70=self.__xs.alloci32((_22 + 1))
     _71=self.__xs.alloci64(_58)
     _72=self.__xs.alloci64(_57)
     _73=(self.__xs.f64)
     _74=(self.__xs.i64)
     _75=(self.__xs.i32)
     _75[_69] = 0
     _75[_70] = 0
     _76=0
     _77=0
     _78=0
     _79=0
     for _80 in range(0,_5):
      _81=_17[(_10 + _80)]
      _82=_17[((_10 + _80) + 1)]
      if (_0[_80] >= 0):
       _79 += (_82 - _81)
       _67[_77] = _0[_80]
       _75[((_69 + _77) + 1)] = _79
       _77 += 1
      else:
       _78 += (_82 - _81)
       _68[_76] = (- (1 + _0[_80]))
       _75[((_70 + _76) + 1)] = _78
       _76 += 1
     for _83 in range(0,_5):
      if (_0[_83] >= 0):
       _56 += (_17[(_15 + _17[((_10 + _83) + 1)])] - _17[(_15 + _17[(_10 + _83)])])
      else:
       _55 += (_17[(_15 + _17[((_10 + _83) + 1)])] - _17[(_15 + _17[(_10 + _83)])])
     _84=self.__xs.alloci32((_58 + 1))
     _85=self.__xs.alloci32((_57 + 1))
     _86=self.__xs.alloci32(_56)
     _87=self.__xs.alloci32(_55)
     _88=self.__xs.allocf64(_56)
     _89=self.__xs.allocf64(_55)
     _75[_84] = 0
     _75[_85] = 0
     _90=0
     _91=0
     _92=0
     _93=0
     for _94 in range(0,_5):
      _95=_17[(_10 + _94)]
      _96=_17[((_10 + _94) + 1)]
      if (_0[_94] >= 0):
       mosek.fusion.Utils.Tools._arraycopy__3II_3III(_17,(_14 + _17[(_15 + _95)]),_75,(_86 + _91),(_17[(_15 + _96)] - _17[(_15 + _95)]))
       mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(_19,(_16 + _17[(_15 + _95)]),_73,(_88 + _91),(_17[(_15 + _96)] - _17[(_15 + _95)]))
       for _97 in range(_95,_96):
        _91 += (_17[((_15 + _97) + 1)] - _17[(_15 + _97)])
        _75[((_84 + _93) + 1)] = _91
        _93 += 1
      else:
       mosek.fusion.Utils.Tools._arraycopy__3II_3III(_17,(_14 + _17[(_15 + _95)]),_75,(_87 + _90),(_17[(_15 + _96)] - _17[(_15 + _95)]))
       mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(_19,(_16 + _17[(_15 + _95)]),_73,(_89 + _90),(_17[(_15 + _96)] - _17[(_15 + _95)]))
       for _98 in range(_95,_96):
        _90 += (_17[((_15 + _98) + 1)] - _17[(_15 + _98)])
        _75[((_85 + _78) + 1)] = _90
        _78 += 1
     self.__con_blocks.replace_row_code(self.__xs,_67,_69,_71,_84,_86,_88)
     self.__afe_blocks.replace_row_code(self.__xs,_68,_70,_72,_85,_87,_89)
    else:
     _99=numpy.zeros((_20,), dtype=numpy.dtype(numpy.int32))
     _100=numpy.zeros((_22,), dtype=numpy.dtype(numpy.int32))
     _101=0
     _102=0
     for _103 in range(0,_5):
      if (_0[_103] >= 0):
       _99[_102] = _0[_103]
       _102 += 1
      else:
       _100[_101] = (- (1 + _0[_103]))
       _101 += 1
     self.__con_blocks.clear_row_code(_99)
     self.__afe_blocks.clear_row_code(_100)
   self.__xs.clear()
  @staticmethod
  def _match_updateObjective_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _match_alt_updateObjective_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_1))
  def _updateObjective_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(self,_t__0,_t__1):
    return self._updateObjective_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(_0,_1)
  def _updateObjective_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(self,_0,_1):
   if (_0.getSize()!=1):
    raise mosek_fusion_DimensionError._ctor_S("Invalid expression size for objective")
   if ((self.__obj_blocks.code_used) > 0):
    raise mosek_fusion_UpdateError._ctor_S("Cannot update parameterized constraint")
   _2=_1.numInst()
   _3=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int64))
   if (_2 < _1.getSize()):
    _4=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int64))
    _1.inst(0,_4,0,_3)
   else:
    _1.inst(0,_3)
   for _5 in range(0,_2):
    if (_3[_5] < 0):
     raise mosek_fusion_UpdateError._ctor_S("Updating semidefinite terms is currently not possible")
   _6=True
   for _7 in range(0,(_2 - 1)):
    _6 = (_6 and (_3[_7] < _3[(_7 - 1)]))
   _8=None
   if _6:
    _8 = numpy.array([numpy.int32(_3[_9]) for _9 in range(0,_2)], dtype=numpy.dtype(numpy.int32))
   else:
    _10=numpy.array([_11 for _11 in range((- 1),_2)], dtype=numpy.dtype(numpy.int64))
    mosek.fusion.CommonTools._argQsort__3J_3J_3JJJ(_10,_3,None,0,_2)
    _8 = numpy.array([numpy.int32(_3[_10[_12]]) for _12 in range(0,_2)], dtype=numpy.dtype(numpy.int32))
   _13=int((_8).shape[0])
   _14=numpy.zeros((_13,), dtype=numpy.dtype(numpy.float64))
   _15=_8
   mosek_fusion_ExprDense._ctor_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprCompress._ctor_Lmosek_4fusion_4Expression_2(_0)).recursive_eval(self.__ws,self.__rs,self.__xs,self.__cache_evaluations)
   self.__ws.pop_expr()
   pass
   _16=(self.__ws.nd)
   _17=(self.__ws.nelem)
   _18=(self.__ws.nnz)
   _19=(self.__ws.hassp)
   _20=(self.__ws.ncodeatom)
   _21=(self.__ws.shape_base)
   _22=(self.__ws.ptr_base)
   _23=(self.__ws.sp_base)
   _24=(self.__ws.nidxs_base)
   _25=(self.__ws.cof_base)
   _26=(self.__ws.code_base)
   _27=(self.__ws.codeptr_base)
   _28=(self.__ws.cconst_base)
   pass
   if (_20 > 0):
    raise mosek_fusion_UpdateError._ctor_S("Cannot update parameterized objective")
   _29=(self.__ws.i32)
   _30=(self.__ws.i64)
   _31=(self.__ws.f64)
   _32=0
   for _33 in range(0,_17):
    _34=_29[(_22 + _33)]
    _35=_29[((_22 + _33) + 1)]
    _36=_34
    _37=0
    while ((_37 < int((_8).shape[0])) and (_36 < _35)):
     if (_8[_37] < _30[(_24 + _36)]):
      _37 += 1
     elif (_8[_37] > _30[(_24 + _36)]): # bld/grindsted/final/default/src/fusion/Model.mbi:2926:20-51
      _36 += 1
     else:
      _14[(_32 + _37)] = _31[(_25 + _36)]
      _37 += 1
      _36 += 1
    _32 += int((_8).shape[0])
   self._task_1putclist__3I_3D(_15,_14)
   if (_20 > 0):
    self.__obj_blocks.replace_row_code(self.__rs,numpy.array([0], dtype=numpy.dtype(numpy.int32)),_22,_24,_27,_26,_28)
  def __parameter_1unchecked_alt_S_3I_3J(self,_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int64))
   _1_res = self.__parameter_1unchecked_S_3I_3J(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __parameter_1unchecked_S_3I_3J(self,_0,_1,_2):
   if ((int(len(_0)) > 0) and self.__par_map._hasItem_S(_0)):
    raise mosek_fusion_NameError._ctor_S("Duplicate parameter name")
   _3=mosek.fusion.Set._size__3I(_1)
   _4=(int((_2).shape[0]) if ((_2 is not None) ) else numpy.int32(_3))
   if (self.__param_value is None):
    self.__param_value = numpy.zeros((_4,), dtype=numpy.dtype(numpy.float64))
   else:
    if ((self.__param_num + _4) > int((self.__param_value).shape[0])):
     _5=self.__param_value
     _6=((2 * int((_5).shape[0])) if (((2 * int((_5).shape[0])) > (int((_5).shape[0]) + _4)) ) else (int((_5).shape[0]) + _4))
     self.__param_value = numpy.zeros((_6,), dtype=numpy.dtype(numpy.float64))
     if (self.__param_num > 0):
      mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(_5,0,self.__param_value,0,self.__param_num)
   _7=mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(self,_1,_2,numpy.array([(self.__param_num + _8) for _8 in range(0,numpy.int32(_4))], dtype=numpy.dtype(numpy.int32)))
   self.__param_num += _4
   if (int(len(_0)) > 0):
    if ((self.__parameters is None) or (self.__numparameter==int((self.__parameters).shape[0]))):
     _9=self.__parameters
     self.__parameters = numpy.array([None for _10 in range(0,((self.__numparameter * 2) + 64))], dtype=numpy.dtype(object))
     for _11 in range(0,self.__numparameter):
      self.__parameters[_11] = _9[_11]
    self.__parameters[self.__numparameter] = _7
    self.__par_map._setItem_SI(_0,self.__numparameter)
    self.__numparameter += 1
   return (_7)
  def __parameter_1_alt_S_3I_3J(self,_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int64))
   _1_res = self.__parameter_1_S_3I_3J(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __parameter_1_S_3I_3J(self,_0,_1,_2):
   _3=True
   _4=int((_1).shape[0])
   if ((_2 is not None) and (int((_2).shape[0]) > 0)):
    _5=(_2[(int((_2).shape[0]) - 1)] < mosek.fusion.Set._size__3I(_1))
    for _6 in range(1,int((_2).shape[0])):
     _5 = (_5 and (_2[(_6 - 1)] < _2[_6]))
    if (not _5):
     raise mosek_fusion_IndexError._ctor_S("Unordered sparsity pattern")
   return (self.__parameter_1unchecked_S_3I_3J(_0,_1,_2))
  def __parameter_1_alt_S_3I_3_5I(self,_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,ndmin=_monty.checkShape(_t__2,2),dtype=numpy.dtype(numpy.int32))
   _1_res = self.__parameter_1_S_3I_3_5I(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __parameter_1_S_3I_3_5I(self,_0,_1,_2):
   _3=int((_2).shape[0])
   _4=int((_2).shape[1])
   if (int((_1).shape[0])!=_4):
    raise mosek_fusion_LengthError._ctor_S("Invalid sparsity")
   if (_2 is None):
    return (self.__parameter_1unchecked_S_3I_3J(_0,_1,None))
   else:
    _5=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int64))
    _6=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int64))
    _6[(_4 - 1)] = 1
    for _7 in range(1,_4):
     _6[((_4 - 1) - _7)] = (_6[(_4 - _7)] * _1[(_4 - _7)])
    for _8 in range(0,_3):
     _5[_8] = 0
     for _9 in range(0,_4):
      _5[_8] += (_2[_8,_9] * _6[_9])
    return (self.__parameter_1_S_3I_3J(_0,_1,_5))
  @staticmethod
  def _match_parameter_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_S__(_0))
  @staticmethod
  def _match_alt_parameter_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_S__(_0))
  def _parameter_alt_S(self,_t__0):
    return self._parameter_S(_0)
  def _parameter_S(self,_0):
   _1=None
   return (self.__parameter_1_S_3I_3J(_0,numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)),_1))
  @staticmethod
  def _match_parameter_SIII(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_S__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2) and __arg_match_I__(_3))
  @staticmethod
  def _match_alt_parameter_SIII(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2) and __arg_alt_match_I__(_3))
  def _parameter_alt_SIII(self,_t__0,_t__1,_t__2,_t__3):
    return self._parameter_SIII(_0,numpy.int32(__1),numpy.int32(__2),numpy.int32(__3))
  def _parameter_SIII(self,_0,_1,_2,_3):
   _4=None
   return (self.__parameter_1_S_3I_3J(_0,numpy.array([_1,_2,_3], dtype=numpy.dtype(numpy.int32)),_4))
  @staticmethod
  def _match_parameter_SII(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_parameter_SII(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  def _parameter_alt_SII(self,_t__0,_t__1,_t__2):
    return self._parameter_SII(_0,numpy.int32(__1),numpy.int32(__2))
  def _parameter_SII(self,_0,_1,_2):
   _3=None
   return (self.__parameter_1_S_3I_3J(_0,numpy.array([_1,_2], dtype=numpy.dtype(numpy.int32)),_3))
  @staticmethod
  def _match_parameter_SI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_parameter_SI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_I__(_1))
  def _parameter_alt_SI(self,_t__0,_t__1):
    return self._parameter_SI(_0,numpy.int32(__1))
  def _parameter_SI(self,_0,_1):
   _2=None
   return (self.__parameter_1_S_3I_3J(_0,numpy.array([_1], dtype=numpy.dtype(numpy.int32)),_2))
  @staticmethod
  def _match_parameter_S_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_parameter_S_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match__3I__(_1))
  def _parameter_alt_S_3I(self,_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self._parameter_S_3I(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _parameter_S_3I(self,_0,_1):
   _2=None
   return (self.__parameter_1_S_3I_3J(_0,_1,_2))
  @staticmethod
  def _match_parameter_S_3I_3J(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match__3I__(_1) and __arg_match__3J__(_2))
  @staticmethod
  def _match_alt_parameter_S_3I_3J(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3J__(_2))
  def _parameter_alt_S_3I_3J(self,_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int64))
   _1_res = self._parameter_S_3I_3J(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _parameter_S_3I_3J(self,_0,_1,_2):
   return (self.__parameter_1_S_3I_3J(_0,_1,_2))
  @staticmethod
  def _match_parameter_S_3I_3_5I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match__3I__(_1) and __arg_match__3_5I__(_2))
  @staticmethod
  def _match_alt_parameter_S_3I_3_5I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3_5I__(_2))
  def _parameter_alt_S_3I_3_5I(self,_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,ndmin=_monty.checkShape(_t__2,2),dtype=numpy.dtype(numpy.int32))
   _1_res = self._parameter_S_3I_3_5I(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _parameter_S_3I_3_5I(self,_0,_1,_2):
   return (self.__parameter_1_S_3I_3_5I(_0,_1,_2))
  @staticmethod
  def _match_parameter_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_parameter_(*args):
    if len(args) != 0: return False
    return True
  def _parameter_alt_(self,):
    return self._parameter_()
  def _parameter_(self,):
   _0=None
   return (self.__parameter_1_S_3I_3J("",numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)),_0))
  @staticmethod
  def _match_parameter_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_parameter_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  def _parameter_alt_III(self,_t__0,_t__1,_t__2):
    return self._parameter_III(numpy.int32(__0),numpy.int32(__1),numpy.int32(__2))
  def _parameter_III(self,_0,_1,_2):
   _3=None
   return (self.__parameter_1_S_3I_3J("",numpy.array([_0,_1,_2], dtype=numpy.dtype(numpy.int32)),_3))
  @staticmethod
  def _match_parameter_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_parameter_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _parameter_alt_II(self,_t__0,_t__1):
    return self._parameter_II(numpy.int32(__0),numpy.int32(__1))
  def _parameter_II(self,_0,_1):
   _2=None
   return (self.__parameter_1_S_3I_3J("",numpy.array([_0,_1], dtype=numpy.dtype(numpy.int32)),_2))
  @staticmethod
  def _match_parameter_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_parameter_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _parameter_alt_I(self,_t__0):
    return self._parameter_I(numpy.int32(__0))
  def _parameter_I(self,_0):
   _1=None
   return (self.__parameter_1_S_3I_3J("",numpy.array([_0], dtype=numpy.dtype(numpy.int32)),_1))
  @staticmethod
  def _match_parameter__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_parameter__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _parameter_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._parameter__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _parameter__3I(self,_0):
   _1=None
   return (self.__parameter_1_S_3I_3J("",_0,_1))
  @staticmethod
  def _match_parameter__3I_3J(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3J__(_1))
  @staticmethod
  def _match_alt_parameter__3I_3J(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3J__(_1))
  def _parameter_alt__3I_3J(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _1_res = self._parameter__3I_3J(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _parameter__3I_3J(self,_0,_1):
   return (self.__parameter_1_S_3I_3J("",_0,_1))
  @staticmethod
  def _match_parameter__3I_3_5I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3_5I__(_1))
  @staticmethod
  def _match_alt_parameter__3I_3_5I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3_5I__(_1))
  def _parameter_alt__3I_3_5I(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.int32))
   _1_res = self._parameter__3I_3_5I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _parameter__3I_3_5I(self,_0,_1):
   return (self.__parameter_1_S_3I_3_5I("",_0,_1))
  def __objective_1_alt_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(self,_t__0,_t__1,_t__2):
    return self.__objective_1_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(_0,__1,_2)
  def __objective_1_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(self,_0,_1,_2):
   self._task_1putobjectivename_S(_0)
   _3=mosek_fusion_WorkStack._ctor_()
   _4=mosek_fusion_WorkStack._ctor_()
   _5=mosek_fusion_ExprDense._ctor_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprOptimizeCode._ctor_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprCompress._ctor_Lmosek_4fusion_4Expression_2(_2)))
   _5.recursive_eval(_3,_4,self.__xs,self.__cache_evaluations)
   _3.pop_expr()
   _6=(_3.i32)
   _7=(_3.i64)
   _8=(_3.f64)
   _9=(_3.nd)
   _10=(_3.nelem)
   _11=(_3.nnz)
   _12=(_3.hassp)
   _13=(_3.ncodeatom)
   _14=(_3.ptr_base)
   _15=(_3.shape_base)
   _16=(_3.nidxs_base)
   _17=(_3.cof_base)
   _18=(_3.code_base)
   _19=(_3.codeptr_base)
   _20=(_3.cconst_base)
   _21=1
   for _22 in range(0,_9):
    _9 *= _6[(_15 + _22)]
   if (_21!=1):
    raise mosek_fusion_LengthError._ctor_S("Invalid expression size for objective")
   if (_10!=1):
    raise mosek_fusion_LengthError._ctor_S("Invalid expression for objective")
   _23=0
   _24=0
   for _25 in range(0,_11):
    if (_7[(_16 + _25)] < 0):
     _24 += 1
    elif (_7[(_16 + _25)] >= 0): # bld/grindsted/final/default/src/fusion/Model.mbi:2703:18-41
     _23 += 1
   _26=numpy.zeros((_23,), dtype=numpy.dtype(numpy.int32))
   _27=numpy.zeros((_23,), dtype=numpy.dtype(numpy.float64))
   _28=0
   for _29 in range(0,_11):
    if (_7[(_16 + _29)] >= 0):
     _26[_28] = numpy.int32(_7[(_16 + _29)])
     _27[_28] = _8[(_17 + _29)]
     _28 += 1
   self._task_1putobjective_Z_3I_3DD((_1==mosek.fusion.ObjectiveSense.Maximize),_26,_27,0.0)
   if (_24 > 0):
    _30=numpy.zeros((_24,), dtype=numpy.dtype(numpy.int32))
    _31=numpy.zeros((_24,), dtype=numpy.dtype(numpy.int32))
    _32=numpy.zeros((_24,), dtype=numpy.dtype(numpy.int32))
    _33=numpy.zeros((_24,), dtype=numpy.dtype(numpy.float64))
    for _34 in range(0,_24):
     _35=(- (_7[(_16 + _34)] + 1))
     _30[_34] = self.__barvar_block_elm_barj[_35]
     _31[_34] = self.__barvar_block_elm_i[_35]
     _32[_34] = self.__barvar_block_elm_j[_35]
     _33[_34] = (_8[(_17 + _34)] if ((_31[_34]==_32[_34]) ) else (0.5 * _8[(_17 + _34)]))
    self._task_1putbarc__3I_3I_3I_3D(_30,_31,_32,_33)
   if (_13 > 0):
    self.__obj_blocks.replace_row_code(_3,numpy.array([0], dtype=numpy.dtype(numpy.int32)),_14,_16,_19,_18,_20)
  @staticmethod
  def _match_objective_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_D__(_0))
  @staticmethod
  def _match_alt_objective_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_D__(_0))
  def _objective_alt_D(self,_t__0):
    return self._objective_D(numpy.float64(__0))
  def _objective_D(self,_0):
   self.__objective_1_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2("",mosek.fusion.ObjectiveSense.Minimize,mosek.fusion.Expr._constTerm_D(_0))
  @staticmethod
  def _match_objective_Emosek_4fusion_4ObjectiveSense_2D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Emosek_4fusion_4ObjectiveSense_2__(_0) and __arg_match_D__(_1))
  @staticmethod
  def _match_alt_objective_Emosek_4fusion_4ObjectiveSense_2D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Emosek_4fusion_4ObjectiveSense_2__(_0) and __arg_alt_match_D__(_1))
  def _objective_alt_Emosek_4fusion_4ObjectiveSense_2D(self,_t__0,_t__1):
    return self._objective_Emosek_4fusion_4ObjectiveSense_2D(__0,numpy.float64(__1))
  def _objective_Emosek_4fusion_4ObjectiveSense_2D(self,_0,_1):
   self.__objective_1_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2("",_0,mosek.fusion.Expr._constTerm_D(_1))
  @staticmethod
  def _match_objective_Emosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Emosek_4fusion_4ObjectiveSense_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_objective_Emosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Emosek_4fusion_4ObjectiveSense_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  def _objective_alt_Emosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(self,_t__0,_t__1):
    return self._objective_Emosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(__0,_1)
  def _objective_Emosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(self,_0,_1):
   self.__objective_1_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2("",_0,_1)
  @staticmethod
  def _match_objective_SD(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_D__(_1))
  @staticmethod
  def _match_alt_objective_SD(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_D__(_1))
  def _objective_alt_SD(self,_t__0,_t__1):
    return self._objective_SD(_0,numpy.float64(__1))
  def _objective_SD(self,_0,_1):
   self.__objective_1_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(_0,mosek.fusion.ObjectiveSense.Minimize,mosek.fusion.Expr._constTerm_D(_1))
  @staticmethod
  def _match_objective_SEmosek_4fusion_4ObjectiveSense_2D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match_Emosek_4fusion_4ObjectiveSense_2__(_1) and __arg_match_D__(_2))
  @staticmethod
  def _match_alt_objective_SEmosek_4fusion_4ObjectiveSense_2D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Emosek_4fusion_4ObjectiveSense_2__(_1) and __arg_alt_match_D__(_2))
  def _objective_alt_SEmosek_4fusion_4ObjectiveSense_2D(self,_t__0,_t__1,_t__2):
    return self._objective_SEmosek_4fusion_4ObjectiveSense_2D(_0,__1,numpy.float64(__2))
  def _objective_SEmosek_4fusion_4ObjectiveSense_2D(self,_0,_1,_2):
   self.__objective_1_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(_0,_1,mosek.fusion.Expr._constTerm_D(_2))
  @staticmethod
  def _match_objective_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match_Emosek_4fusion_4ObjectiveSense_2__(_1) and __arg_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _match_alt_objective_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Emosek_4fusion_4ObjectiveSense_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_2))
  def _objective_alt_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(self,_t__0,_t__1,_t__2):
    return self._objective_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(_0,__1,_2)
  def _objective_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(self,_0,_1,_2):
   self.__objective_1_SEmosek_4fusion_4ObjectiveSense_2Lmosek_4fusion_4Expression_2(_0,_1,_2)
  @staticmethod
  def _match_constraint_Lmosek_4fusion_4ExprRangeDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4ExprRangeDomain_2__(_0))
  @staticmethod
  def _match_alt_constraint_Lmosek_4fusion_4ExprRangeDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4ExprRangeDomain_2__(_0))
  def _constraint_alt_Lmosek_4fusion_4ExprRangeDomain_2(self,_t__0):
    return self._constraint_Lmosek_4fusion_4ExprRangeDomain_2(_0)
  def _constraint_Lmosek_4fusion_4ExprRangeDomain_2(self,_0):
   return (self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2("",(_0.expr),(_0.dom)))
  @staticmethod
  def _match_constraint_SLmosek_4fusion_4ExprRangeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_Lmosek_4fusion_4ExprRangeDomain_2__(_1))
  @staticmethod
  def _match_alt_constraint_SLmosek_4fusion_4ExprRangeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Lmosek_4fusion_4ExprRangeDomain_2__(_1))
  def _constraint_alt_SLmosek_4fusion_4ExprRangeDomain_2(self,_t__0,_t__1):
    return self._constraint_SLmosek_4fusion_4ExprRangeDomain_2(_0,_1)
  def _constraint_SLmosek_4fusion_4ExprRangeDomain_2(self,_0,_1):
   return (self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(_0,(_1.expr),(_1.dom)))
  @staticmethod
  def _match_constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4RangeDomain_2__(_1))
  @staticmethod
  def _match_alt_constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4RangeDomain_2__(_1))
  def _constraint_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(self,_t__0,_t__1):
    return self._constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(_0,_1)
  def _constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(self,_0,_1):
   return (self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2("",_0,_1))
  @staticmethod
  def _match_constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_Lmosek_4fusion_4RangeDomain_2__(_2))
  @staticmethod
  def _match_alt_constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_Lmosek_4fusion_4RangeDomain_2__(_2))
  def _constraint_alt_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(self,_t__0,_t__1,_t__2):
    return self._constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(_0,_1,_2)
  def _constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(self,_0,_1,_2):
   return (self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(_0,_1,_2))
  @staticmethod
  def _match_constraint_Lmosek_4fusion_4ExprConicDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4ExprConicDomain_2__(_0))
  @staticmethod
  def _match_alt_constraint_Lmosek_4fusion_4ExprConicDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4ExprConicDomain_2__(_0))
  def _constraint_alt_Lmosek_4fusion_4ExprConicDomain_2(self,_t__0):
    return self._constraint_Lmosek_4fusion_4ExprConicDomain_2(_0)
  def _constraint_Lmosek_4fusion_4ExprConicDomain_2(self,_0):
   return (self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2("",(_0.expr),(_0.dom)))
  @staticmethod
  def _match_constraint_SLmosek_4fusion_4ExprConicDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_Lmosek_4fusion_4ExprConicDomain_2__(_1))
  @staticmethod
  def _match_alt_constraint_SLmosek_4fusion_4ExprConicDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Lmosek_4fusion_4ExprConicDomain_2__(_1))
  def _constraint_alt_SLmosek_4fusion_4ExprConicDomain_2(self,_t__0,_t__1):
    return self._constraint_SLmosek_4fusion_4ExprConicDomain_2(_0,_1)
  def _constraint_SLmosek_4fusion_4ExprConicDomain_2(self,_0,_1):
   return (self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(_0,(_1.expr),(_1.dom)))
  @staticmethod
  def _match_constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4ConeDomain_2__(_1))
  @staticmethod
  def _match_alt_constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4ConeDomain_2__(_1))
  def _constraint_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(self,_t__0,_t__1):
    return self._constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(_0,_1)
  def _constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(self,_0,_1):
   return (self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2("",_0,_1))
  @staticmethod
  def _match_constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_Lmosek_4fusion_4ConeDomain_2__(_2))
  @staticmethod
  def _match_alt_constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_Lmosek_4fusion_4ConeDomain_2__(_2))
  def _constraint_alt_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(self,_t__0,_t__1,_t__2):
    return self._constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(_0,_1,_2)
  def _constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(self,_0,_1,_2):
   return (self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(_0,_1,_2))
  @staticmethod
  def _match_constraint_Lmosek_4fusion_4ExprLinearDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4ExprLinearDomain_2__(_0))
  @staticmethod
  def _match_alt_constraint_Lmosek_4fusion_4ExprLinearDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4ExprLinearDomain_2__(_0))
  def _constraint_alt_Lmosek_4fusion_4ExprLinearDomain_2(self,_t__0):
    return self._constraint_Lmosek_4fusion_4ExprLinearDomain_2(_0)
  def _constraint_Lmosek_4fusion_4ExprLinearDomain_2(self,_0):
   return (self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2("",(_0.expr),(_0.dom)))
  @staticmethod
  def _match_constraint_SLmosek_4fusion_4ExprLinearDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_Lmosek_4fusion_4ExprLinearDomain_2__(_1))
  @staticmethod
  def _match_alt_constraint_SLmosek_4fusion_4ExprLinearDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Lmosek_4fusion_4ExprLinearDomain_2__(_1))
  def _constraint_alt_SLmosek_4fusion_4ExprLinearDomain_2(self,_t__0,_t__1):
    return self._constraint_SLmosek_4fusion_4ExprLinearDomain_2(_0,_1)
  def _constraint_SLmosek_4fusion_4ExprLinearDomain_2(self,_0,_1):
   return (self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(_0,(_1.expr),(_1.dom)))
  @staticmethod
  def _match_constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4LinearDomain_2__(_1))
  @staticmethod
  def _match_alt_constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4LinearDomain_2__(_1))
  def _constraint_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(self,_t__0,_t__1):
    return self._constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(_0,_1)
  def _constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(self,_0,_1):
   return (self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2("",_0,_1))
  @staticmethod
  def _match_constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_Lmosek_4fusion_4LinearDomain_2__(_2))
  @staticmethod
  def _match_alt_constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_Lmosek_4fusion_4LinearDomain_2__(_2))
  def _constraint_alt_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(self,_t__0,_t__1,_t__2):
    return self._constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(_0,_1,_2)
  def _constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(self,_0,_1,_2):
   return (self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(_0,_1,_2))
  @staticmethod
  def _match_constraint_Lmosek_4fusion_4ExprPSDDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4ExprPSDDomain_2__(_0))
  @staticmethod
  def _match_alt_constraint_Lmosek_4fusion_4ExprPSDDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4ExprPSDDomain_2__(_0))
  def _constraint_alt_Lmosek_4fusion_4ExprPSDDomain_2(self,_t__0):
    return self._constraint_Lmosek_4fusion_4ExprPSDDomain_2(_0)
  def _constraint_Lmosek_4fusion_4ExprPSDDomain_2(self,_0):
   return (self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2("",(_0.expr),(_0.dom)))
  @staticmethod
  def _match_constraint_SLmosek_4fusion_4ExprPSDDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_Lmosek_4fusion_4ExprPSDDomain_2__(_1))
  @staticmethod
  def _match_alt_constraint_SLmosek_4fusion_4ExprPSDDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Lmosek_4fusion_4ExprPSDDomain_2__(_1))
  def _constraint_alt_SLmosek_4fusion_4ExprPSDDomain_2(self,_t__0,_t__1):
    return self._constraint_SLmosek_4fusion_4ExprPSDDomain_2(_0,_1)
  def _constraint_SLmosek_4fusion_4ExprPSDDomain_2(self,_0,_1):
   return (self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(_0,(_1.expr),(_1.dom)))
  @staticmethod
  def _match_constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4PSDDomain_2__(_1))
  @staticmethod
  def _match_alt_constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4PSDDomain_2__(_1))
  def _constraint_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(self,_t__0,_t__1):
    return self._constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(_0,_1)
  def _constraint_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(self,_0,_1):
   return (self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2("",_0,_1))
  @staticmethod
  def _match_constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_Lmosek_4fusion_4PSDDomain_2__(_2))
  @staticmethod
  def _match_alt_constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_Lmosek_4fusion_4PSDDomain_2__(_2))
  def _constraint_alt_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(self,_t__0,_t__1,_t__2):
    return self._constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(_0,_1,_2)
  def _constraint_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(self,_0,_1,_2):
   return (self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(_0,_1,_2))
  @staticmethod
  def _match_variable_Lmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4PSDDomain_2__(_0))
  @staticmethod
  def _match_alt_variable_Lmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4PSDDomain_2__(_0))
  def _variable_alt_Lmosek_4fusion_4PSDDomain_2(self,_t__0):
    return self._variable_Lmosek_4fusion_4PSDDomain_2(_0)
  def _variable_Lmosek_4fusion_4PSDDomain_2(self,_0):
   return (self.__variable_1_S_3ILmosek_4fusion_4PSDDomain_2("",(_0._shape),_0))
  @staticmethod
  def _match_variable_IILmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match_Lmosek_4fusion_4PSDDomain_2__(_2))
  @staticmethod
  def _match_alt_variable_IILmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_Lmosek_4fusion_4PSDDomain_2__(_2))
  def _variable_alt_IILmosek_4fusion_4PSDDomain_2(self,_t__0,_t__1,_t__2):
    return self._variable_IILmosek_4fusion_4PSDDomain_2(numpy.int32(__0),numpy.int32(__1),_2)
  def _variable_IILmosek_4fusion_4PSDDomain_2(self,_0,_1,_2):
   return (self.__variable_1_S_3ILmosek_4fusion_4PSDDomain_2("",numpy.array([_1,_0,_0], dtype=numpy.dtype(numpy.int32)),_2))
  @staticmethod
  def _match_variable_ILmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_Lmosek_4fusion_4PSDDomain_2__(_1))
  @staticmethod
  def _match_alt_variable_ILmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_Lmosek_4fusion_4PSDDomain_2__(_1))
  def _variable_alt_ILmosek_4fusion_4PSDDomain_2(self,_t__0,_t__1):
    return self._variable_ILmosek_4fusion_4PSDDomain_2(numpy.int32(__0),_1)
  def _variable_ILmosek_4fusion_4PSDDomain_2(self,_0,_1):
   return (self.__variable_1_S_3ILmosek_4fusion_4PSDDomain_2("",numpy.array([_0,_0], dtype=numpy.dtype(numpy.int32)),_1))
  @staticmethod
  def _match_variable_SLmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_Lmosek_4fusion_4PSDDomain_2__(_1))
  @staticmethod
  def _match_alt_variable_SLmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Lmosek_4fusion_4PSDDomain_2__(_1))
  def _variable_alt_SLmosek_4fusion_4PSDDomain_2(self,_t__0,_t__1):
    return self._variable_SLmosek_4fusion_4PSDDomain_2(_0,_1)
  def _variable_SLmosek_4fusion_4PSDDomain_2(self,_0,_1):
   return (self.__variable_1_S_3ILmosek_4fusion_4PSDDomain_2(_0,None,_1))
  @staticmethod
  def _match_variable_SIILmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_S__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2) and __arg_match_Lmosek_4fusion_4PSDDomain_2__(_3))
  @staticmethod
  def _match_alt_variable_SIILmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2) and __arg_alt_match_Lmosek_4fusion_4PSDDomain_2__(_3))
  def _variable_alt_SIILmosek_4fusion_4PSDDomain_2(self,_t__0,_t__1,_t__2,_t__3):
    return self._variable_SIILmosek_4fusion_4PSDDomain_2(_0,numpy.int32(__1),numpy.int32(__2),_3)
  def _variable_SIILmosek_4fusion_4PSDDomain_2(self,_0,_1,_2,_3):
   return (self.__variable_1_S_3ILmosek_4fusion_4PSDDomain_2(_0,numpy.array([_2,_1,_1], dtype=numpy.dtype(numpy.int32)),_3))
  @staticmethod
  def _match_variable_SILmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match_I__(_1) and __arg_match_Lmosek_4fusion_4PSDDomain_2__(_2))
  @staticmethod
  def _match_alt_variable_SILmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_Lmosek_4fusion_4PSDDomain_2__(_2))
  def _variable_alt_SILmosek_4fusion_4PSDDomain_2(self,_t__0,_t__1,_t__2):
    return self._variable_SILmosek_4fusion_4PSDDomain_2(_0,numpy.int32(__1),_2)
  def _variable_SILmosek_4fusion_4PSDDomain_2(self,_0,_1,_2):
   return (self.__variable_1_S_3ILmosek_4fusion_4PSDDomain_2(_0,numpy.array([_1,_1], dtype=numpy.dtype(numpy.int32)),_2))
  @staticmethod
  def _match_variable_S_3ILmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match__3I__(_1) and __arg_match_Lmosek_4fusion_4PSDDomain_2__(_2))
  @staticmethod
  def _match_alt_variable_S_3ILmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match_Lmosek_4fusion_4PSDDomain_2__(_2))
  def _variable_alt_S_3ILmosek_4fusion_4PSDDomain_2(self,_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=_t__2
   _1_res = self._variable_S_3ILmosek_4fusion_4PSDDomain_2(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _variable_S_3ILmosek_4fusion_4PSDDomain_2(self,_0,_1,_2):
   return (self.__variable_1_S_3ILmosek_4fusion_4PSDDomain_2(_0,_1,_2))
  @staticmethod
  def _match_variable_Lmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4ConeDomain_2__(_0))
  @staticmethod
  def _match_alt_variable_Lmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4ConeDomain_2__(_0))
  def _variable_alt_Lmosek_4fusion_4ConeDomain_2(self,_t__0):
    return self._variable_Lmosek_4fusion_4ConeDomain_2(_0)
  def _variable_Lmosek_4fusion_4ConeDomain_2(self,_0):
   return (self.__variable_1_S_3ILmosek_4fusion_4ConeDomain_2("",None,_0))
  @staticmethod
  def _match_variable_Lmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4RangeDomain_2__(_0))
  @staticmethod
  def _match_alt_variable_Lmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4RangeDomain_2__(_0))
  def _variable_alt_Lmosek_4fusion_4RangeDomain_2(self,_t__0):
    return self._variable_Lmosek_4fusion_4RangeDomain_2(_0)
  def _variable_Lmosek_4fusion_4RangeDomain_2(self,_0):
   return (self.__ranged_1variable_S_3ILmosek_4fusion_4RangeDomain_2("",None,_0))
  @staticmethod
  def _match_variable_Lmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4LinearDomain_2__(_0))
  @staticmethod
  def _match_alt_variable_Lmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4LinearDomain_2__(_0))
  def _variable_alt_Lmosek_4fusion_4LinearDomain_2(self,_t__0):
    return self._variable_Lmosek_4fusion_4LinearDomain_2(_0)
  def _variable_Lmosek_4fusion_4LinearDomain_2(self,_0):
   return (self.__variable_1_S_3ILmosek_4fusion_4LinearDomain_2("",None,_0))
  @staticmethod
  def _match_variable__3ILmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match_Lmosek_4fusion_4ConeDomain_2__(_1))
  @staticmethod
  def _match_alt_variable__3ILmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match_Lmosek_4fusion_4ConeDomain_2__(_1))
  def _variable_alt__3ILmosek_4fusion_4ConeDomain_2(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=_t__1
   _1_res = self._variable__3ILmosek_4fusion_4ConeDomain_2(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _variable__3ILmosek_4fusion_4ConeDomain_2(self,_0,_1):
   return (self.__variable_1_S_3ILmosek_4fusion_4ConeDomain_2("",_0,_1))
  @staticmethod
  def _match_variable__3ILmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match_Lmosek_4fusion_4RangeDomain_2__(_1))
  @staticmethod
  def _match_alt_variable__3ILmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match_Lmosek_4fusion_4RangeDomain_2__(_1))
  def _variable_alt__3ILmosek_4fusion_4RangeDomain_2(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=_t__1
   _1_res = self._variable__3ILmosek_4fusion_4RangeDomain_2(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _variable__3ILmosek_4fusion_4RangeDomain_2(self,_0,_1):
   return (self.__ranged_1variable_S_3ILmosek_4fusion_4RangeDomain_2("",_0,_1))
  @staticmethod
  def _match_variable__3ILmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match_Lmosek_4fusion_4LinearDomain_2__(_1))
  @staticmethod
  def _match_alt_variable__3ILmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match_Lmosek_4fusion_4LinearDomain_2__(_1))
  def _variable_alt__3ILmosek_4fusion_4LinearDomain_2(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=_t__1
   _1_res = self._variable__3ILmosek_4fusion_4LinearDomain_2(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _variable__3ILmosek_4fusion_4LinearDomain_2(self,_0,_1):
   return (self.__variable_1_S_3ILmosek_4fusion_4LinearDomain_2("",_0,_1))
  @staticmethod
  def _match_variable__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_variable__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _variable_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._variable__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _variable__3I(self,_0):
   return (self.__variable_1_S_3ILmosek_4fusion_4LinearDomain_2("",_0,mosek.fusion.Domain._unbounded_()))
  @staticmethod
  def _match_variable_ILmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_Lmosek_4fusion_4ConeDomain_2__(_1))
  @staticmethod
  def _match_alt_variable_ILmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_Lmosek_4fusion_4ConeDomain_2__(_1))
  def _variable_alt_ILmosek_4fusion_4ConeDomain_2(self,_t__0,_t__1):
    return self._variable_ILmosek_4fusion_4ConeDomain_2(numpy.int32(__0),_1)
  def _variable_ILmosek_4fusion_4ConeDomain_2(self,_0,_1):
   return (self.__variable_1_S_3ILmosek_4fusion_4ConeDomain_2("",numpy.array([_0], dtype=numpy.dtype(numpy.int32)),_1))
  @staticmethod
  def _match_variable_ILmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_Lmosek_4fusion_4RangeDomain_2__(_1))
  @staticmethod
  def _match_alt_variable_ILmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_Lmosek_4fusion_4RangeDomain_2__(_1))
  def _variable_alt_ILmosek_4fusion_4RangeDomain_2(self,_t__0,_t__1):
    return self._variable_ILmosek_4fusion_4RangeDomain_2(numpy.int32(__0),_1)
  def _variable_ILmosek_4fusion_4RangeDomain_2(self,_0,_1):
   return (self.__ranged_1variable_S_3ILmosek_4fusion_4RangeDomain_2("",numpy.array([_0], dtype=numpy.dtype(numpy.int32)),_1))
  @staticmethod
  def _match_variable_ILmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_Lmosek_4fusion_4LinearDomain_2__(_1))
  @staticmethod
  def _match_alt_variable_ILmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_Lmosek_4fusion_4LinearDomain_2__(_1))
  def _variable_alt_ILmosek_4fusion_4LinearDomain_2(self,_t__0,_t__1):
    return self._variable_ILmosek_4fusion_4LinearDomain_2(numpy.int32(__0),_1)
  def _variable_ILmosek_4fusion_4LinearDomain_2(self,_0,_1):
   return (self.__variable_1_S_3ILmosek_4fusion_4LinearDomain_2("",numpy.array([_0], dtype=numpy.dtype(numpy.int32)),_1))
  @staticmethod
  def _match_variable_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_variable_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _variable_alt_I(self,_t__0):
    return self._variable_I(numpy.int32(__0))
  def _variable_I(self,_0):
   return (self.__variable_1_S_3ILmosek_4fusion_4LinearDomain_2("",numpy.array([_0], dtype=numpy.dtype(numpy.int32)),mosek.fusion.Domain._unbounded_()))
  @staticmethod
  def _match_variable_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_variable_(*args):
    if len(args) != 0: return False
    return True
  def _variable_alt_(self,):
    return self._variable_()
  def _variable_(self,):
   return (self.__variable_1_S_3ILmosek_4fusion_4LinearDomain_2("",numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)),mosek.fusion.Domain._unbounded_()))
  @staticmethod
  def _match_variable_SLmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_Lmosek_4fusion_4ConeDomain_2__(_1))
  @staticmethod
  def _match_alt_variable_SLmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Lmosek_4fusion_4ConeDomain_2__(_1))
  def _variable_alt_SLmosek_4fusion_4ConeDomain_2(self,_t__0,_t__1):
    return self._variable_SLmosek_4fusion_4ConeDomain_2(_0,_1)
  def _variable_SLmosek_4fusion_4ConeDomain_2(self,_0,_1):
   return (self.__variable_1_S_3ILmosek_4fusion_4ConeDomain_2(_0,None,_1))
  @staticmethod
  def _match_variable_SLmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_Lmosek_4fusion_4RangeDomain_2__(_1))
  @staticmethod
  def _match_alt_variable_SLmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Lmosek_4fusion_4RangeDomain_2__(_1))
  def _variable_alt_SLmosek_4fusion_4RangeDomain_2(self,_t__0,_t__1):
    return self._variable_SLmosek_4fusion_4RangeDomain_2(_0,_1)
  def _variable_SLmosek_4fusion_4RangeDomain_2(self,_0,_1):
   return (self.__ranged_1variable_S_3ILmosek_4fusion_4RangeDomain_2(_0,None,_1))
  @staticmethod
  def _match_variable_SLmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_Lmosek_4fusion_4LinearDomain_2__(_1))
  @staticmethod
  def _match_alt_variable_SLmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_Lmosek_4fusion_4LinearDomain_2__(_1))
  def _variable_alt_SLmosek_4fusion_4LinearDomain_2(self,_t__0,_t__1):
    return self._variable_SLmosek_4fusion_4LinearDomain_2(_0,_1)
  def _variable_SLmosek_4fusion_4LinearDomain_2(self,_0,_1):
   return (self.__variable_1_S_3ILmosek_4fusion_4LinearDomain_2(_0,None,_1))
  @staticmethod
  def _match_variable_S_3ILmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match__3I__(_1) and __arg_match_Lmosek_4fusion_4ConeDomain_2__(_2))
  @staticmethod
  def _match_alt_variable_S_3ILmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match_Lmosek_4fusion_4ConeDomain_2__(_2))
  def _variable_alt_S_3ILmosek_4fusion_4ConeDomain_2(self,_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=_t__2
   _1_res = self._variable_S_3ILmosek_4fusion_4ConeDomain_2(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _variable_S_3ILmosek_4fusion_4ConeDomain_2(self,_0,_1,_2):
   return (self.__variable_1_S_3ILmosek_4fusion_4ConeDomain_2(_0,_1,_2))
  @staticmethod
  def _match_variable_S_3ILmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match__3I__(_1) and __arg_match_Lmosek_4fusion_4RangeDomain_2__(_2))
  @staticmethod
  def _match_alt_variable_S_3ILmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match_Lmosek_4fusion_4RangeDomain_2__(_2))
  def _variable_alt_S_3ILmosek_4fusion_4RangeDomain_2(self,_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=_t__2
   _1_res = self._variable_S_3ILmosek_4fusion_4RangeDomain_2(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _variable_S_3ILmosek_4fusion_4RangeDomain_2(self,_0,_1,_2):
   return (self.__ranged_1variable_S_3ILmosek_4fusion_4RangeDomain_2(_0,_1,_2))
  @staticmethod
  def _match_variable_S_3ILmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match__3I__(_1) and __arg_match_Lmosek_4fusion_4LinearDomain_2__(_2))
  @staticmethod
  def _match_alt_variable_S_3ILmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match_Lmosek_4fusion_4LinearDomain_2__(_2))
  def _variable_alt_S_3ILmosek_4fusion_4LinearDomain_2(self,_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=_t__2
   _1_res = self._variable_S_3ILmosek_4fusion_4LinearDomain_2(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _variable_S_3ILmosek_4fusion_4LinearDomain_2(self,_0,_1,_2):
   return (self.__variable_1_S_3ILmosek_4fusion_4LinearDomain_2(_0,_1,_2))
  @staticmethod
  def _match_variable_S_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_variable_S_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match__3I__(_1))
  def _variable_alt_S_3I(self,_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self._variable_S_3I(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _variable_S_3I(self,_0,_1):
   return (self.__variable_1_S_3ILmosek_4fusion_4LinearDomain_2(_0,_1,mosek.fusion.Domain._unbounded_()))
  @staticmethod
  def _match_variable_SILmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match_I__(_1) and __arg_match_Lmosek_4fusion_4ConeDomain_2__(_2))
  @staticmethod
  def _match_alt_variable_SILmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_Lmosek_4fusion_4ConeDomain_2__(_2))
  def _variable_alt_SILmosek_4fusion_4ConeDomain_2(self,_t__0,_t__1,_t__2):
    return self._variable_SILmosek_4fusion_4ConeDomain_2(_0,numpy.int32(__1),_2)
  def _variable_SILmosek_4fusion_4ConeDomain_2(self,_0,_1,_2):
   return (self.__variable_1_S_3ILmosek_4fusion_4ConeDomain_2(_0,numpy.array([_1], dtype=numpy.dtype(numpy.int32)),_2))
  @staticmethod
  def _match_variable_SILmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match_I__(_1) and __arg_match_Lmosek_4fusion_4RangeDomain_2__(_2))
  @staticmethod
  def _match_alt_variable_SILmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_Lmosek_4fusion_4RangeDomain_2__(_2))
  def _variable_alt_SILmosek_4fusion_4RangeDomain_2(self,_t__0,_t__1,_t__2):
    return self._variable_SILmosek_4fusion_4RangeDomain_2(_0,numpy.int32(__1),_2)
  def _variable_SILmosek_4fusion_4RangeDomain_2(self,_0,_1,_2):
   return (self.__ranged_1variable_S_3ILmosek_4fusion_4RangeDomain_2(_0,numpy.array([_1], dtype=numpy.dtype(numpy.int32)),_2))
  @staticmethod
  def _match_variable_SILmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_S__(_0) and __arg_match_I__(_1) and __arg_match_Lmosek_4fusion_4LinearDomain_2__(_2))
  @staticmethod
  def _match_alt_variable_SILmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_Lmosek_4fusion_4LinearDomain_2__(_2))
  def _variable_alt_SILmosek_4fusion_4LinearDomain_2(self,_t__0,_t__1,_t__2):
    return self._variable_SILmosek_4fusion_4LinearDomain_2(_0,numpy.int32(__1),_2)
  def _variable_SILmosek_4fusion_4LinearDomain_2(self,_0,_1,_2):
   return (self.__variable_1_S_3ILmosek_4fusion_4LinearDomain_2(_0,numpy.array([_1], dtype=numpy.dtype(numpy.int32)),_2))
  @staticmethod
  def _match_variable_SI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_S__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_variable_SI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_S__(_0) and __arg_alt_match_I__(_1))
  def _variable_alt_SI(self,_t__0,_t__1):
    return self._variable_SI(_0,numpy.int32(__1))
  def _variable_SI(self,_0,_1):
   return (self.__variable_1_S_3ILmosek_4fusion_4LinearDomain_2(_0,numpy.array([_1], dtype=numpy.dtype(numpy.int32)),mosek.fusion.Domain._unbounded_()))
  @staticmethod
  def _match_variable_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_S__(_0))
  @staticmethod
  def _match_alt_variable_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_S__(_0))
  def _variable_alt_S(self,_t__0):
    return self._variable_S(_0)
  def _variable_S(self,_0):
   return (self.__variable_1_S_3ILmosek_4fusion_4LinearDomain_2(_0,numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)),mosek.fusion.Domain._unbounded_()))
  def _removeConstraintBlock_alt_I(self,_t__0):
    return self._removeConstraintBlock_I(numpy.int32(__0))
  def _removeConstraintBlock_I(self,_0):
   if (_0 >= 0):
    self.__con_1release_I(_0)
   else:
    self.__acon_1release_I((- (1 + _0)))
  def _removeVariableBlock_alt_J(self,_t__0):
    return self._removeVariableBlock_J(numpy.int64(__0))
  def _removeVariableBlock_J(self,_0):
   if (self.__con_blocks.is_parameterized() or self.__afe_blocks.is_parameterized()):
    raise mosek_fusion_DeletionError._ctor_S("Cannot remove variables in parameterized model")
   if (_0 < 0):
    raise mosek_fusion_DeletionError._ctor_S("PSD variables cannot be removed")
   else:
    _1=numpy.int32(_0)
    _2=self.__var_block_map.blocksize(_1)
    _3=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int32))
    self.__var_block_map.get(_1,_3,0)
    self.__var_block_map.free(_1)
    _4=self.__var_block_acc_id[_1]
    if (_4 >= 0):
     self._removeConstraintBlock_I(_4)
    self._task_1var_1putboundlist_1fr__3I(_3)
    self._task_1clearacollist__3I(_3)
  def __ranged_1variable_alt_S_3ILmosek_4fusion_4RangeDomain_2(self,_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=_t__2
   _1_res = self.__ranged_1variable_S_3ILmosek_4fusion_4RangeDomain_2(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __ranged_1variable_S_3ILmosek_4fusion_4RangeDomain_2(self,_0,_1,_2):
   if ((int(len(_0)) > 0) and self._hasVariable_S(_0)):
    raise mosek_fusion_NameError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Duplicate variable name '")._a_S(_0)._a_S("'")._toString_())
   _3=_2._finalize_1and_1validate__3I(_1)
   _4=(_3._shape)
   _5=int((_4).shape[0])
   _6=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int32))
   if (_5 > 0):
    _6[(_5 - 1)] = 1
    for _7 in range(1,_5):
     _6[((_5 - _7) - 1)] = (_6[(_5 - _7)] * _4[(_5 - _7)])
   _8=1
   for _9 in range(0,int((_4).shape[0])):
    _8 *= _4[_9]
   _10=None
   _11=None
   _12=None
   _13=None
   _14=None
   _15=None
   if ((int(len(_0)) > 0) and ((_3._indexnames) is not None)):
    _16=mosek.fusion.Utils.StringBuffer()
    _17=mosek.fusion.Utils.StringBuffer()
    _18=0
    _19=0
    _20=0
    if (int(((_3._indexnames)).shape[0])!=_5):
     raise mosek_fusion_DomainError._ctor_S("Invalid index name definition")
    for _21 in range(0,int(((_3._indexnames)).shape[0])):
     if ((_3._indexnames)[_21] is not None):
      if (_4[_21]!=int(((_3._indexnames)[_21]).shape[0])):
       raise mosek_fusion_DomainError._ctor_S("Invalid index name definition")
      _20 += _4[_21]
    _11 = numpy.zeros(((_20 + 1),), dtype=numpy.dtype(numpy.int64))
    _10 = numpy.array([(- 1) for _22 in range(0,_5)], dtype=numpy.dtype(numpy.int32))
    for _23 in range(0,int(((_3._indexnames)).shape[0])):
     if ((_3._indexnames)[_23] is not None):
      _10[_23] = _18
      for _24 in range(0,_4[_23]):
       _16._a_S((_3._indexnames)[_23][_24])
       _18 += 1
       _19 += int(len((_3._indexnames)[_23][_24]))
       _11[_18] = _19
    _12 = _16
    _15 = _17
   _25=None
   _26=None
   if (_3._empty):
    _25 = numpy.zeros((0,), dtype=numpy.dtype(numpy.int64))
   elif ((_3._sparsity) is not None): # bld/grindsted/final/default/src/fusion/Model.mbi:2374:16-36
    if (int(((_3._sparsity)).shape[1])!=_5):
     raise mosek_fusion_SparseFormatError._ctor_S("Sparsity pattern is not correct")
    _27=int(((_3._sparsity)).shape[0])
    _25 = numpy.zeros((_27,), dtype=numpy.dtype(numpy.int64))
    _28=False
    _29=(_3._sparsity)
    for _30 in range(0,_27):
     for _31 in range(0,int((_29).shape[1])):
      _28 = (_28 or ((_29[_30,_31] < 0) or (_29[_30,_31] >= _4[_31])))
     if (not _28):
      _32=0
      for _33 in range(0,int((_29).shape[1])):
       _32 += (_6[_33] * _29[_30,_33])
      _25[_30] = _32
    if _28:
     raise mosek_fusion_SparseFormatError._ctor_S("Sparsity pattern is out of bounds")
    _34=(_3._sparsity)
    _35=0
    for _36 in range(0,_5):
     if (_35 < _4[_36]):
      _35 = _4[_36]
    _37=numpy.zeros((_27,), dtype=numpy.dtype(numpy.int32))
    for _38 in range(0,_27):
     _37[_38] = _38
    _39=numpy.zeros((_27,), dtype=numpy.dtype(numpy.int32))
    _40=numpy.zeros(((_35 + 1),), dtype=numpy.dtype(numpy.int32))
    for _41 in range(0,_5):
     _42=((_5 - _41) - 1)
     for _43 in range(0,(_4[_42] + 1)):
      _40[_43] = 0
     for _44 in range(0,_27):
      _40[(_34[_44,_42] + 1)] += 1
     for _45 in range(0,_4[_42]):
      _40[(_45 + 1)] += _40[_45]
     for _46 in range(0,_27):
      _47=_37[_46]
      _39[_40[_34[_47,_42]]] = _47
      _40[_34[_47,_42]] += 1
     _48=_37
     _37 = _39
     _39 = _48
    for _49 in range(0,_27):
     _50=_37[_49]
     _51=0
     for _52 in range(0,_5):
      _51 += (_6[_52] * _34[_50,_52])
     _25[_49] = _51
   _53=(int((_25).shape[0]) if ((_25 is not None) ) else _8)
   _54=numpy.zeros((_53,), dtype=numpy.dtype(numpy.int32))
   _55=self.__linearvar_1alloc_I_3I(_53,_54)
   if (int(len(_0)) > 0):
    self.__var_map._setItem_SI(_0,_55)
    _56=mosek.fusion.Utils.StringBuffer()
    _56._a_S(_0)._a_S("[")
    if (_5 > 0):
     _56._a_S("%0")
     for _57 in range(1,_5):
      _56._a_S(",%")._a_I(_57)
    _56._a_S("]")
    if ((_3._indexnames) is not None):
     self._task_1format_1var_1names__3IS_3I_3J_3_3S(_54,_56._toString_(),_4,_25,(_3._indexnames))
    else:
     self._task_1format_1var_1names__3IS_3I_3J_3_3S(_54,_56._toString_(),_4,_25,None)
   if (_3._scalable):
    _58 = numpy.array([(_3._lb)[0] for _60 in range(0,_53)], dtype=numpy.dtype(numpy.float64))
    _59 = numpy.array([(_3._ub)[0] for _61 in range(0,_53)], dtype=numpy.dtype(numpy.float64))
   else:
    _58 = (_3._lb)
    _59 = (_3._ub)
   self._task_1var_1putboundlist_1ra__3I_3D_3D(_54,_58,_59)
   _62=mosek_fusion_RangedVariable._ctor_Lmosek_4fusion_4Model_2SJ_3I_3J_3I(self,_0,_55,_4,_25,_54)
   if (_3._cardinal_flag):
    self._task_1var_1putintlist__3I(_54)
   self.__vars[_55] = _62
   return (_62)
  def __variable_1_alt_S_3ILmosek_4fusion_4ConeDomain_2(self,_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=_t__2
   _1_res = self.__variable_1_S_3ILmosek_4fusion_4ConeDomain_2(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __variable_1_S_3ILmosek_4fusion_4ConeDomain_2(self,_0,_1,_2):
   _3=_2._finalize_1and_1validate__3I(_1)
   if ((int(len(_0)) > 0) and self._hasVariable_S(_0)):
    raise mosek_fusion_NameError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Duplicate variable name '")._a_S(_0)._a_S("'")._toString_())
   _4=(_3._shape)
   _5=int((_4).shape[0])
   _6=_3._getAxis_()
   _7=_4[_6]
   _8=1
   _9=1
   _10=1
   for _11 in range(0,_5):
    _10 *= _4[_11]
   for _12 in range(0,_6):
    _9 *= _4[_12]
   for _13 in range((_6 + 1),_5):
    _8 *= _4[_13]
   _14=(_9 * _8)
   _15=(- 1)
   _16=numpy.zeros((0,), dtype=numpy.dtype(numpy.int64))
   if ((_3._key)==mosek.fusion.QConeKey.InQCone):
    if (_7 < 2):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_7)._a_S(") for quadratic cone")._toString_())
    _15 = self._task_1append_1domain_1quad_I(_7)
   elif ((_3._key)==mosek.fusion.QConeKey.InRotatedQCone): # bld/grindsted/final/default/src/fusion/Model.mbi:2152:16-50
    if (_7 < 3):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_7)._a_S(") for rotated quadratic cone")._toString_())
    _15 = self._task_1append_1domain_1rquad_I(_7)
   elif ((_3._key)==mosek.fusion.QConeKey.InPExpCone): # bld/grindsted/final/default/src/fusion/Model.mbi:2156:16-46
    if (_7!=3):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_7)._a_S(") for exponential cone")._toString_())
    _15 = self._task_1append_1domain_1pexp_()
   elif ((_3._key)==mosek.fusion.QConeKey.InPPowCone): # bld/grindsted/final/default/src/fusion/Model.mbi:2160:16-46
    if (_7 < 2):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_7)._a_S(") for power cone")._toString_())
    _15 = self._task_1append_1domain_1ppow_I_3D(_7,(_3._alpha))
   elif ((_3._key)==mosek.fusion.QConeKey.InPPowConeSeq): # bld/grindsted/final/default/src/fusion/Model.mbi:2164:16-49
    _16 = self._task_1append_1domain_1ppow_1seq_II_3D(_7,(int(((_3._alpha)).shape[0]) // _14),(_3._alpha))
   elif ((_3._key)==mosek.fusion.QConeKey.InDExpCone): # bld/grindsted/final/default/src/fusion/Model.mbi:2169:16-46
    if (_7!=3):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_7)._a_S(") for dual exponential cone")._toString_())
    _15 = self._task_1append_1domain_1dexp_()
   elif ((_3._key)==mosek.fusion.QConeKey.InDPowCone): # bld/grindsted/final/default/src/fusion/Model.mbi:2173:16-46
    if (_7 < 2):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_7)._a_S(") for dual power cone")._toString_())
    _15 = self._task_1append_1domain_1dpow_I_3D(_7,(_3._alpha))
   elif ((_3._key)==mosek.fusion.QConeKey.InDPowConeSeq): # bld/grindsted/final/default/src/fusion/Model.mbi:2177:16-49
    _16 = self._task_1append_1domain_1dpow_1seq_II_3D(_7,(int(((_3._alpha)).shape[0]) // _14),(_3._alpha))
   elif ((_3._key)==mosek.fusion.QConeKey.InPGeoMeanCone): # bld/grindsted/final/default/src/fusion/Model.mbi:2190:16-50
    if (_7 < 2):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_7)._a_S(") for primal geometric mean cone")._toString_())
    _15 = self._task_1append_1domain_1pgeomean_I(_7)
   elif ((_3._key)==mosek.fusion.QConeKey.InDGeoMeanCone): # bld/grindsted/final/default/src/fusion/Model.mbi:2194:16-50
    if (_7 < 2):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_7)._a_S(") for dual geometric mean cone")._toString_())
    _15 = self._task_1append_1domain_1dgeomean_I(_7)
   elif ((_3._key)==mosek.fusion.QConeKey.Positive): # bld/grindsted/final/default/src/fusion/Model.mbi:2198:16-44
    _15 = self._task_1append_1domain_1rpos_I(_7)
   elif ((_3._key)==mosek.fusion.QConeKey.InSVecPSDCone): # bld/grindsted/final/default/src/fusion/Model.mbi:2201:16-49
    _17=numpy.int32(((mosek.fusion.Utils.Tools._sqrt_D((1 + (8 * _7))) - 1) / 2))
    if (((_17 * (_17 + 1)) // 2)!=_7):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_7)._a_S(") for vector positive semidefinite cone")._toString_())
    _15 = self._task_1append_1domain_1svec_1psd_I(_7)
   elif ((_3._key)==mosek.fusion.QConeKey.Negative): # bld/grindsted/final/default/src/fusion/Model.mbi:2207:16-44
    _15 = self._task_1append_1domain_1rneg_I(_7)
   elif ((_3._key)==mosek.fusion.QConeKey.Unbounded): # bld/grindsted/final/default/src/fusion/Model.mbi:2209:16-45
    _15 = self._task_1append_1domain_1r_I(_7)
   elif ((_3._key)==mosek.fusion.QConeKey.Zero): # bld/grindsted/final/default/src/fusion/Model.mbi:2211:16-40
    _15 = self._task_1append_1domain_1rzero_I(_7)
   elif ((_3._key)==mosek.fusion.QConeKey.InPSDCone): # bld/grindsted/final/default/src/fusion/Model.mbi:2213:16-45
    if (_7 < 2):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_7)._a_S(") for positive semidefinite cone")._toString_())
    else:
     _18=numpy.int32(((mosek.fusion.Utils.Tools._sqrt_D((1 + (8 * _7))) - 1) / 2))
     if (((_18 * (_18 + 1)) // 2)!=_7):
      raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_7)._a_S(") for positive semidefinite cone")._toString_())
    _15 = self._task_1append_1domain_1svec_1psd_I(_7)
   else:
    raise mosek_fusion_UnexpectedError._ctor_S("Internal error: Invalid cone type")
   if (((_3._key)==mosek.fusion.QConeKey.InPPowConeSeq) or ((_3._key)==mosek.fusion.QConeKey.InDPowConeSeq)):
    pass
   else:
    _16 = numpy.array([_15 for _19 in range(0,_14)], dtype=numpy.dtype(numpy.int64))
   _20=numpy.zeros(((_14 * _7),), dtype=numpy.dtype(numpy.int32))
   _21=numpy.zeros((_14,), dtype=numpy.dtype(numpy.int32))
   _22=self.__conicvar_1alloc__3JII_3I_3I(_16,_7,_14,_21,_20)
   self._task_1var_1putboundlist_1fr__3I(_20)
   if (_3._int_flag):
    self._task_1var_1putintlist__3I(_20)
   _23=_20
   if (_6 < (int((_4).shape[0]) - 1)):
    _23 = numpy.zeros((int((_20).shape[0]),), dtype=numpy.dtype(numpy.int32))
    _24=0
    for _25 in range(0,_9):
     for _26 in range(0,_8):
      for _27 in range(0,_7):
       _23[_24] = _20[((((_25 * _7) + _27) * _8) + _26)]
       _24 += 1
   _28=mosek_fusion_ConicVariable._ctor_Lmosek_4fusion_4Model_2SI_3I_3I(self,_0,_22,_4,_20)
   self.__vars[_22] = _28
   if (int(len(_0)) > 0):
    _29=mosek.fusion.Utils.StringBuffer()
    _29._a_S(_0)._a_S("[")
    if (_5 > 0):
     _29._a_S("%0")
     for _30 in range(1,_5):
      _29._a_S(",%")._a_I(_30)
    _29._a_S("]")
    if ((_3._indexnames) is not None):
     self._task_1format_1var_1names__3IS_3I_3J_3_3S(_23,_29._toString_(),_4,None,(_3._indexnames))
    else:
     self._task_1format_1var_1names__3IS_3I_3J_3_3S(_23,_29._toString_(),_4,None,None)
    _31=numpy.zeros((_14,), dtype=numpy.dtype(numpy.int32))
    self.__acc_block_map.get(self.__var_block_acc_id[_22],_31,0)
    _32=numpy.zeros(((int((_4).shape[0]) - 1),), dtype=numpy.dtype(numpy.int32))
    for _33 in range(0,_6):
     _32[_33] = _4[_33]
    for _34 in range((_6 + 1),_5):
     _32[(_34 - 1)] = _4[_34]
    _35=mosek.fusion.Utils.StringBuffer()
    _35._a_S(_0)._a_S("[")
    if ((_5 - 1) > 0):
     _35._a_S("%0")
     for _36 in range(1,(_5 - 1)):
      _35._a_S(",%")._a_I(_36)
    _35._a_S("]")
    if ((_3._indexnames) is not None):
     _37=numpy.ndarray(((_5 - 1),), dtype=numpy.dtype(object))
     for _38 in range(0,_6):
      _37[_38] = (_3._indexnames)[_38]
     for _39 in range((_6 + 1),_5):
      _37[(_39 - 1)] = (_3._indexnames)[_39]
     self._task_1format_1acc_1names__3JS_3I_3_3S(numpy.array([numpy.int64(_31[_40]) for _40 in range(0,_14)], dtype=numpy.dtype(numpy.int64)),_35._toString_(),_32,_37)
    else:
     self._task_1format_1acc_1names__3JS_3I_3_3S(numpy.array([numpy.int64(_31[_41]) for _41 in range(0,_14)], dtype=numpy.dtype(numpy.int64)),_35._toString_(),_32,None)
    self.__var_map._setItem_SI(_0,_22)
   return (_28)
  def __variable_1_alt_S_3ILmosek_4fusion_4LinearDomain_2(self,_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=_t__2
   _1_res = self.__variable_1_S_3ILmosek_4fusion_4LinearDomain_2(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __variable_1_S_3ILmosek_4fusion_4LinearDomain_2(self,_0,_1,_2):
   if ((int(len(_0)) > 0) and self._hasVariable_S(_0)):
    raise mosek_fusion_NameError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Duplicate variable name '")._a_S(_0)._a_S("'")._toString_())
   _3=_2._finalize_1and_1validate__3I(_1)
   _4=(_3._shape)
   _5=int((_4).shape[0])
   _6=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int32))
   if (_5 > 0):
    _6[(_5 - 1)] = 1
    for _7 in range(1,_5):
     _6[((_5 - _7) - 1)] = (_6[(_5 - _7)] * _4[(_5 - _7)])
   _8=1
   for _9 in range(0,int((_4).shape[0])):
    _8 *= _4[_9]
   _10=None
   _11=None
   _12=None
   _13=None
   _14=None
   _15=None
   if ((int(len(_0)) > 0) and ((_3._indexnames) is not None)):
    _16=mosek.fusion.Utils.StringBuffer()
    _17=mosek.fusion.Utils.StringBuffer()
    _18=0
    _19=0
    _20=0
    if (int(((_3._indexnames)).shape[0])!=_5):
     raise mosek_fusion_DomainError._ctor_S("Invalid index name definition")
    for _21 in range(0,int(((_3._indexnames)).shape[0])):
     if ((_3._indexnames)[_21] is not None):
      if (_4[_21]!=int(((_3._indexnames)[_21]).shape[0])):
       raise mosek_fusion_DomainError._ctor_S("Invalid index name definition")
      _20 += _4[_21]
    _11 = numpy.zeros(((_20 + 1),), dtype=numpy.dtype(numpy.int64))
    _10 = numpy.array([(- 1) for _22 in range(0,_5)], dtype=numpy.dtype(numpy.int32))
    for _23 in range(0,int(((_3._indexnames)).shape[0])):
     if ((_3._indexnames)[_23] is not None):
      _10[_23] = _18
      for _24 in range(0,_4[_23]):
       _16._a_S((_3._indexnames)[_23][_24])
       _18 += 1
       _19 += int(len((_3._indexnames)[_23][_24]))
       _11[_18] = _19
    _12 = _16
    _15 = _17
   _25=None
   _26=None
   if (_3._empty):
    _25 = numpy.zeros((0,), dtype=numpy.dtype(numpy.int64))
   elif ((_3._sparsity) is not None): # bld/grindsted/final/default/src/fusion/Model.mbi:1922:16-36
    if (int(((_3._sparsity)).shape[1])!=_5):
     raise mosek_fusion_SparseFormatError._ctor_S("Sparsity pattern is not correct")
    _27=int(((_3._sparsity)).shape[0])
    _25 = numpy.zeros((_27,), dtype=numpy.dtype(numpy.int64))
    _28=False
    _29=(_3._sparsity)
    for _30 in range(0,_27):
     for _31 in range(0,int((_29).shape[1])):
      _28 = (_28 or ((_29[_30,_31] < 0) or (_29[_30,_31] >= _4[_31])))
     if (not _28):
      _32=0
      for _33 in range(0,int((_29).shape[1])):
       _32 += (_6[_33] * _29[_30,_33])
      _25[_30] = _32
    if _28:
     raise mosek_fusion_SparseFormatError._ctor_S("Sparsity pattern is out of bounds")
    _34=(_3._sparsity)
    _35=0
    for _36 in range(0,_5):
     if (_35 < _4[_36]):
      _35 = _4[_36]
    _37=numpy.zeros((_27,), dtype=numpy.dtype(numpy.int32))
    for _38 in range(0,_27):
     _37[_38] = _38
    _39=numpy.zeros((_27,), dtype=numpy.dtype(numpy.int32))
    _40=numpy.zeros(((_35 + 1),), dtype=numpy.dtype(numpy.int32))
    for _41 in range(0,_5):
     _42=((_5 - _41) - 1)
     for _43 in range(0,(_4[_42] + 1)):
      _40[_43] = 0
     for _44 in range(0,_27):
      _40[(_34[_44,_42] + 1)] += 1
     for _45 in range(0,_4[_42]):
      _40[(_45 + 1)] += _40[_45]
     for _46 in range(0,_27):
      _47=_37[_46]
      _39[_40[_34[_47,_42]]] = _47
      _40[_34[_47,_42]] += 1
     _48=_37
     _37 = _39
     _39 = _48
    for _49 in range(0,_27):
     _50=_37[_49]
     _51=0
     for _52 in range(0,_5):
      _51 += (_6[_52] * _34[_50,_52])
     _25[_49] = _51
   _53=(int((_25).shape[0]) if ((_25 is not None) ) else _8)
   _54=numpy.zeros((_53,), dtype=numpy.dtype(numpy.float64))
   if ((_3._bnd) is not None):
    if (int(((_3._bnd)).shape[0])==1):
     for _55 in range(0,_53):
      _54[_55] = (_3._bnd)[0]
    elif (int(((_3._bnd)).shape[0])==_53): # bld/grindsted/final/default/src/fusion/Model.mbi:1981:18-43
     mosek.fusion.Utils.Tools._arraycopy__3DI_3DII((_3._bnd),0,_54,0,_53)
    else:
     raise mosek_fusion_DimensionError._ctor_S("Invalid right hand side shape in domain")
   _56=numpy.zeros((_53,), dtype=numpy.dtype(numpy.int32))
   _57=self.__linearvar_1alloc_I_3I(_53,_56)
   if ((_3._key)==mosek.fusion.RelationKey.IsFree):
    self._task_1var_1putboundlist_1fr__3I(_56)
   if ((_3._key)==mosek.fusion.RelationKey.LessThan):
    self._task_1var_1putboundlist_1up__3I_3D(_56,_54)
   elif ((_3._key)==mosek.fusion.RelationKey.GreaterThan): # bld/grindsted/final/default/src/fusion/Model.mbi:1999:17-51
    self._task_1var_1putboundlist_1lo__3I_3D(_56,_54)
   elif ((_3._key)==mosek.fusion.RelationKey.EqualsTo): # bld/grindsted/final/default/src/fusion/Model.mbi:2003:17-48
    self._task_1var_1putboundlist_1fx__3I_3D(_56,_54)
   _58=mosek_fusion_LinearVariable._ctor_Lmosek_4fusion_4Model_2SJ_3I_3J_3I(self,_0,_57,_4,_25,_56)
   self.__vars[_57] = _58
   if (int(len(_0)) > 0):
    _59=mosek.fusion.Utils.StringBuffer()
    _59._a_S(_0)._a_S("[")
    if (_5 > 0):
     _59._a_S("%0")
     for _60 in range(1,_5):
      _59._a_S(",%")._a_I(_60)
    _59._a_S("]")
    if ((_3._indexnames) is not None):
     self._task_1format_1var_1names__3IS_3I_3J_3_3S(_56,_59._toString_(),_4,_25,(_3._indexnames))
    else:
     self._task_1format_1var_1names__3IS_3I_3J_3_3S(_56,_59._toString_(),_4,_25,None)
    self.__var_map._setItem_SI(_0,_57)
   if (_3._cardinal_flag):
    self._task_1var_1putintlist__3I(_56)
   return (_58)
  def __variable_1_alt_S_3ILmosek_4fusion_4PSDDomain_2(self,_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=_t__2
   _1_res = self.__variable_1_S_3ILmosek_4fusion_4PSDDomain_2(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __variable_1_S_3ILmosek_4fusion_4PSDDomain_2(self,_0,_1,_2):
   if ((int(len(_0)) > 0) and self._hasVariable_S(_0)):
    raise mosek_fusion_NameError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Duplicate variable name '")._a_S(_0)._a_S("'")._toString_())
   _3=_2._finalize_1and_1validate__3I(_1)
   _4=(_3._shape)
   _5=(_3._conedim1)
   _6=(_3._conedim2)
   _7=int((_4).shape[0])
   _8=_4[_5]
   if (_5 > _6):
    _9=_5
    _5 = _6
    _6 = _9
   if ((_5==_6) or ((_5 < 0) or (_6 >= _7))):
    raise mosek_fusion_DimensionError._ctor_S("Invalid cone order dimensions for semidefinite variables")
   if (_4[_5]!=_4[_6]):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching shape in cone order dimensions")
   _10=1
   for _11 in range(0,_5):
    _10 *= _4[_11]
   for _12 in range((_5 + 1),_6):
    _10 *= _4[_12]
   for _13 in range((_6 + 1),_7):
    _10 *= _4[_13]
   _14=(((_10 * _8) * (_8 + 1)) // 2)
   _15=numpy.zeros((_14,), dtype=numpy.dtype(numpy.int64))
   _16=numpy.zeros((_10,), dtype=numpy.dtype(numpy.int32))
   _17=self.__barvar_1alloc_II_3I_3J(_8,_10,_16,_15)
   _18=mosek_fusion_PSDVariable._ctor_Lmosek_4fusion_4Model_2SI_3III_3I_3J(self,_0,_17,_4,(_3._conedim1),(_3._conedim2),_16,_15)
   if (int(len(_0)) > 0):
    _19=numpy.zeros(((_7 - 2),), dtype=numpy.dtype(numpy.int32))
    _20=(_5 if ((_5 < _6) ) else _6)
    _21=(_6 if ((_5 < _6) ) else _5)
    for _22 in range(0,_20):
     _19[_22] = _4[_22]
    for _23 in range((_20 + 1),_21):
     _19[(_23 - 1)] = _4[_23]
    for _24 in range((_21 + 1),_7):
     _19[(_24 - 2)] = _4[_24]
    _25=mosek.fusion.Utils.StringBuffer()
    _25._a_S(_0)._a_S("[")
    if ((_7 - 2) > 0):
     _25._a_S("%0")
     for _26 in range(1,(_7 - 2)):
      _25._a_S(",%")._a_I(_26)
    _25._a_S("]")
    if ((_3._indexnames) is not None):
     _27=numpy.ndarray(((_7 - 2),), dtype=numpy.dtype(object))
     for _28 in range(0,_20):
      _27[_28] = (_3._indexnames)[_28]
     for _29 in range((_20 + 1),_21):
      _27[(_29 - 1)] = (_3._indexnames)[_29]
     for _30 in range((_21 + 1),_7):
      _27[(_30 - 2)] = (_3._indexnames)[_30]
     self._task_1format_1barvar_1names__3IS_3I_3_3S(_16,_25._toString_(),_19,_27)
    else:
     self._task_1format_1barvar_1names__3IS_3I_3_3S(_16,_25._toString_(),_19,None)
   self.__barvars[_17] = _18
   if (int(len(_0)) > 0):
    self.__var_map._setItem_SI(_0,(- (_17 + 1)))
   return (_18)
  def __putfrows_alt__3IILmosek_4fusion_4WorkStack_2IIIII(self,_t__0,_t__1,_t__2,_t__3,_t__4,_t__5,_t__6,_t__7):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.int32(_t__1)
   _2=_t__2
   _3=numpy.int32(_t__3)
   _4=numpy.int32(_t__4)
   _5=numpy.int32(_t__5)
   _6=numpy.int32(_t__6)
   _7=numpy.int32(_t__7)
   _1_res = self.__putfrows__3IILmosek_4fusion_4WorkStack_2IIIII(_0,_1,_2,_3,_4,_5,_6,_7)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __putfrows__3IILmosek_4fusion_4WorkStack_2IIIII(self,_0,_1,_2,_3,_4,_5,_6,_7):
   _8=(_2.i32)
   _9=(_2.i64)
   _10=(_2.f64)
   _11=0
   _12=0
   _13=0
   for _14 in range(0,_3):
    _15=_8[(_5 + _14)]
    _16=_8[((_5 + _14) + 1)]
    _17=_15
    while ((_17 < _16) and (_9[(_6 + _17)] < 0)):
     _18=self.__barvar_block_elm_barj[(- (_9[(_6 + _17)] + 1))]
     _19=_17
     _17 += 1
     while ((_17 < _16) and ((_9[(_6 + _17)] < 0) and (_18==self.__barvar_block_elm_barj[(- (_9[(_6 + _17)] + 1))]))):
      _17 += 1
     _12 += 1
    _13 += (_17 - _15)
    while ((_17 < _16) and (_9[(_6 + _17)]==0)):
     _17 += 1
    _11 += (_16 - _17)
   if (_3 > (int((_0).shape[0]) - _1)):
    raise mosek_fusion_UnexpectedError._ctor_S("Internal: Mismatching sizes")
   _20=_3
   _21=numpy.zeros(((_20 + 1),), dtype=numpy.dtype(numpy.int32))
   _22=numpy.zeros((_11,), dtype=numpy.dtype(numpy.int32))
   _23=numpy.zeros((_11,), dtype=numpy.dtype(numpy.float64))
   _24=numpy.zeros((_3,), dtype=numpy.dtype(numpy.float64))
   _25=0
   for _26 in range(0,_3):
    _27=0
    for _28 in range(_8[(_5 + _26)],_8[((_5 + _26) + 1)]):
     if (_9[(_6 + _28)]==0):
      _24[_26] += _10[(_7 + _28)]
     elif (_9[(_6 + _28)] > 0): # bld/grindsted/final/default/src/fusion/Model.mbi:1591:23-45
      _22[(_25 + _27)] = numpy.int32(_9[(_6 + _28)])
      _23[(_25 + _27)] = _10[(_7 + _28)]
      _27 += 1
    _21[(_26 + 1)] = (_21[_26] + _27)
    _25 += _27
   self._task_1putafeflist__3J_3I_3I_3D_3D(numpy.array([_0[(_29 + _1)] for _29 in range(0,_3)], dtype=numpy.dtype(numpy.int64)),_21,_22,_23,_24)
   if (_12 > 0):
    _30=_0
    _31=numpy.zeros(((_20 + 1),), dtype=numpy.dtype(numpy.int32))
    _32=numpy.zeros((_12,), dtype=numpy.dtype(numpy.int32))
    _33=numpy.zeros((_12,), dtype=numpy.dtype(numpy.int32))
    _34=numpy.zeros((_12,), dtype=numpy.dtype(numpy.int64))
    _35=numpy.array([(- 1) for _36 in range(0,_13)], dtype=numpy.dtype(numpy.int32))
    _37=numpy.zeros((_13,), dtype=numpy.dtype(numpy.int32))
    _38=numpy.zeros((_13,), dtype=numpy.dtype(numpy.float64))
    _39=0
    _40=0
    for _41 in range(0,_20):
     _42=_8[(_5 + _41)]
     _43=_8[((_5 + _41) + 1)]
     while ((_42 < _43) and (_9[(_6 + _42)] < 0)):
      _44=_42
      _45=self.__barvar_block_elm_barj[(- (_9[(_6 + _42)] + 1))]
      while ((_42 < _43) and ((_9[(_6 + _42)] < 0) and (self.__barvar_block_elm_barj[(- (_9[(_6 + _42)] + 1))]==_45))):
       _35[_40] = self.__barvar_block_elm_i[(- (_9[(_6 + _42)] + 1))]
       _37[_40] = self.__barvar_block_elm_j[(- (_9[(_6 + _42)] + 1))]
       if (_35[_40]==_37[_40]):
        _38[_40] = _10[(_7 + _42)]
       else:
        _38[_40] = (0.5 * _10[(_7 + _42)])
       _40 += 1
       _42 += 1
      _32[_39] = _45
      _33[_39] = self.__barvar_dim[_45]
      _34[_39] = (_42 - _44)
      _39 += 1
     _42 = _43
     _31[(_41 + 1)] = _39
    _46=self._task_1appendsymmatlist__3I_3J_3I_3I_3D(_33,_34,_35,_37,_38)
    self._task_1putafebarfrowlist__3I_3I_3I_3J(_30,_31,_32,_46)
  def __putarows_alt__3ILmosek_4fusion_4WorkStack_2IIIII(self,_t__0,_t__1,_t__2,_t__3,_t__4,_t__5,_t__6):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=_t__1
   _2=numpy.int32(_t__2)
   _3=numpy.int32(_t__3)
   _4=numpy.int32(_t__4)
   _5=numpy.int32(_t__5)
   _6=numpy.int32(_t__6)
   _1_res = self.__putarows__3ILmosek_4fusion_4WorkStack_2IIIII(_0,_1,_2,_3,_4,_5,_6)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __putarows__3ILmosek_4fusion_4WorkStack_2IIIII(self,_0,_1,_2,_3,_4,_5,_6):
   _7=(_1.i32)
   _8=(_1.i64)
   _9=(_1.f64)
   _10=0
   _11=0
   _12=0
   for _13 in range(0,_2):
    _14=_7[(_4 + _13)]
    _15=_7[((_4 + _13) + 1)]
    _16=_14
    while ((_16 < _15) and (_8[(_5 + _16)] < 0)):
     _17=self.__barvar_block_elm_barj[(- (_8[(_5 + _16)] + 1))]
     _18=_16
     _16 += 1
     while ((_16 < _15) and ((_8[(_5 + _16)] < 0) and (_17==self.__barvar_block_elm_barj[(- (_8[(_5 + _16)] + 1))]))):
      _16 += 1
     _11 += 1
    _12 += (_16 - _14)
    while (_16 < _15):
     if (0.0!=_9[(_6 + _16)]):
      _10 += 1
     _16 += 1
   _19=int((_0).shape[0])
   _20=numpy.zeros(((_19 + 1),), dtype=numpy.dtype(numpy.int64))
   _21=numpy.zeros((_10,), dtype=numpy.dtype(numpy.int32))
   _22=numpy.zeros((_10,), dtype=numpy.dtype(numpy.float64))
   _23=0
   for _24 in range(0,_2):
    _25=0
    for _26 in range(_7[(_4 + _24)],_7[((_4 + _24) + 1)]):
     if ((_8[(_5 + _26)] >= 0) and (0!=_9[(_6 + _26)])):
      _21[(_23 + _25)] = numpy.int32(_8[(_5 + _26)])
      _22[(_23 + _25)] = _9[(_6 + _26)]
      _25 += 1
    _20[(_24 + 1)] = (_20[_24] + _25)
    _23 += _25
   self._task_1putarowlist__3I_3J_3I_3D(_0,_20,_21,_22)
   if (_11 > 0):
    _27=_0
    _28=numpy.zeros(((_19 + 1),), dtype=numpy.dtype(numpy.int64))
    _29=numpy.zeros((_11,), dtype=numpy.dtype(numpy.int32))
    _30=numpy.zeros((_11,), dtype=numpy.dtype(numpy.int32))
    _31=numpy.zeros((_11,), dtype=numpy.dtype(numpy.int64))
    _32=numpy.zeros((_12,), dtype=numpy.dtype(numpy.int32))
    _33=numpy.zeros((_12,), dtype=numpy.dtype(numpy.int32))
    _34=numpy.zeros((_12,), dtype=numpy.dtype(numpy.float64))
    _35=0
    _36=0
    for _37 in range(0,_19):
     _38=_7[(_4 + _37)]
     _39=_7[((_4 + _37) + 1)]
     while ((_38 < _39) and (_8[(_5 + _38)] < 0)):
      _40=_38
      _41=self.__barvar_block_elm_barj[(- (_8[(_5 + _38)] + 1))]
      while ((_38 < _39) and ((_8[(_5 + _38)] < 0) and (self.__barvar_block_elm_barj[(- (_8[(_5 + _38)] + 1))]==_41))):
       _32[_36] = self.__barvar_block_elm_i[(- (_8[(_5 + _38)] + 1))]
       _33[_36] = self.__barvar_block_elm_j[(- (_8[(_5 + _38)] + 1))]
       if (_32[_36]==_33[_36]):
        _34[_36] = _9[(_6 + _38)]
       else:
        _34[_36] = (0.5 * _9[(_6 + _38)])
       _36 += 1
       _38 += 1
      _29[_35] = _41
      _30[_35] = self.__barvar_dim[_41]
      _31[_35] = (_38 - _40)
      _35 += 1
     _38 = _39
     _28[(_37 + 1)] = _35
    _42=self._task_1appendsymmatlist__3I_3J_3I_3I_3D(_30,_31,_32,_33,_34)
    self._task_1putbararowlist__3I_3J_3I_3J(_27,_28,_29,_42)
  def __constraint_1_alt_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(self,_t__0,_t__1,_t__2):
    return self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(_0,_1,_2)
  def __constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(self,_0,_1,_2):
   if (((self.__rs.pi32)!=0) or (((self.__rs.pi64)!=0) or ((self.__rs.pf64)!=0))):
    raise mosek_fusion_UnexpectedError._ctor_S("Stack rs not clean")
   if (((self.__ws.pi32)!=0) or (((self.__ws.pi64)!=0) or ((self.__ws.pf64)!=0))):
    raise mosek_fusion_UnexpectedError._ctor_S("Stack ws not clean")
   self.__xs.clear()
   if ((int(len(_0)) > 0) and self._hasConstraint_S(_0)):
    raise mosek_fusion_NameError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Duplicate constraint name '")._a_S(_0)._a_S("'")._toString_())
   if (_2._cardinal_flag):
    raise mosek_fusion_DomainError._ctor_S("Integer domain not allowed in a constraint")
   _3=mosek_fusion_ExprDense._ctor_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprOptimizeCode._ctor_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprCompress._ctor_Lmosek_4fusion_4Expression_2(_1)))
   _3.recursive_eval(self.__rs,self.__ws,self.__xs,self.__cache_evaluations)
   self.__rs.pop_expr()
   _4=(self.__rs.i32)
   _5=(self.__rs.i64)
   _6=(self.__rs.f64)
   _7=(self.__rs.nd)
   _8=(self.__rs.shape_base)
   _9=(self.__rs.nelem)
   _10=(self.__rs.nnz)
   _11=(self.__rs.ncodeatom)
   _12=(self.__rs.hassp)
   _13=(self.__rs.ptr_base)
   _14=(self.__rs.nidxs_base)
   _15=(self.__rs.cof_base)
   _16=(self.__rs.codeptr_base)
   _17=(self.__rs.code_base)
   _18=(self.__rs.cconst_base)
   _19=numpy.array([_4[(_8 + _20)] for _20 in range(0,_7)], dtype=numpy.dtype(numpy.int32))
   _21=_2._finalize_1and_1validate__3I(_19)
   if ((_21._shape) is not None):
    if (int(((_21._shape)).shape[0])!=_7):
     raise mosek_fusion_DimensionError._ctor_S("Mismatching expression and domain")
    else:
     for _22 in range(0,_7):
      if ((_21._shape)[_22]!=_4[(_8 + _22)]):
       raise mosek_fusion_DimensionError._ctor_S("Mismatching expression and domain")
   _23=1
   for _24 in range(0,_7):
    _23 *= _4[(_8 + _24)]
   _25=numpy.zeros((_23,), dtype=numpy.dtype(numpy.int32))
   _26=self.__con_1allocate__3I(_25)
   self.__putarows__3ILmosek_4fusion_4WorkStack_2IIIII(_25,self.__rs,_9,_10,_13,_14,_15)
   self.__xs.clear()
   _27=numpy.zeros((_23,), dtype=numpy.dtype(numpy.float64))
   _28=numpy.zeros((_23,), dtype=numpy.dtype(numpy.float64))
   _29=(_21._lb)
   _30=(_21._ub)
   _31=(_21._empty)
   _32=(_21._scalable)
   _33=(_21._sparsity)
   if _32:
    for _34 in range(0,_23):
     _27[_34] = _29[0]
     _28[_34] = _30[0]
   elif _31: # bld/grindsted/final/default/src/fusion/Model.mbi:1358:18-26
    pass
   elif (_33 is not None): # bld/grindsted/final/default/src/fusion/Model.mbi:1360:18-30
    _35=numpy.zeros((_7,), dtype=numpy.dtype(numpy.int32))
    _35[(_7 - 1)] = 1
    for _36 in range(1,_7):
     _35[((_7 - _36) - 1)] = (_35[(_7 - _36)] * _4[((_8 + _7) - _36)])
    for _37 in range(0,int((_29).shape[0])):
     _38=0
     for _39 in range(0,_7):
      _38 += (_35[_39] * _33[_37,_39])
     _27[_38] = _29[_37]
     _28[_38] = _30[_37]
   else:
    for _40 in range(0,_23):
     _27[_40] = _29[_40]
     _28[_40] = _30[_40]
   self._task_1con_1putboundlist_1ra__3I_3D_3D(_25,_27,_28)
   if (_11 > 0):
    self.__con_blocks.replace_row_code(self.__rs,_25,_13,_14,_16,_17,_18)
   if (int(len(_0)) > 0):
    _41=mosek.fusion.Utils.StringBuffer()
    _41._a_S(_0)._a_S("[")
    if (int((_19).shape[0]) > 0):
     _41._a_S("%0")
    for _42 in range(1,int((_19).shape[0])):
     _41._a_S(",%")._a_I(_42)
    _41._a_S("]")
    if ((_21._indexnames) is not None):
     self._task_1format_1con_1names__3IS_3I_3J_3_3S(_25,_41._toString_(),_19,None,(_21._indexnames))
    else:
     self._task_1format_1con_1names__3IS_3I_3J_3_3S(_25,_41._toString_(),_19,None,None)
   _43=mosek_fusion_RangedConstraint._ctor_Lmosek_4fusion_4Model_2S_3I_3II(self,_0,numpy.array([_4[(_8 + _44)] for _44 in range(0,_7)], dtype=numpy.dtype(numpy.int32)),_25,_26)
   self.__cons[_26] = _43
   if (int(len(_0)) > 0):
    self.__con_map._setItem_SI(_0,_26)
   return (_43)
  def __constraint_1_alt_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(self,_t__0,_t__1,_t__2):
    return self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(_0,_1,_2)
  def __constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(self,_0,_1,_2):
   if (((self.__rs.pi32)!=0) or (((self.__rs.pi64)!=0) or ((self.__rs.pf64)!=0))):
    raise mosek_fusion_UnexpectedError._ctor_S("Stack rs not clean")
   if (((self.__ws.pi32)!=0) or (((self.__ws.pi64)!=0) or ((self.__ws.pf64)!=0))):
    raise mosek_fusion_UnexpectedError._ctor_S("Stack ws not clean")
   self.__xs.clear()
   _3=_1.getShape()
   _4=_2._finalize_1and_1validate__3I(_3)
   _5=((_4._conedim1) < (_4._conedim2))
   _6=((_4._conedim2) if (((_4._conedim1) < (_4._conedim2)) ) else (_4._conedim1))
   _7=((_4._conedim1) if (((_4._conedim1) < (_4._conedim2)) ) else (_4._conedim2))
   _8=mosek_fusion_ExprDenseTril._ctor_IILmosek_4fusion_4Expression_2(_7,_6,mosek_fusion_ExprOptimizeCode._ctor_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprCompress._ctor_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprScaleVecPSD._ctor_IILmosek_4fusion_4Expression_2(_7,_6,mosek_fusion_ExprDenseTril._ctor_IILmosek_4fusion_4Expression_2(_7,_6,(mosek_fusion_ExprSymmetrize._ctor_IILmosek_4fusion_4Expression_2(_7,_6,_1) if (((_4._key)==mosek.fusion.PSDKey.IsSymPSD) ) else _1))))))
   _8.recursive_eval(self.__rs,self.__ws,self.__xs,self.__cache_evaluations)
   self.__rs.pop_expr()
   _9=(self.__rs.i32)
   _10=(self.__rs.i64)
   _11=(self.__rs.f64)
   _12=(self.__rs.nd)
   _13=(self.__rs.nelem)
   _14=(self.__rs.nnz)
   _15=(self.__rs.hassp)
   _16=(self.__rs.ncodeatom)
   _17=(self.__rs.shape_base)
   _18=(self.__rs.ptr_base)
   _19=(self.__rs.nidxs_base)
   _20=(self.__rs.sp_base)
   _21=(self.__rs.cof_base)
   _22=(self.__rs.codeptr_base)
   _23=(self.__rs.code_base)
   _24=(self.__rs.cconst_base)
   _25=_3[_6]
   _26=((_25 * (_25 + 1)) // 2)
   _27=1
   for _28 in range(0,_12):
    if ((_28!=_7) and (_28!=_6)):
     _27 *= _3[_28]
   _29=self._task_1append_1domain_1svec_1psd_I(_26)
   _30=(_26 * _27)
   _31=numpy.zeros((_30,), dtype=numpy.dtype(numpy.int32))
   _32=numpy.zeros((_27,), dtype=numpy.dtype(numpy.int32))
   _33=numpy.zeros((_30,), dtype=numpy.dtype(numpy.int32))
   _34=numpy.zeros((_30,), dtype=numpy.dtype(numpy.float64))
   _35=self.__acon_1allocate__3JII_3D_3I_3I(numpy.array([_29 for _36 in range(0,_27)], dtype=numpy.dtype(numpy.int64)),_26,_27,_34,_31,_32)
   _37=numpy.zeros((_30,), dtype=numpy.dtype(numpy.int32))
   self.__acon_block_map.get(_35,_37,0)
   _38=1
   _39=_3[_6]
   _40=1
   _41=_3[_7]
   _42=1
   for _43 in range(0,_7):
    _42 *= _3[_43]
   for _44 in range((_7 + 1),_6):
    _40 *= _3[_44]
   for _45 in range((_6 + 1),_12):
    _38 *= _3[_45]
   _46=0
   _47=(1.0 / mosek.fusion.Utils.Tools._sqrt_D(2))
   for _48 in range(0,((_42 * _40) * _38)):
    for _49 in range(0,_41):
     _46 += 1
     for _50 in range((_49 + 1),_39):
      self.__acon_elm_scale[_37[_46]] = _47
      _46 += 1
   _51=numpy.zeros((_13,), dtype=numpy.dtype(numpy.int32))
   _52=0
   if _5:
    for _53 in range(0,_42):
     for _54 in range(0,_39):
      for _55 in range(0,_40):
       for _56 in range(_54,_41):
        for _57 in range(0,_38):
         _58=((((_53 * _40) * _38) + (_55 * _38)) + _57)
         _59=(((_56 * (_56 + 1)) // 2) + _54)
         _51[((_58 * _26) + _59)] = _31[_52]
         _52 += 1
   else:
    for _60 in range(0,_42):
     for _61 in range(0,_39):
      for _62 in range(0,_40):
       for _63 in range(0,(_61 + 1)):
        for _64 in range(0,_38):
         _65=((((_60 * _40) * _38) + (_62 * _38)) + _64)
         _66=(((_63 * (((2 * _41) - _63) - 1)) // 2) + _61)
         _51[((_65 * _26) + _66)] = _31[_52]
         _52 += 1
   self.__putfrows__3IILmosek_4fusion_4WorkStack_2IIIII(_51,0,self.__rs,_13,_14,_18,_19,_21)
   if (_16 > 0):
    self.__afe_blocks.replace_row_code(self.__rs,_51,_18,_19,_22,_23,_24)
   else:
    pass
   _67=numpy.zeros((((_27 * _41) * _41),), dtype=numpy.dtype(numpy.int32))
   _68=0
   if _5:
    for _69 in range(0,_42):
     for _70 in range(0,_41):
      for _71 in range(0,_40):
       for _72 in range(0,_39):
        for _73 in range(0,_38):
         _74=((((_69 * _40) * _38) + (_71 * _38)) + _73)
         _75=((((_72 * (((2 * _41) - _72) - 1)) // 2) + _70) if ((_70 >= _72) ) else (((_70 * (((2 * _41) - _70) - 1)) // 2) + _72))
         _67[_68] = _31[((_74 * _26) + _75)]
         _68 += 1
   else:
    for _76 in range(0,_42):
     for _77 in range(0,_41):
      for _78 in range(0,_40):
       for _79 in range(0,_39):
        for _80 in range(0,_38):
         _81=((((_76 * _40) * _38) + (_78 * _38)) + _80)
         _82=((((_79 * (((2 * _41) - _79) - 1)) // 2) + _77) if ((_77 >= _79) ) else (((_77 * (((2 * _41) - _77) - 1)) // 2) + _79))
         _67[_68] = _31[((_81 * _26) + _82)]
         _68 += 1
   if (int(len(_0)) > 0):
    _83=numpy.zeros(((int((_3).shape[0]) - 2),), dtype=numpy.dtype(numpy.int32))
    for _84 in range(0,_7):
     _83[_84] = _3[_84]
    for _85 in range((_7 + 1),_6):
     _83[(_85 - 1)] = _3[_85]
    for _86 in range((_6 + 1),_12):
     _83[(_86 - 2)] = _3[_86]
    _87=mosek.fusion.Utils.StringBuffer()
    _87._a_S(_0)._a_S("[")
    if (_12 > 2):
     _87._a_S("%0")
     for _88 in range(1,(_12 - 2)):
      _87._a_S(",%")._a_I(_88)
    _87._a_S("]")
    if ((_4._indexnames) is not None):
     _89=(_4._indexnames)
     _90=numpy.ndarray(((_12 - 2),), dtype=numpy.dtype(object))
     for _91 in range(0,_7):
      _90[_91] = _89[_91]
     for _92 in range((_7 + 1),_6):
      _90[(_92 - 1)] = _89[_92]
     for _93 in range((_6 + 1),_12):
      _90[(_93 - 2)] = _89[_93]
     self._task_1format_1acc_1names__3JS_3I_3_3S(numpy.array([_32[_94] for _94 in range(0,int((_32).shape[0]))], dtype=numpy.dtype(numpy.int64)),_87._toString_(),_83,_90)
    else:
     self._task_1format_1acc_1names__3JS_3I_3_3S(numpy.array([_32[_95] for _95 in range(0,int((_32).shape[0]))], dtype=numpy.dtype(numpy.int64)),_87._toString_(),_83,None)
   _96=mosek_fusion_ConicConstraint._ctor_Lmosek_4fusion_4Model_2SLmosek_4fusion_4ConeDomain_2_3II_3I_3_3S(self,_0,None,_3,_35,_67,None)
   self.__acons[_35] = _96
   if (int(len(_0)) > 0):
    self.__con_map._setItem_SI(_0,(- (1 + _35)))
   return (_96)
  def __constraint_1_alt_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(self,_t__0,_t__1,_t__2):
    return self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(_0,_1,_2)
  def __constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(self,_0,_1,_2):
   if (((self.__rs.pi32)!=0) or (((self.__rs.pi64)!=0) or ((self.__rs.pf64)!=0))):
    raise mosek_fusion_UnexpectedError._ctor_S("Stack rs not clean")
   if (((self.__ws.pi32)!=0) or (((self.__ws.pi64)!=0) or ((self.__ws.pf64)!=0))):
    raise mosek_fusion_UnexpectedError._ctor_S("Stack ws not clean")
   self.__xs.clear()
   if ((int(len(_0)) > 0) and self._hasConstraint_S(_0)):
    raise mosek_fusion_NameError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Duplicate constraint name '")._a_S(_0)._a_S("'")._toString_())
   if ((int(len(_0)) > 0) and self._hasConstraint_S(_0)):
    raise mosek_fusion_NameError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Duplicate constraint name '")._a_S(_0)._a_S("'")._toString_())
   if (_2._int_flag):
    raise mosek_fusion_DomainError._ctor_S("Integer domain not allowed in a constraint")
   _3=mosek_fusion_ExprDense._ctor_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprOptimizeCode._ctor_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprCompress._ctor_Lmosek_4fusion_4Expression_2(_1)))
   _3.recursive_eval(self.__rs,self.__ws,self.__xs,self.__cache_evaluations)
   self.__rs.pop_expr()
   _4=(self.__rs.i32)
   _5=(self.__rs.i64)
   _6=(self.__rs.f64)
   _7=(self.__rs.nd)
   _8=(self.__rs.shape_base)
   _9=(self.__rs.nelem)
   _10=(self.__rs.nnz)
   _11=(self.__rs.ncodeatom)
   _12=(self.__rs.hassp)
   _13=(self.__rs.ptr_base)
   _14=(self.__rs.nidxs_base)
   _15=(self.__rs.cof_base)
   _16=(self.__rs.code_base)
   _17=(self.__rs.codeptr_base)
   _18=(self.__rs.cconst_base)
   _19=numpy.array([_4[(_8 + _20)] for _20 in range(0,_7)], dtype=numpy.dtype(numpy.int32))
   _21=_2._finalize_1and_1validate__3I(_19)
   _22=(_21._getAxis_() if (_21._axisIsSet_() ) else (_7 - 1))
   _23=_19[_22]
   _24=1
   _25=1
   _26=1
   for _27 in range(0,_7):
    _26 *= _19[_27]
   for _28 in range(0,_22):
    _25 *= _19[_28]
   for _29 in range((_22 + 1),_7):
    _24 *= _19[_29]
   _30=(_25 * _24)
   _31=(- 1)
   _32=numpy.zeros((0,), dtype=numpy.dtype(numpy.int64))
   if ((_21._key)==mosek.fusion.QConeKey.InQCone):
    if (_23 < 2):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_23)._a_S(") for quadratic cone")._toString_())
    _31 = self._task_1append_1domain_1quad_I(_23)
   elif ((_21._key)==mosek.fusion.QConeKey.InRotatedQCone): # bld/grindsted/final/default/src/fusion/Model.mbi:926:16-50
    if (_23 < 3):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_23)._a_S(") for rotated quadratic cone")._toString_())
    _31 = self._task_1append_1domain_1rquad_I(_23)
   elif ((_21._key)==mosek.fusion.QConeKey.InPExpCone): # bld/grindsted/final/default/src/fusion/Model.mbi:930:16-46
    if (_23!=3):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_23)._a_S(") for exponential cone")._toString_())
    _31 = self._task_1append_1domain_1pexp_()
   elif ((_21._key)==mosek.fusion.QConeKey.InPPowCone): # bld/grindsted/final/default/src/fusion/Model.mbi:934:16-46
    if (_23 < 2):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_23)._a_S(") for power cone")._toString_())
    if (int(((_21._alpha)).shape[0]) < 2):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Power cone requires at least two parameters")._toString_())
    _31 = self._task_1append_1domain_1ppow_I_3D(_23,(_21._alpha))
   elif ((_21._key)==mosek.fusion.QConeKey.InPPowConeSeq): # bld/grindsted/final/default/src/fusion/Model.mbi:939:16-49
    if (_23 < 2):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_23)._a_S(") for power cone")._toString_())
    if ((int(((_21._alpha)).shape[0]) % _30)!=0):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Incompatible number of cones and number of exponents alpha")._toString_())
    _33=(int(((_21._alpha)).shape[0]) // _30)
    if (_33 > _23):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid number of exponents (")._a_I(_33)._a_S(") per power cone of dimension ")._a_I(_23)._toString_())
    _32 = self._task_1append_1domain_1ppow_1seq_II_3D(_23,_33,(_21._alpha))
   elif ((_21._key)==mosek.fusion.QConeKey.InDExpCone): # bld/grindsted/final/default/src/fusion/Model.mbi:946:16-46
    if (_23!=3):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_23)._a_S(") for dual exponential cone")._toString_())
    _31 = self._task_1append_1domain_1dexp_()
   elif ((_21._key)==mosek.fusion.QConeKey.InDPowCone): # bld/grindsted/final/default/src/fusion/Model.mbi:950:16-46
    if (_23 < 2):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_23)._a_S(") for dual power cone")._toString_())
    if (int(((_21._alpha)).shape[0]) < 2):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Power cone requires at least two parameters")._toString_())
    _31 = self._task_1append_1domain_1dpow_I_3D(_23,(_21._alpha))
   elif ((_21._key)==mosek.fusion.QConeKey.InDPowConeSeq): # bld/grindsted/final/default/src/fusion/Model.mbi:955:16-49
    if (_23 < 2):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_23)._a_S(") for power cone")._toString_())
    if ((int(((_21._alpha)).shape[0]) % _30)!=0):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Incompatible number of cones and number of exponents alpha")._toString_())
    _34=(int(((_21._alpha)).shape[0]) // _30)
    if (_34 > _23):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid number of exponents (")._a_I(_34)._a_S(") per power cone of dimension ")._a_I(_23)._toString_())
    _32 = self._task_1append_1domain_1dpow_1seq_II_3D(_23,_34,(_21._alpha))
   elif ((_21._key)==mosek.fusion.QConeKey.InPGeoMeanCone): # bld/grindsted/final/default/src/fusion/Model.mbi:970:16-50
    if (_23 < 2):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_23)._a_S(") for primal geometric mean cone")._toString_())
    _31 = self._task_1append_1domain_1pgeomean_I(_23)
   elif ((_21._key)==mosek.fusion.QConeKey.InDGeoMeanCone): # bld/grindsted/final/default/src/fusion/Model.mbi:974:16-50
    if (_23 < 2):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_23)._a_S(") for dual geometric mean cone")._toString_())
    _31 = self._task_1append_1domain_1dgeomean_I(_23)
   elif ((_21._key)==mosek.fusion.QConeKey.InSVecPSDCone): # bld/grindsted/final/default/src/fusion/Model.mbi:978:16-49
    _35=numpy.int32(((mosek.fusion.Utils.Tools._sqrt_D((1 + (8 * _23))) - 1) / 2))
    if (((_35 * (_35 + 1)) // 2)!=_23):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_23)._a_S(") for vector positive semidefinite cone")._toString_())
    _31 = self._task_1append_1domain_1svec_1psd_I(_23)
   elif ((_21._key)==mosek.fusion.QConeKey.Positive): # bld/grindsted/final/default/src/fusion/Model.mbi:984:16-44
    _31 = self._task_1append_1domain_1rpos_I(_23)
   elif ((_21._key)==mosek.fusion.QConeKey.Negative): # bld/grindsted/final/default/src/fusion/Model.mbi:987:16-44
    _31 = self._task_1append_1domain_1rneg_I(_23)
   elif ((_21._key)==mosek.fusion.QConeKey.Unbounded): # bld/grindsted/final/default/src/fusion/Model.mbi:989:16-45
    _31 = self._task_1append_1domain_1r_I(_23)
   elif ((_21._key)==mosek.fusion.QConeKey.Zero): # bld/grindsted/final/default/src/fusion/Model.mbi:991:16-40
    _31 = self._task_1append_1domain_1rzero_I(_23)
   elif ((_21._key)==mosek.fusion.QConeKey.InPSDCone): # bld/grindsted/final/default/src/fusion/Model.mbi:993:16-45
    if (_23 < 2):
     raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_23)._a_S(") for positive semidefinite cone")._toString_())
    else:
     _36=numpy.int32(((mosek.fusion.Utils.Tools._sqrt_D((1 + (8 * _23))) - 1) / 2))
     if (((_36 * (_36 + 1)) // 2)!=_23):
      raise mosek_fusion_DimensionError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Invalid size (")._a_I(_23)._a_S(") for positive semidefinite cone")._toString_())
    _31 = self._task_1append_1domain_1svec_1psd_I(_23)
   else:
    raise mosek_fusion_UnexpectedError._ctor_S("Internal error: Invalid cone type")
   _37=numpy.zeros((_26,), dtype=numpy.dtype(numpy.float64))
   _38=numpy.zeros((_26,), dtype=numpy.dtype(numpy.int32))
   _39=numpy.zeros((_30,), dtype=numpy.dtype(numpy.int32))
   if (((_21._key)==mosek.fusion.QConeKey.InPPowConeSeq) or ((_21._key)==mosek.fusion.QConeKey.InDPowConeSeq)):
    pass
   else:
    _32 = numpy.array([_31 for _40 in range(0,_30)], dtype=numpy.dtype(numpy.int64))
   _41=self.__acon_1allocate__3JII_3D_3I_3I(_32,_23,_30,_37,_38,_39)
   _42=numpy.zeros((_26,), dtype=numpy.dtype(numpy.int32))
   _43=0
   _44=(_21._domofs)
   for _45 in range(0,_25):
    for _46 in range(0,_24):
     for _47 in range(0,_23):
      _42[((((_45 * _24) * _23) + (_47 * _24)) + _46)] = _43
      _43 += 1
   if (_44 is not None):
    for _48 in range(0,_26):
     _37[_42[_48]] = _44[_48]
   _49=numpy.array([_38[_42[_50]] for _50 in range(0,_26)], dtype=numpy.dtype(numpy.int32))
   self.__putfrows__3IILmosek_4fusion_4WorkStack_2IIIII(_49,0,self.__rs,_9,_10,_13,_14,_15)
   if (_11 > 0):
    self.__afe_blocks.replace_row_code(self.__rs,_49,_13,_14,_17,_16,_18)
   if (int(len(_0)) > 0):
    _51=numpy.zeros(((int((_19).shape[0]) - 1),), dtype=numpy.dtype(numpy.int32))
    for _52 in range(0,_22):
     _51[_52] = _19[_52]
    for _53 in range((_22 + 1),_7):
     _51[(_53 - 1)] = _19[_53]
    _54=mosek.fusion.Utils.StringBuffer()
    _54._a_S(_0)._a_S("[")
    if (_7 > 1):
     _54._a_S("%0")
     for _55 in range(1,(_7 - 1)):
      _54._a_S(",%")._a_I(_55)
    _54._a_S("]")
    if ((_21._indexnames) is not None):
     _56=(_21._indexnames)
     _57=numpy.ndarray(((_7 - 1),), dtype=numpy.dtype(object))
     for _58 in range(0,_22):
      _57[_58] = _56[_58]
     for _59 in range((_22 + 1),_7):
      _57[(_59 - 1)] = _56[_59]
     self._task_1format_1acc_1names__3JS_3I_3_3S(numpy.array([_39[_60] for _60 in range(0,int((_39).shape[0]))], dtype=numpy.dtype(numpy.int64)),_54._toString_(),_51,_57)
    else:
     self._task_1format_1acc_1names__3JS_3I_3_3S(numpy.array([_39[_61] for _61 in range(0,int((_39).shape[0]))], dtype=numpy.dtype(numpy.int64)),_54._toString_(),_51,None)
   _62=mosek_fusion_ConicConstraint._ctor_Lmosek_4fusion_4Model_2SLmosek_4fusion_4ConeDomain_2_3II_3I_3_3S(self,_0,_21,_19,_41,_38,(_21._indexnames))
   self.__acons[_41] = _62
   if (int(len(_0)) > 0):
    self.__con_map._setItem_SI(_0,(- (_41 + 1)))
   return (_62)
  def __constraint_1_alt_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(self,_t__0,_t__1,_t__2):
    return self.__constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(_0,_1,_2)
  def __constraint_1_SLmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(self,_0,_1,_2):
   if (((self.__rs.pi32)!=0) or (((self.__rs.pi64)!=0) or ((self.__rs.pf64)!=0))):
    raise mosek_fusion_UnexpectedError._ctor_S("Stack rs not clean")
   if (((self.__ws.pi32)!=0) or (((self.__ws.pi64)!=0) or ((self.__ws.pf64)!=0))):
    raise mosek_fusion_UnexpectedError._ctor_S("Stack ws not clean")
   self.__xs.clear()
   if ((int(len(_0)) > 0) and self._hasConstraint_S(_0)):
    raise mosek_fusion_NameError._ctor_S(mosek.fusion.Utils.StringBuffer()._a_S("Duplicate constraint name '")._a_S(_0)._a_S("'")._toString_())
   if (_2._cardinal_flag):
    raise mosek_fusion_DomainError._ctor_S("Integer domain not allowed in a constraint")
   _3=mosek_fusion_ExprDense._ctor_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprOptimizeCode._ctor_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprCompress._ctor_Lmosek_4fusion_4Expression_2(_1)))
   _3.recursive_eval(self.__rs,self.__ws,self.__xs,self.__cache_evaluations)
   self.__rs.pop_expr()
   _4=(self.__rs.i32)
   _5=(self.__rs.i64)
   _6=(self.__rs.f64)
   _7=(self.__rs.nd)
   _8=(self.__rs.nelem)
   _9=(self.__rs.nnz)
   _10=(self.__rs.hassp)
   _11=(self.__rs.ncodeatom)
   _12=(self.__rs.shape_base)
   _13=(self.__rs.ptr_base)
   _14=(self.__rs.nidxs_base)
   _15=(self.__rs.cof_base)
   _16=(self.__rs.codeptr_base)
   _17=(self.__rs.code_base)
   _18=(self.__rs.cconst_base)
   _19=numpy.array([_4[(_12 + _20)] for _20 in range(0,_7)], dtype=numpy.dtype(numpy.int32))
   _21=_2._finalize_1and_1validate__3I(_19)
   _22=(_21._domsize)
   _23=(_21._indexnames)
   _25=numpy.zeros((_22,), dtype=numpy.dtype(numpy.int32))
   _26=self.__con_1allocate__3I(_25)
   self.__putarows__3ILmosek_4fusion_4WorkStack_2IIIII(_25,self.__rs,_8,_9,_13,_14,_15)
   _27=(_21._sparsity)
   _28=(_21._empty)
   _29=(_21._bnd)
   _30=(_21._scalable)
   if (_29 is None):
    _24 = numpy.zeros((int((_25).shape[0]),), dtype=numpy.dtype(numpy.float64))
   elif _30: # bld/grindsted/final/default/src/fusion/Model.mbi:779:20-31
    _24 = numpy.array([_29[0] for _31 in range(0,int((_25).shape[0]))], dtype=numpy.dtype(numpy.float64))
   elif (_27 is not None): # bld/grindsted/final/default/src/fusion/Model.mbi:781:20-33
    _32=numpy.zeros((_7,), dtype=numpy.dtype(numpy.int32))
    _32[(_7 - 1)] = 1
    for _33 in range(1,_7):
     _32[((_7 - _33) - 1)] = (_32[(_7 - _33)] * _19[(_7 - _33)])
    _24 = numpy.zeros((int((_25).shape[0]),), dtype=numpy.dtype(numpy.float64))
    for _34 in range(0,int((_27).shape[0])):
     _35=0
     for _36 in range(0,_7):
      _35 += (_32[_36] * _27[_34,_36])
     _24[_35] = _29[_34]
   elif _28: # bld/grindsted/final/default/src/fusion/Model.mbi:790:20-28
    _24 = numpy.zeros((int((_25).shape[0]),), dtype=numpy.dtype(numpy.float64))
   else:
    _24 = numpy.array([_29[_37] for _37 in range(0,int((_25).shape[0]))], dtype=numpy.dtype(numpy.float64))
   if ((_21._key)==mosek.fusion.RelationKey.IsFree):
    self._task_1con_1putboundlist_1fr__3I(_25)
   if ((_21._key)==mosek.fusion.RelationKey.LessThan):
    self._task_1con_1putboundlist_1up__3I_3D(_25,_24)
   elif ((_21._key)==mosek.fusion.RelationKey.GreaterThan): # bld/grindsted/final/default/src/fusion/Model.mbi:813:17-51
    self._task_1con_1putboundlist_1lo__3I_3D(_25,_24)
   elif ((_21._key)==mosek.fusion.RelationKey.EqualsTo): # bld/grindsted/final/default/src/fusion/Model.mbi:817:17-48
    self._task_1con_1putboundlist_1fx__3I_3D(_25,_24)
   if (_11 > 0):
    self.__con_blocks.replace_row_code(self.__rs,_25,_13,_14,_16,_17,_18)
   if (int(len(_0)) > 0):
    _38=mosek.fusion.Utils.StringBuffer()
    _38._a_S(_0)._a_S("[")
    if (int((_19).shape[0]) > 0):
     _38._a_S("%0")
    for _39 in range(1,int((_19).shape[0])):
     _38._a_S(",%")._a_I(_39)
    _38._a_S("]")
    if ((_21._indexnames) is not None):
     self._task_1format_1con_1names__3IS_3I_3J_3_3S(_25,_38._toString_(),_19,None,(_21._indexnames))
    else:
     self._task_1format_1con_1names__3IS_3I_3J_3_3S(_25,_38._toString_(),_19,None,None)
   _40=mosek_fusion_LinearConstraint._ctor_Lmosek_4fusion_4Model_2SI_3I_3I_3_3S(self,_0,_26,_19,_25,_23)
   self.__cons[_26] = _40
   if (int(len(_0)) > 0):
    self.__con_map._setItem_SI(_0,_26)
   return (_40)
  @staticmethod
  def _match_getVersion_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getVersion_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _getVersion_alt_():
    return mosek_fusion_Model._getVersion_()
  @staticmethod
  def _getVersion_():
   return (mosek.fusion.BaseModel._env_1getversion_())
  @staticmethod
  def _match_hasParameter_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_S__(_0))
  @staticmethod
  def _match_alt_hasParameter_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_S__(_0))
  def _hasParameter_alt_S(self,_t__0):
    return self._hasParameter_S(_0)
  def _hasParameter_S(self,_0):
   return (self.__par_map._hasItem_S(_0))
  @staticmethod
  def _match_hasConstraint_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_S__(_0))
  @staticmethod
  def _match_alt_hasConstraint_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_S__(_0))
  def _hasConstraint_alt_S(self,_t__0):
    return self._hasConstraint_S(_0)
  def _hasConstraint_S(self,_0):
   return (self.__con_map._hasItem_S(_0))
  @staticmethod
  def _match_hasVariable_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_S__(_0))
  @staticmethod
  def _match_alt_hasVariable_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_S__(_0))
  def _hasVariable_alt_S(self,_t__0):
    return self._hasVariable_S(_0)
  def _hasVariable_S(self,_0):
   return (self.__var_map._hasItem_S(_0))
  @staticmethod
  def _match_getParameter_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_S__(_0))
  @staticmethod
  def _match_alt_getParameter_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_S__(_0))
  def _getParameter_alt_S(self,_t__0):
    return self._getParameter_S(_0)
  def _getParameter_S(self,_0):
   return ((self.__parameters[self.__par_map._getItem_S(_0)] if (self.__par_map._hasItem_S(_0) ) else None))
  @staticmethod
  def _match_getConstraint_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_getConstraint_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _getConstraint_alt_I(self,_t__0):
    return self._getConstraint_I(numpy.int32(__0))
  def _getConstraint_I(self,_0):
   if (_0 >= 0):
    _1 = self.__cons[_0]
   else:
    _1 = self.__acons[(- (1 + _0))]
   return (_1)
  @staticmethod
  def _match_getConstraint_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_S__(_0))
  @staticmethod
  def _match_alt_getConstraint_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_S__(_0))
  def _getConstraint_alt_S(self,_t__0):
    return self._getConstraint_S(_0)
  def _getConstraint_S(self,_0):
   _1=None
   if self.__con_map._hasItem_S(_0):
    _2=self.__con_map._getItem_S(_0)
    if (_2 >= 0):
     _1 = self.__cons[_2]
    else:
     _1 = self.__acons[(- (1 + _2))]
   return (_1)
  @staticmethod
  def _match_getVariable_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_getVariable_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _getVariable_alt_I(self,_t__0):
    return self._getVariable_I(numpy.int32(__0))
  def _getVariable_I(self,_0):
   return (self.__vars[_0])
  @staticmethod
  def _match_getVariable_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_S__(_0))
  @staticmethod
  def _match_alt_getVariable_S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_S__(_0))
  def _getVariable_alt_S(self,_t__0):
    return self._getVariable_S(_0)
  def _getVariable_S(self,_0):
   if self.__var_map._hasItem_S(_0):
    _1=self.__var_map._getItem_S(_0)
    if (_1 < 0):
     return (self.__barvars[(- (_1 + 1))])
    else:
     return (self.__vars[_1])
   else:
    return (None)
  @staticmethod
  def _match_getName_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getName_(*args):
    if len(args) != 0: return False
    return True
  def _getName_alt_(self,):
    return self._getName_()
  def _getName_(self,):
   return (self.__model_name)
  def _getParameterValue_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._getParameterValue__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _getParameterValue__3I(self,_0):
   _1=numpy.zeros((int((_0).shape[0]),), dtype=numpy.dtype(numpy.float64))
   for _2 in range(0,int((_0).shape[0])):
    _1[_2] = self.__param_value[_0[_2]]
   return (_1)
  def _setParameterValue_alt__3I_3D(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _1_res = self._setParameterValue__3I_3D(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _setParameterValue__3I_3D(self,_0,_1):
   for _2 in range(0,int((_0).shape[0])):
    self.__param_value[_0[_2]] = _1[_2]
  @staticmethod
  def _match_clone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_clone_(*args):
    if len(args) != 0: return False
    return True
  def _clone_alt_(self,):
    return self._clone_()
  def _clone_(self,):
   return (mosek_fusion_Model._ctor_Lmosek_4fusion_4Model_2(self))
 return Model
mosek_fusion_Model=__mk_mosek_fusion_Model()
del __mk_mosek_fusion_Model
def __mk_mosek_fusion_Debug():
  import sys
  class Debug:
    @staticmethod
    def _o_(): return Debug()
    def p(self,v):
      sys.stdout.write(str(v))
      return self
    _p_S = p
    _p_I = p
    _p_J = p
    _p_D = p
    _p_Z = p
  
    def p_array (self,v):
      if v is None:
          sys.stdout.write('None')
      else:
          sys.stdout.write('[ %s ]' % ','.join([str(i) for i in v]))
      return self
  
    _p__3I = p_array
    _p__3J = p_array
    _p__3D = p_array
  
    def _lf_(self):
      sys.stdout.write("\n")
      return self
  return Debug
mosek_fusion_Debug=__mk_mosek_fusion_Debug()
def __mk_mosek_fusion_Sort():
 class Sort(object):
  @staticmethod
  def getminmax(*args):
    if False: pass
    elif mosek_fusion_Sort._match_getminmax__3J_3I_3IJJ_3I(*args): 
      return mosek_fusion_Sort._getminmax__3J_3I_3IJJ_3I(*args)
    elif mosek_fusion_Sort._match_alt_getminmax__3J_3I_3IJJ_3I(*args): 
      return mosek_fusion_Sort._getminmax_alt__3J_3I_3IJJ_3I(*args)
    elif mosek_fusion_Sort._match_getminmax__3J_3J_3JJJ_3J(*args): 
      return mosek_fusion_Sort._getminmax__3J_3J_3JJJ_3J(*args)
    elif mosek_fusion_Sort._match_alt_getminmax__3J_3J_3JJJ_3J(*args): 
      return mosek_fusion_Sort._getminmax_alt__3J_3J_3JJJ_3J(*args)
    else:
      raise ValueError('Invalid argument list getminmax('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Sort.getminmax(array(int64,ndim=1),array(int32,ndim=1),array(int32,ndim=1),int64,int64,array(int32,ndim=1))\n\tmosek.fusion.Sort.getminmax(array(int64,ndim=1),array(int64,ndim=1),array(int64,ndim=1),int64,int64,array(int64,ndim=1))')
  @staticmethod
  def argsort(*args):
    if False: pass
    elif mosek_fusion_Sort._match_argsort__3J_3J(*args): 
      return mosek_fusion_Sort._argsort__3J_3J(*args)
    elif mosek_fusion_Sort._match_alt_argsort__3J_3J(*args): 
      return mosek_fusion_Sort._argsort_alt__3J_3J(*args)
    elif mosek_fusion_Sort._match_argsort__3J_3I(*args): 
      return mosek_fusion_Sort._argsort__3J_3I(*args)
    elif mosek_fusion_Sort._match_alt_argsort__3J_3I(*args): 
      return mosek_fusion_Sort._argsort_alt__3J_3I(*args)
    elif mosek_fusion_Sort._match_argsort__3J_3I_3I(*args): 
      return mosek_fusion_Sort._argsort__3J_3I_3I(*args)
    elif mosek_fusion_Sort._match_alt_argsort__3J_3I_3I(*args): 
      return mosek_fusion_Sort._argsort_alt__3J_3I_3I(*args)
    elif mosek_fusion_Sort._match_argsort__3J_3J_3J(*args): 
      return mosek_fusion_Sort._argsort__3J_3J_3J(*args)
    elif mosek_fusion_Sort._match_alt_argsort__3J_3J_3J(*args): 
      return mosek_fusion_Sort._argsort_alt__3J_3J_3J(*args)
    elif mosek_fusion_Sort._match_argsort__3J_3JJJ(*args): 
      return mosek_fusion_Sort._argsort__3J_3JJJ(*args)
    elif mosek_fusion_Sort._match_alt_argsort__3J_3JJJ(*args): 
      return mosek_fusion_Sort._argsort_alt__3J_3JJJ(*args)
    elif mosek_fusion_Sort._match_argsort__3J_3IJJ(*args): 
      return mosek_fusion_Sort._argsort__3J_3IJJ(*args)
    elif mosek_fusion_Sort._match_alt_argsort__3J_3IJJ(*args): 
      return mosek_fusion_Sort._argsort_alt__3J_3IJJ(*args)
    elif mosek_fusion_Sort._match_argsort__3J_3JJJZ(*args): 
      return mosek_fusion_Sort._argsort__3J_3JJJZ(*args)
    elif mosek_fusion_Sort._match_alt_argsort__3J_3JJJZ(*args): 
      return mosek_fusion_Sort._argsort_alt__3J_3JJJZ(*args)
    elif mosek_fusion_Sort._match_argsort__3J_3I_3IJJ(*args): 
      return mosek_fusion_Sort._argsort__3J_3I_3IJJ(*args)
    elif mosek_fusion_Sort._match_alt_argsort__3J_3I_3IJJ(*args): 
      return mosek_fusion_Sort._argsort_alt__3J_3I_3IJJ(*args)
    elif mosek_fusion_Sort._match_argsort__3J_3J_3JJJ(*args): 
      return mosek_fusion_Sort._argsort__3J_3J_3JJJ(*args)
    elif mosek_fusion_Sort._match_alt_argsort__3J_3J_3JJJ(*args): 
      return mosek_fusion_Sort._argsort_alt__3J_3J_3JJJ(*args)
    elif mosek_fusion_Sort._match_argsort__3J_3IJJZ(*args): 
      return mosek_fusion_Sort._argsort__3J_3IJJZ(*args)
    elif mosek_fusion_Sort._match_alt_argsort__3J_3IJJZ(*args): 
      return mosek_fusion_Sort._argsort_alt__3J_3IJJZ(*args)
    elif mosek_fusion_Sort._match_argsort__3J_3I_3IJJZ(*args): 
      return mosek_fusion_Sort._argsort__3J_3I_3IJJZ(*args)
    elif mosek_fusion_Sort._match_alt_argsort__3J_3I_3IJJZ(*args): 
      return mosek_fusion_Sort._argsort_alt__3J_3I_3IJJZ(*args)
    elif mosek_fusion_Sort._match_argsort__3J_3J_3JJJZ(*args): 
      return mosek_fusion_Sort._argsort__3J_3J_3JJJZ(*args)
    elif mosek_fusion_Sort._match_alt_argsort__3J_3J_3JJJZ(*args): 
      return mosek_fusion_Sort._argsort_alt__3J_3J_3JJJZ(*args)
    else:
      raise ValueError('Invalid argument list argsort('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Sort.argsort(array(int64,ndim=1),array(int64,ndim=1))\n\tmosek.fusion.Sort.argsort(array(int64,ndim=1),array(int32,ndim=1))\n\tmosek.fusion.Sort.argsort(array(int64,ndim=1),array(int32,ndim=1),array(int32,ndim=1))\n\tmosek.fusion.Sort.argsort(array(int64,ndim=1),array(int64,ndim=1),array(int64,ndim=1))\n\tmosek.fusion.Sort.argsort(array(int64,ndim=1),array(int64,ndim=1),int64,int64)\n\tmosek.fusion.Sort.argsort(array(int64,ndim=1),array(int32,ndim=1),int64,int64)\n\tmosek.fusion.Sort.argsort(array(int64,ndim=1),array(int64,ndim=1),int64,int64,bool)\n\tmosek.fusion.Sort.argsort(array(int64,ndim=1),array(int32,ndim=1),array(int32,ndim=1),int64,int64)\n\tmosek.fusion.Sort.argsort(array(int64,ndim=1),array(int64,ndim=1),array(int64,ndim=1),int64,int64)\n\tmosek.fusion.Sort.argsort(array(int64,ndim=1),array(int32,ndim=1),int64,int64,bool)\n\tmosek.fusion.Sort.argsort(array(int64,ndim=1),array(int32,ndim=1),array(int32,ndim=1),int64,int64,bool)\n\tmosek.fusion.Sort.argsort(array(int64,ndim=1),array(int64,ndim=1),array(int64,ndim=1),int64,int64,bool)')
  @staticmethod
  def argbucketsort(*args):
    if False: pass
    elif mosek_fusion_Sort._match_argbucketsort__3J_3IJJII(*args): 
      return mosek_fusion_Sort._argbucketsort__3J_3IJJII(*args)
    elif mosek_fusion_Sort._match_alt_argbucketsort__3J_3IJJII(*args): 
      return mosek_fusion_Sort._argbucketsort_alt__3J_3IJJII(*args)
    elif mosek_fusion_Sort._match_argbucketsort__3J_3JJJJJ(*args): 
      return mosek_fusion_Sort._argbucketsort__3J_3JJJJJ(*args)
    elif mosek_fusion_Sort._match_alt_argbucketsort__3J_3JJJJJ(*args): 
      return mosek_fusion_Sort._argbucketsort_alt__3J_3JJJJJ(*args)
    else:
      raise ValueError('Invalid argument list argbucketsort('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Sort.argbucketsort(array(int64,ndim=1),array(int32,ndim=1),int64,int64,int32,int32)\n\tmosek.fusion.Sort.argbucketsort(array(int64,ndim=1),array(int64,ndim=1),int64,int64,int64,int64)')
  @staticmethod
  def argTransposeSort(*args):
    if False: pass
    elif mosek_fusion_Sort._match_argTransposeSort__3J_3JIII_3J(*args): 
      return mosek_fusion_Sort._argTransposeSort__3J_3JIII_3J(*args)
    elif mosek_fusion_Sort._match_alt_argTransposeSort__3J_3JIII_3J(*args): 
      return mosek_fusion_Sort._argTransposeSort_alt__3J_3JIII_3J(*args)
    else:
      raise ValueError('Invalid argument list argTransposeSort('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Sort.argTransposeSort(array(int64,ndim=1),array(int64,ndim=1),int32,int32,int32,array(int64,ndim=1))')
  @staticmethod
  def issorted(*args):
    if False: pass
    elif mosek_fusion_Sort._match_issorted__3J_3IJJZ(*args): 
      return mosek_fusion_Sort._issorted__3J_3IJJZ(*args)
    elif mosek_fusion_Sort._match_alt_issorted__3J_3IJJZ(*args): 
      return mosek_fusion_Sort._issorted_alt__3J_3IJJZ(*args)
    elif mosek_fusion_Sort._match_issorted__3J_3JJJZ(*args): 
      return mosek_fusion_Sort._issorted__3J_3JJJZ(*args)
    elif mosek_fusion_Sort._match_alt_issorted__3J_3JJJZ(*args): 
      return mosek_fusion_Sort._issorted_alt__3J_3JJJZ(*args)
    elif mosek_fusion_Sort._match_issorted__3J_3I_3IJJZ(*args): 
      return mosek_fusion_Sort._issorted__3J_3I_3IJJZ(*args)
    elif mosek_fusion_Sort._match_alt_issorted__3J_3I_3IJJZ(*args): 
      return mosek_fusion_Sort._issorted_alt__3J_3I_3IJJZ(*args)
    elif mosek_fusion_Sort._match_issorted__3J_3J_3JJJZ(*args): 
      return mosek_fusion_Sort._issorted__3J_3J_3JJJZ(*args)
    elif mosek_fusion_Sort._match_alt_issorted__3J_3J_3JJJZ(*args): 
      return mosek_fusion_Sort._issorted_alt__3J_3J_3JJJZ(*args)
    else:
      raise ValueError('Invalid argument list issorted('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Sort.issorted(array(int64,ndim=1),array(int32,ndim=1),int64,int64,bool)\n\tmosek.fusion.Sort.issorted(array(int64,ndim=1),array(int64,ndim=1),int64,int64,bool)\n\tmosek.fusion.Sort.issorted(array(int64,ndim=1),array(int32,ndim=1),array(int32,ndim=1),int64,int64,bool)\n\tmosek.fusion.Sort.issorted(array(int64,ndim=1),array(int64,ndim=1),array(int64,ndim=1),int64,int64,bool)')
  def __repr__(self): return 'mosek.fusion.Sort'
  @staticmethod
  def _match_argTransposeSort__3J_3JIII_3J(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_match__3J__(_0) and __arg_match__3J__(_1) and __arg_match_I__(_2) and __arg_match_I__(_3) and __arg_match_I__(_4) and __arg_match__3J__(_5))
  @staticmethod
  def _match_alt_argTransposeSort__3J_3JIII_3J(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match_I__(_2) and __arg_alt_match_I__(_3) and __arg_alt_match_I__(_4) and __arg_alt_match__3J__(_5))
  @staticmethod
  def _argTransposeSort_alt__3J_3JIII_3J(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.int32(_t__2)
   _3=numpy.int32(_t__3)
   _4=numpy.int32(_t__4)
   _5=numpy.array(_t__5,dtype=numpy.dtype(numpy.int64))
   _1_res = mosek_fusion_Sort._argTransposeSort__3J_3JIII_3J(_0,_1,_2,_3,_4,_5)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__5[:] = _5
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argTransposeSort__3J_3JIII_3J(_0,_1,_2,_3,_4,_5):
   for _6 in range(0,((_2 * _4) + 1)):
    _1[_6] = 0
   for _7 in range(0,int((_5).shape[0])):
    _1[((((_5[_0[_7]] // (_3 * _4)) * _4) + (_5[_0[_7]] % _4)) + 1)] += 1
   for _8 in range(0,(_2 * _4)):
    _1[(_8 + 1)] = (_1[(_8 + 1)] + _1[_8])
   _9=numpy.array([_0[_10] for _10 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int64))
   for _11 in range(0,int((_5).shape[0])):
    _12=(((_5[_9[_11]] // (_3 * _4)) * _4) + (_5[_9[_11]] % _4))
    _0[_1[_12]] = _9[_11]
    _1[_12] += 1
  @staticmethod
  def _match_argsort__3J_3J(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3J__(_0) and __arg_match__3J__(_1))
  @staticmethod
  def _match_alt_argsort__3J_3J(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3J__(_1))
  @staticmethod
  def _argsort_alt__3J_3J(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _1_res = mosek_fusion_Sort._argsort__3J_3J(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argsort__3J_3J(_0,_1):
   mosek.fusion.Sort._argsort__3J_3JJJZ(_0,_1,0,int((_0).shape[0]),False)
  @staticmethod
  def _match_argsort__3J_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3J__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_argsort__3J_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _argsort_alt__3J_3I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Sort._argsort__3J_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argsort__3J_3I(_0,_1):
   mosek.fusion.Sort._argsort__3J_3IJJZ(_0,_1,0,int((_0).shape[0]),False)
  @staticmethod
  def _match_argsort__3J_3J_3J(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3J__(_0) and __arg_match__3J__(_1) and __arg_match__3J__(_2))
  @staticmethod
  def _match_alt_argsort__3J_3J_3J(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match__3J__(_2))
  @staticmethod
  def _argsort_alt__3J_3J_3J(_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int64))
   _1_res = mosek_fusion_Sort._argsort__3J_3J_3J(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argsort__3J_3J_3J(_0,_1,_2):
   mosek.fusion.Sort._argsort__3J_3J_3JJJZ(_0,_1,_2,0,int((_0).shape[0]),False)
  @staticmethod
  def _match_argsort__3J_3I_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3J__(_0) and __arg_match__3I__(_1) and __arg_match__3I__(_2))
  @staticmethod
  def _match_alt_argsort__3J_3I_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3I__(_2))
  @staticmethod
  def _argsort_alt__3J_3I_3I(_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Sort._argsort__3J_3I_3I(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argsort__3J_3I_3I(_0,_1,_2):
   mosek.fusion.Sort._argsort__3J_3I_3IJJZ(_0,_1,_2,0,int((_0).shape[0]),False)
  @staticmethod
  def _match_argsort__3J_3JJJ(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match__3J__(_0) and __arg_match__3J__(_1) and __arg_match_J__(_2) and __arg_match_J__(_3))
  @staticmethod
  def _match_alt_argsort__3J_3JJJ(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match_J__(_2) and __arg_alt_match_J__(_3))
  @staticmethod
  def _argsort_alt__3J_3JJJ(_t__0,_t__1,_t__2,_t__3):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.int64(_t__2)
   _3=numpy.int64(_t__3)
   _1_res = mosek_fusion_Sort._argsort__3J_3JJJ(_0,_1,_2,_3)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argsort__3J_3JJJ(_0,_1,_2,_3):
   mosek.fusion.Sort._argsort__3J_3JJJZ(_0,_1,_2,_3,False)
  @staticmethod
  def _match_argsort__3J_3IJJ(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match__3J__(_0) and __arg_match__3I__(_1) and __arg_match_J__(_2) and __arg_match_J__(_3))
  @staticmethod
  def _match_alt_argsort__3J_3IJJ(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match_J__(_2) and __arg_alt_match_J__(_3))
  @staticmethod
  def _argsort_alt__3J_3IJJ(_t__0,_t__1,_t__2,_t__3):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.int64(_t__2)
   _3=numpy.int64(_t__3)
   _1_res = mosek_fusion_Sort._argsort__3J_3IJJ(_0,_1,_2,_3)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argsort__3J_3IJJ(_0,_1,_2,_3):
   mosek.fusion.Sort._argsort__3J_3IJJZ(_0,_1,_2,_3,False)
  @staticmethod
  def _match_argsort__3J_3J_3JJJ(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_match__3J__(_0) and __arg_match__3J__(_1) and __arg_match__3J__(_2) and __arg_match_J__(_3) and __arg_match_J__(_4))
  @staticmethod
  def _match_alt_argsort__3J_3J_3JJJ(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match__3J__(_2) and __arg_alt_match_J__(_3) and __arg_alt_match_J__(_4))
  @staticmethod
  def _argsort_alt__3J_3J_3JJJ(_t__0,_t__1,_t__2,_t__3,_t__4):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int64))
   _3=numpy.int64(_t__3)
   _4=numpy.int64(_t__4)
   _1_res = mosek_fusion_Sort._argsort__3J_3J_3JJJ(_0,_1,_2,_3,_4)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argsort__3J_3J_3JJJ(_0,_1,_2,_3,_4):
   mosek.fusion.Sort._argsort__3J_3J_3JJJZ(_0,_1,_2,_3,_4,False)
  @staticmethod
  def _match_argsort__3J_3I_3IJJ(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_match__3J__(_0) and __arg_match__3I__(_1) and __arg_match__3I__(_2) and __arg_match_J__(_3) and __arg_match_J__(_4))
  @staticmethod
  def _match_alt_argsort__3J_3I_3IJJ(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3I__(_2) and __arg_alt_match_J__(_3) and __arg_alt_match_J__(_4))
  @staticmethod
  def _argsort_alt__3J_3I_3IJJ(_t__0,_t__1,_t__2,_t__3,_t__4):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.int64(_t__3)
   _4=numpy.int64(_t__4)
   _1_res = mosek_fusion_Sort._argsort__3J_3I_3IJJ(_0,_1,_2,_3,_4)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argsort__3J_3I_3IJJ(_0,_1,_2,_3,_4):
   mosek.fusion.Sort._argsort__3J_3I_3IJJZ(_0,_1,_2,_3,_4,False)
  @staticmethod
  def _match_argsort__3J_3JJJZ(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_match__3J__(_0) and __arg_match__3J__(_1) and __arg_match_J__(_2) and __arg_match_J__(_3) and __arg_match_Z__(_4))
  @staticmethod
  def _match_alt_argsort__3J_3JJJZ(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match_J__(_2) and __arg_alt_match_J__(_3) and __arg_alt_match_Z__(_4))
  @staticmethod
  def _argsort_alt__3J_3JJJZ(_t__0,_t__1,_t__2,_t__3,_t__4):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.int64(_t__2)
   _3=numpy.int64(_t__3)
   _4=_t__4
   _1_res = mosek_fusion_Sort._argsort__3J_3JJJZ(_0,_1,_2,_3,_4)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argsort__3J_3JJJZ(_0,_1,_2,_3,_4):
   if ((not _4) or ((_3 - _2) < 16)):
    mosek.fusion.Utils.Tools._argsort__3J_3JJJ(_0,_1,_2,_3)
   elif (not mosek.fusion.Sort._issorted__3J_3JJJZ(_0,_1,_2,_3,_4)): # bld/grindsted/final/default/src/fusion/Sort.mbi:160:16-56
    _5=numpy.zeros((4,), dtype=numpy.dtype(numpy.int64))
    _6=2
    mosek.fusion.Sort._getminmax__3J_3J_3JJJ_3J(_0,_1,None,_2,_3,_5)
    if ((_5[1] - _5[0]) < (_6 * (_3 - _2))):
     mosek.fusion.Sort._argbucketsort__3J_3JJJJJ(_0,_1,_2,_3,_5[0],_5[1])
    else:
     mosek.fusion.Utils.Tools._argsort__3J_3JJJ(_0,_1,_2,_3)
  @staticmethod
  def _match_argsort__3J_3IJJZ(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_match__3J__(_0) and __arg_match__3I__(_1) and __arg_match_J__(_2) and __arg_match_J__(_3) and __arg_match_Z__(_4))
  @staticmethod
  def _match_alt_argsort__3J_3IJJZ(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match_J__(_2) and __arg_alt_match_J__(_3) and __arg_alt_match_Z__(_4))
  @staticmethod
  def _argsort_alt__3J_3IJJZ(_t__0,_t__1,_t__2,_t__3,_t__4):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.int64(_t__2)
   _3=numpy.int64(_t__3)
   _4=_t__4
   _1_res = mosek_fusion_Sort._argsort__3J_3IJJZ(_0,_1,_2,_3,_4)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argsort__3J_3IJJZ(_0,_1,_2,_3,_4):
   if ((not _4) or ((_3 - _2) < 16)):
    mosek.fusion.Utils.Tools._argsort__3J_3IJJ(_0,_1,_2,_3)
   elif (not mosek.fusion.Sort._issorted__3J_3IJJZ(_0,_1,_2,_3,_4)): # bld/grindsted/final/default/src/fusion/Sort.mbi:141:16-56
    _5=numpy.zeros((4,), dtype=numpy.dtype(numpy.int32))
    _6=2
    mosek.fusion.Sort._getminmax__3J_3I_3IJJ_3I(_0,_1,None,_2,_3,_5)
    if ((_5[1] - _5[0]) < (_6 * (_3 - _2))):
     mosek.fusion.Sort._argbucketsort__3J_3IJJII(_0,_1,_2,_3,_5[0],_5[1])
    else:
     mosek.fusion.Utils.Tools._argsort__3J_3IJJ(_0,_1,_2,_3)
  @staticmethod
  def _match_argsort__3J_3J_3JJJZ(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_match__3J__(_0) and __arg_match__3J__(_1) and __arg_match__3J__(_2) and __arg_match_J__(_3) and __arg_match_J__(_4) and __arg_match_Z__(_5))
  @staticmethod
  def _match_alt_argsort__3J_3J_3JJJZ(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match__3J__(_2) and __arg_alt_match_J__(_3) and __arg_alt_match_J__(_4) and __arg_alt_match_Z__(_5))
  @staticmethod
  def _argsort_alt__3J_3J_3JJJZ(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int64))
   _3=numpy.int64(_t__3)
   _4=numpy.int64(_t__4)
   _5=_t__5
   _1_res = mosek_fusion_Sort._argsort__3J_3J_3JJJZ(_0,_1,_2,_3,_4,_5)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argsort__3J_3J_3JJJZ(_0,_1,_2,_3,_4,_5):
   if ((not _5) or ((_4 - _3) < 16)):
    mosek.fusion.Utils.Tools._argsort__3J_3J_3JJJ(_0,_1,_2,_3,_4)
   elif (not mosek.fusion.Sort._issorted__3J_3J_3JJJZ(_0,_1,_2,_3,_4,_5)): # bld/grindsted/final/default/src/fusion/Sort.mbi:120:16-62
    _6=numpy.zeros((4,), dtype=numpy.dtype(numpy.int64))
    _7=2
    mosek.fusion.Sort._getminmax__3J_3J_3JJJ_3J(_0,_1,_2,_3,_4,_6)
    if (((_6[1] - _6[0]) < (_7 * (_4 - _3))) and ((_6[3] - _6[2]) < (_7 * (_4 - _3)))):
     mosek.fusion.Sort._argbucketsort__3J_3JJJJJ(_0,_2,_3,_4,_6[2],_6[3])
     mosek.fusion.Sort._argbucketsort__3J_3JJJJJ(_0,_1,_3,_4,_6[0],_6[1])
    else:
     mosek.fusion.Utils.Tools._argsort__3J_3J_3JJJ(_0,_1,_2,_3,_4)
  @staticmethod
  def _match_argsort__3J_3I_3IJJZ(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_match__3J__(_0) and __arg_match__3I__(_1) and __arg_match__3I__(_2) and __arg_match_J__(_3) and __arg_match_J__(_4) and __arg_match_Z__(_5))
  @staticmethod
  def _match_alt_argsort__3J_3I_3IJJZ(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3I__(_2) and __arg_alt_match_J__(_3) and __arg_alt_match_J__(_4) and __arg_alt_match_Z__(_5))
  @staticmethod
  def _argsort_alt__3J_3I_3IJJZ(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.int64(_t__3)
   _4=numpy.int64(_t__4)
   _5=_t__5
   _1_res = mosek_fusion_Sort._argsort__3J_3I_3IJJZ(_0,_1,_2,_3,_4,_5)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argsort__3J_3I_3IJJZ(_0,_1,_2,_3,_4,_5):
   if ((not _5) or ((_4 - _3) < 16)):
    mosek.fusion.Utils.Tools._argsort__3J_3I_3IJJ(_0,_1,_2,_3,_4)
   elif (not mosek.fusion.Sort._issorted__3J_3I_3IJJZ(_0,_1,_2,_3,_4,_5)): # bld/grindsted/final/default/src/fusion/Sort.mbi:99:16-62
    _6=numpy.zeros((4,), dtype=numpy.dtype(numpy.int32))
    _7=2
    mosek.fusion.Sort._getminmax__3J_3I_3IJJ_3I(_0,_1,_2,_3,_4,_6)
    if (((_6[1] - _6[0]) < (_7 * (_4 - _3))) and ((_6[3] - _6[2]) < (_7 * (_4 - _3)))):
     mosek.fusion.Sort._argbucketsort__3J_3IJJII(_0,_2,_3,_4,_6[2],_6[3])
     mosek.fusion.Sort._argbucketsort__3J_3IJJII(_0,_1,_3,_4,_6[0],_6[1])
    else:
     mosek.fusion.Utils.Tools._argsort__3J_3I_3IJJ(_0,_1,_2,_3,_4)
  @staticmethod
  def _match_argbucketsort__3J_3JJJJJ(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_match__3J__(_0) and __arg_match__3J__(_1) and __arg_match_J__(_2) and __arg_match_J__(_3) and __arg_match_J__(_4) and __arg_match_J__(_5))
  @staticmethod
  def _match_alt_argbucketsort__3J_3JJJJJ(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match_J__(_2) and __arg_alt_match_J__(_3) and __arg_alt_match_J__(_4) and __arg_alt_match_J__(_5))
  @staticmethod
  def _argbucketsort_alt__3J_3JJJJJ(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.int64(_t__2)
   _3=numpy.int64(_t__3)
   _4=numpy.int64(_t__4)
   _5=numpy.int64(_t__5)
   _1_res = mosek_fusion_Sort._argbucketsort__3J_3JJJJJ(_0,_1,_2,_3,_4,_5)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argbucketsort__3J_3JJJJJ(_0,_1,_2,_3,_4,_5):
   mosek.fusion.Utils.Tools._bucketsort__3JJJ_3JJJ(_0,_2,_3,_1,_4,_5)
  @staticmethod
  def _match_argbucketsort__3J_3IJJII(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_match__3J__(_0) and __arg_match__3I__(_1) and __arg_match_J__(_2) and __arg_match_J__(_3) and __arg_match_I__(_4) and __arg_match_I__(_5))
  @staticmethod
  def _match_alt_argbucketsort__3J_3IJJII(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match_J__(_2) and __arg_alt_match_J__(_3) and __arg_alt_match_I__(_4) and __arg_alt_match_I__(_5))
  @staticmethod
  def _argbucketsort_alt__3J_3IJJII(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.int64(_t__2)
   _3=numpy.int64(_t__3)
   _4=numpy.int32(_t__4)
   _5=numpy.int32(_t__5)
   _1_res = mosek_fusion_Sort._argbucketsort__3J_3IJJII(_0,_1,_2,_3,_4,_5)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argbucketsort__3J_3IJJII(_0,_1,_2,_3,_4,_5):
   mosek.fusion.Utils.Tools._bucketsort__3JJJ_3III(_0,_2,_3,_1,_4,_5)
  @staticmethod
  def _match_getminmax__3J_3J_3JJJ_3J(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_match__3J__(_0) and __arg_match__3J__(_1) and __arg_match__3J__(_2) and __arg_match_J__(_3) and __arg_match_J__(_4) and __arg_match__3J__(_5))
  @staticmethod
  def _match_alt_getminmax__3J_3J_3JJJ_3J(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match__3J__(_2) and __arg_alt_match_J__(_3) and __arg_alt_match_J__(_4) and __arg_alt_match__3J__(_5))
  @staticmethod
  def _getminmax_alt__3J_3J_3JJJ_3J(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int64))
   _3=numpy.int64(_t__3)
   _4=numpy.int64(_t__4)
   _5=numpy.array(_t__5,dtype=numpy.dtype(numpy.int64))
   _1_res = mosek_fusion_Sort._getminmax__3J_3J_3JJJ_3J(_0,_1,_2,_3,_4,_5)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__5[:] = _5
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _getminmax__3J_3J_3JJJ_3J(_0,_1,_2,_3,_4,_5):
   _5[0] = _1[_0[_3]]
   _5[1] = _1[_0[_3]]
   for _6 in range((_3 + 1),_4):
    if (_5[0] > _1[_0[_6]]):
     _5[0] = _1[_0[_6]]
    if (_5[1] < _1[_0[_6]]):
     _5[1] = _1[_0[_6]]
   if (_2 is not None):
    _5[2] = _2[_0[_3]]
    _5[3] = _2[_0[_3]]
    for _7 in range((_3 + 1),_4):
     if (_5[2] > _2[_0[_7]]):
      _5[2] = _2[_0[_7]]
     if (_5[3] < _2[_0[_7]]):
      _5[3] = _2[_0[_7]]
  @staticmethod
  def _match_getminmax__3J_3I_3IJJ_3I(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_match__3J__(_0) and __arg_match__3I__(_1) and __arg_match__3I__(_2) and __arg_match_J__(_3) and __arg_match_J__(_4) and __arg_match__3I__(_5))
  @staticmethod
  def _match_alt_getminmax__3J_3I_3IJJ_3I(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3I__(_2) and __arg_alt_match_J__(_3) and __arg_alt_match_J__(_4) and __arg_alt_match__3I__(_5))
  @staticmethod
  def _getminmax_alt__3J_3I_3IJJ_3I(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.int64(_t__3)
   _4=numpy.int64(_t__4)
   _5=numpy.array(_t__5,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Sort._getminmax__3J_3I_3IJJ_3I(_0,_1,_2,_3,_4,_5)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__5[:] = _5
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _getminmax__3J_3I_3IJJ_3I(_0,_1,_2,_3,_4,_5):
   _5[0] = _1[_0[_3]]
   _5[1] = _1[_0[_3]]
   for _6 in range((_3 + 1),_4):
    if (_5[0] > _1[_0[_6]]):
     _5[0] = _1[_0[_6]]
    if (_5[1] < _1[_0[_6]]):
     _5[1] = _1[_0[_6]]
   if (_2 is not None):
    _5[2] = _2[_0[_3]]
    _5[3] = _2[_0[_3]]
    for _7 in range((_3 + 1),_4):
     if (_5[2] > _2[_0[_7]]):
      _5[2] = _2[_0[_7]]
     if (_5[3] < _2[_0[_7]]):
      _5[3] = _2[_0[_7]]
  @staticmethod
  def _match_issorted__3J_3JJJZ(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_match__3J__(_0) and __arg_match__3J__(_1) and __arg_match_J__(_2) and __arg_match_J__(_3) and __arg_match_Z__(_4))
  @staticmethod
  def _match_alt_issorted__3J_3JJJZ(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match_J__(_2) and __arg_alt_match_J__(_3) and __arg_alt_match_Z__(_4))
  @staticmethod
  def _issorted_alt__3J_3JJJZ(_t__0,_t__1,_t__2,_t__3,_t__4):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.int64(_t__2)
   _3=numpy.int64(_t__3)
   _4=_t__4
   _1_res = mosek_fusion_Sort._issorted__3J_3JJJZ(_0,_1,_2,_3,_4)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _issorted__3J_3JJJZ(_0,_1,_2,_3,_4):
   for _5 in range(_2,(_3 - 1)):
    if (_1[_0[_5]] > _1[_0[(_5 + 1)]]):
     return (False)
   return (True)
  @staticmethod
  def _match_issorted__3J_3IJJZ(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_match__3J__(_0) and __arg_match__3I__(_1) and __arg_match_J__(_2) and __arg_match_J__(_3) and __arg_match_Z__(_4))
  @staticmethod
  def _match_alt_issorted__3J_3IJJZ(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match_J__(_2) and __arg_alt_match_J__(_3) and __arg_alt_match_Z__(_4))
  @staticmethod
  def _issorted_alt__3J_3IJJZ(_t__0,_t__1,_t__2,_t__3,_t__4):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.int64(_t__2)
   _3=numpy.int64(_t__3)
   _4=_t__4
   _1_res = mosek_fusion_Sort._issorted__3J_3IJJZ(_0,_1,_2,_3,_4)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _issorted__3J_3IJJZ(_0,_1,_2,_3,_4):
   for _5 in range(_2,(_3 - 1)):
    if (_1[_0[_5]] > _1[_0[(_5 + 1)]]):
     return (False)
   return (True)
  @staticmethod
  def _match_issorted__3J_3J_3JJJZ(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_match__3J__(_0) and __arg_match__3J__(_1) and __arg_match__3J__(_2) and __arg_match_J__(_3) and __arg_match_J__(_4) and __arg_match_Z__(_5))
  @staticmethod
  def _match_alt_issorted__3J_3J_3JJJZ(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match__3J__(_2) and __arg_alt_match_J__(_3) and __arg_alt_match_J__(_4) and __arg_alt_match_Z__(_5))
  @staticmethod
  def _issorted_alt__3J_3J_3JJJZ(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int64))
   _3=numpy.int64(_t__3)
   _4=numpy.int64(_t__4)
   _5=_t__5
   _1_res = mosek_fusion_Sort._issorted__3J_3J_3JJJZ(_0,_1,_2,_3,_4,_5)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _issorted__3J_3J_3JJJZ(_0,_1,_2,_3,_4,_5):
   for _6 in range(_3,(_4 - 1)):
    if ((_1[_0[_6]] > _1[_0[(_6 + 1)]]) or ((_1[_0[(_6 + 1)]]==_1[_0[_6]]) and (_2[_0[_6]] > _2[_0[(_6 + 1)]]))):
     return (False)
   return (True)
  @staticmethod
  def _match_issorted__3J_3I_3IJJZ(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_match__3J__(_0) and __arg_match__3I__(_1) and __arg_match__3I__(_2) and __arg_match_J__(_3) and __arg_match_J__(_4) and __arg_match_Z__(_5))
  @staticmethod
  def _match_alt_issorted__3J_3I_3IJJZ(*args):
    if len(args) != 6: return False
    _0,_1,_2,_3,_4,_5, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3I__(_2) and __arg_alt_match_J__(_3) and __arg_alt_match_J__(_4) and __arg_alt_match_Z__(_5))
  @staticmethod
  def _issorted_alt__3J_3I_3IJJZ(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.int64(_t__3)
   _4=numpy.int64(_t__4)
   _5=_t__5
   _1_res = mosek_fusion_Sort._issorted__3J_3I_3IJJZ(_0,_1,_2,_3,_4,_5)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _issorted__3J_3I_3IJJZ(_0,_1,_2,_3,_4,_5):
   for _6 in range(_3,(_4 - 1)):
    if ((_1[_0[_6]] > _1[_0[(_6 + 1)]]) or ((_1[_0[_6]]==_1[_0[(_6 + 1)]]) and (_2[_0[_6]] > _2[_0[(_6 + 1)]]))):
     return (False)
   return (True)
 return Sort
mosek_fusion_Sort=__mk_mosek_fusion_Sort()
del __mk_mosek_fusion_Sort
def __mk_mosek_fusion_IndexCounter():
 class IndexCounter(object):
  __slots__ = ['_IndexCounter__start','_IndexCounter__dims','_IndexCounter__strides','_IndexCounter__st','_IndexCounter__ii','_IndexCounter__n']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor__3I(*args): 
      self._ctor_init__3I(*args)
    elif self.__match_alt_ctor__3I(*args):
      self._ctor_alt_init__3I(*args)
    elif self.__match_ctor_J_3I_3I(*args): 
      self._ctor_init_J_3I_3I(*args)
    elif self.__match_alt_ctor_J_3I_3I(*args):
      self._ctor_alt_init_J_3I_3I(*args)
    elif self.__match_ctor_J_3I_3J(*args): 
      self._ctor_init_J_3I_3J(*args)
    elif self.__match_alt_ctor_J_3I_3J(*args):
      self._ctor_alt_init_J_3I_3J(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.IndexCounter.ctor(array(int32,ndim=1))\n\tmosek.fusion.IndexCounter.ctor(int64,array(int32,ndim=1),array(int32,ndim=1))\n\tmosek.fusion.IndexCounter.ctor(int64,array(int32,ndim=1),array(int64,ndim=1))')
  def next(self,*args):
    if False: pass
    elif mosek_fusion_IndexCounter._match_next_(*args): 
      return self._next_(*args)
    elif mosek_fusion_IndexCounter._match_alt_next_(*args): 
      return self._next_alt_(*args)
    else:
      raise ValueError('Invalid argument list next('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.IndexCounter.next()')
  def reset(self,*args):
    if False: pass
    elif mosek_fusion_IndexCounter._match_reset_(*args): 
      return self._reset_(*args)
    elif mosek_fusion_IndexCounter._match_alt_reset_(*args): 
      return self._reset_alt_(*args)
    else:
      raise ValueError('Invalid argument list reset('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.IndexCounter.reset()')
  def get(self,*args):
    if False: pass
    elif mosek_fusion_IndexCounter._match_get_(*args): 
      return self._get_(*args)
    elif mosek_fusion_IndexCounter._match_alt_get_(*args): 
      return self._get_alt_(*args)
    else:
      raise ValueError('Invalid argument list get('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.IndexCounter.get()')
  def inc(self,*args):
    if False: pass
    elif mosek_fusion_IndexCounter._match_inc_(*args): 
      return self._inc_(*args)
    elif mosek_fusion_IndexCounter._match_alt_inc_(*args): 
      return self._inc_alt_(*args)
    else:
      raise ValueError('Invalid argument list inc('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.IndexCounter.inc()')
  def atEnd(self,*args):
    if False: pass
    elif mosek_fusion_IndexCounter._match_atEnd_(*args): 
      return self._atEnd_(*args)
    elif mosek_fusion_IndexCounter._match_alt_atEnd_(*args): 
      return self._atEnd_alt_(*args)
    else:
      raise ValueError('Invalid argument list atEnd('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.IndexCounter.atEnd()')
  def getIndex(self,*args):
    if False: pass
    elif mosek_fusion_IndexCounter._match_getIndex_(*args): 
      return self._getIndex_(*args)
    elif mosek_fusion_IndexCounter._match_alt_getIndex_(*args): 
      return self._getIndex_alt_(*args)
    else:
      raise ValueError('Invalid argument list getIndex('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.IndexCounter.getIndex()')
  def __repr__(self): return 'mosek.fusion.IndexCounter'
  @staticmethod
  def _ctor__3I(shape):
    o = IndexCounter.__new__(IndexCounter)
    o._ctor_init__3I(shape)
    return o
  @staticmethod
  def __match_ctor__3I(*args):
    if len(args) != 1: return False
    shape, = args
    return (__arg_match__3I__(shape))
  @staticmethod
  def __match_alt_ctor__3I(*args):
    if len(args) != 1: return False
    shape, = args
    return (__arg_alt_match__3I__(shape))
  def _ctor_alt_init__3I(self,shape):
    self._ctor_init__3I(numpy.array(shape,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init__3I(self,shape):
   self.__n = int((shape).shape[0])
   self.__ii = numpy.zeros((self.__n,), dtype=numpy.dtype(numpy.int32))
   self.__st = numpy.zeros((self.__n,), dtype=numpy.dtype(numpy.int64))
   self.__start = 0
   self.__strides = mosek.fusion.Set._strides__3I(shape)
   self.__dims = numpy.array([shape[_0] for _0 in range(0,int((shape).shape[0]))], dtype=numpy.dtype(numpy.int32))
  @staticmethod
  def _ctor_J_3I_3I(start_,dims_,shape):
    o = IndexCounter.__new__(IndexCounter)
    o._ctor_init_J_3I_3I(start_,dims_,shape)
    return o
  @staticmethod
  def __match_ctor_J_3I_3I(*args):
    if len(args) != 3: return False
    start_,dims_,shape, = args
    return (__arg_match_J__(start_) and __arg_match__3I__(dims_) and __arg_match__3I__(shape))
  @staticmethod
  def __match_alt_ctor_J_3I_3I(*args):
    if len(args) != 3: return False
    start_,dims_,shape, = args
    return (__arg_alt_match_J__(start_) and __arg_alt_match__3I__(dims_) and __arg_alt_match__3I__(shape))
  def _ctor_alt_init_J_3I_3I(self,start_,dims_,shape):
    self._ctor_init_J_3I_3I(numpy.int64(start_),numpy.array(dims_,dtype=numpy.dtype(numpy.int32)),numpy.array(shape,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_J_3I_3I(self,start_,dims_,shape):
   _0=int((shape).shape[0])
   self.__n = int((dims_).shape[0])
   self.__ii = numpy.zeros((self.__n,), dtype=numpy.dtype(numpy.int32))
   self.__st = numpy.zeros((self.__n,), dtype=numpy.dtype(numpy.int64))
   for _1 in range(0,self.__n):
    self.__st[_1] = start_
   self.__strides = mosek.fusion.Set._strides__3I(shape)
   self.__dims = dims_
   self.__start = start_
  @staticmethod
  def _ctor_J_3I_3J(start_,dims_,strides_):
    o = IndexCounter.__new__(IndexCounter)
    o._ctor_init_J_3I_3J(start_,dims_,strides_)
    return o
  @staticmethod
  def __match_ctor_J_3I_3J(*args):
    if len(args) != 3: return False
    start_,dims_,strides_, = args
    return (__arg_match_J__(start_) and __arg_match__3I__(dims_) and __arg_match__3J__(strides_))
  @staticmethod
  def __match_alt_ctor_J_3I_3J(*args):
    if len(args) != 3: return False
    start_,dims_,strides_, = args
    return (__arg_alt_match_J__(start_) and __arg_alt_match__3I__(dims_) and __arg_alt_match__3J__(strides_))
  def _ctor_alt_init_J_3I_3J(self,start_,dims_,strides_):
    self._ctor_init_J_3I_3J(numpy.int64(start_),numpy.array(dims_,dtype=numpy.dtype(numpy.int32)),numpy.array(strides_,dtype=numpy.dtype(numpy.int64)))
  def _ctor_init_J_3I_3J(self,start_,dims_,strides_):
   self.__n = int((dims_).shape[0])
   self.__ii = numpy.zeros((self.__n,), dtype=numpy.dtype(numpy.int32))
   self.__st = numpy.zeros((self.__n,), dtype=numpy.dtype(numpy.int64))
   for _0 in range(0,self.__n):
    self.__st[_0] = start_
   self.__strides = strides_
   self.__dims = dims_
   self.__start = start_
  @staticmethod
  def _match_atEnd_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_atEnd_(*args):
    if len(args) != 0: return False
    return True
  def _atEnd_alt_(self,):
    return self._atEnd_()
  def _atEnd_(self,):
   return ((self.__ii[(self.__n - 1)] >= self.__dims[(self.__n - 1)]))
  @staticmethod
  def _match_getIndex_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getIndex_(*args):
    if len(args) != 0: return False
    return True
  def _getIndex_alt_(self,):
    return self._getIndex_()
  def _getIndex_(self,):
   return (self.__ii)
  @staticmethod
  def _match_next_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_next_(*args):
    if len(args) != 0: return False
    return True
  def _next_alt_(self,):
    return self._next_()
  def _next_(self,):
   _0=self.get()
   self.inc()
   return numpy.int64(_0)
  @staticmethod
  def _match_get_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_get_(*args):
    if len(args) != 0: return False
    return True
  def _get_alt_(self,):
    return self._get_()
  def _get_(self,):
   return numpy.int64(self.__st[0])
  @staticmethod
  def _match_inc_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_inc_(*args):
    if len(args) != 0: return False
    return True
  def _inc_alt_(self,):
    return self._inc_()
  def _inc_(self,):
   self.__ii[0] += 1
   self.__st[0] = (self.__st[0] + self.__strides[(self.__n - 1)])
   _0 = 0
   while ((_0 < (self.__n - 1)) and (self.__ii[_0]==self.__dims[((self.__n - _0) - 1)])):
    self.__ii[_0] = 0
    self.__ii[(_0 + 1)] += 1
    self.__st[(_0 + 1)] = (self.__st[(_0 + 1)] + self.__strides[((self.__n - _0) - 2)])
    _0 += 1
   for _1 in range(0,_0):
    self.__st[_1] = self.__st[_0]
  @staticmethod
  def _match_reset_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_reset_(*args):
    if len(args) != 0: return False
    return True
  def _reset_alt_(self,):
    return self._reset_()
  def _reset_(self,):
   self.__st = numpy.zeros((self.__n,), dtype=numpy.dtype(numpy.int64))
   for _0 in range(0,self.__n):
    self.__st[_0] = self.__start
 return IndexCounter
mosek_fusion_IndexCounter=__mk_mosek_fusion_IndexCounter()
del __mk_mosek_fusion_IndexCounter
def __mk_mosek_fusion_CommonTools():
 class CommonTools(object):
  @staticmethod
  def transposeTriplets(*args):
    if False: pass
    elif mosek_fusion_CommonTools._match_transposeTriplets__3I_3I_3D_3_3I_3_3I_3_3DJII(*args): 
      return mosek_fusion_CommonTools._transposeTriplets__3I_3I_3D_3_3I_3_3I_3_3DJII(*args)
    elif mosek_fusion_CommonTools._match_alt_transposeTriplets__3I_3I_3D_3_3I_3_3I_3_3DJII(*args): 
      return mosek_fusion_CommonTools._transposeTriplets_alt__3I_3I_3D_3_3I_3_3I_3_3DJII(*args)
    elif mosek_fusion_CommonTools._match_transposeTriplets__3I_3I_3D_3_3J_3_3J_3_3DJII(*args): 
      return mosek_fusion_CommonTools._transposeTriplets__3I_3I_3D_3_3J_3_3J_3_3DJII(*args)
    elif mosek_fusion_CommonTools._match_alt_transposeTriplets__3I_3I_3D_3_3J_3_3J_3_3DJII(*args): 
      return mosek_fusion_CommonTools._transposeTriplets_alt__3I_3I_3D_3_3J_3_3J_3_3DJII(*args)
    else:
      raise ValueError('Invalid argument list transposeTriplets('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.CommonTools.transposeTriplets(array(int32,ndim=1),array(int32,ndim=1),array(double,ndim=1),array(array(int32,ndim=1),ndim=1),array(array(int32,ndim=1),ndim=1),array(array(double,ndim=1),ndim=1),int64,int32,int32)\n\tmosek.fusion.CommonTools.transposeTriplets(array(int32,ndim=1),array(int32,ndim=1),array(double,ndim=1),array(array(int64,ndim=1),ndim=1),array(array(int64,ndim=1),ndim=1),array(array(double,ndim=1),ndim=1),int64,int32,int32)')
  @staticmethod
  def binarySearchL(*args):
    if False: pass
    elif mosek_fusion_CommonTools._match_binarySearchL__3JJ(*args): 
      return mosek_fusion_CommonTools._binarySearchL__3JJ(*args)
    elif mosek_fusion_CommonTools._match_alt_binarySearchL__3JJ(*args): 
      return mosek_fusion_CommonTools._binarySearchL_alt__3JJ(*args)
    else:
      raise ValueError('Invalid argument list binarySearchL('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.CommonTools.binarySearchL(array(int64,ndim=1),int64)')
  @staticmethod
  def binarySearch(*args):
    if False: pass
    elif mosek_fusion_CommonTools._match_binarySearch__3JJ(*args): 
      return mosek_fusion_CommonTools._binarySearch__3JJ(*args)
    elif mosek_fusion_CommonTools._match_alt_binarySearch__3JJ(*args): 
      return mosek_fusion_CommonTools._binarySearch_alt__3JJ(*args)
    elif mosek_fusion_CommonTools._match_binarySearch__3II(*args): 
      return mosek_fusion_CommonTools._binarySearch__3II(*args)
    elif mosek_fusion_CommonTools._match_alt_binarySearch__3II(*args): 
      return mosek_fusion_CommonTools._binarySearch_alt__3II(*args)
    else:
      raise ValueError('Invalid argument list binarySearch('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.CommonTools.binarySearch(array(int64,ndim=1),int64)\n\tmosek.fusion.CommonTools.binarySearch(array(int32,ndim=1),int32)')
  @staticmethod
  def tripletSort(*args):
    if False: pass
    elif mosek_fusion_CommonTools._match_tripletSort__3I_3I_3D_3_3I_3_3I_3_3DJII(*args): 
      return mosek_fusion_CommonTools._tripletSort__3I_3I_3D_3_3I_3_3I_3_3DJII(*args)
    elif mosek_fusion_CommonTools._match_alt_tripletSort__3I_3I_3D_3_3I_3_3I_3_3DJII(*args): 
      return mosek_fusion_CommonTools._tripletSort_alt__3I_3I_3D_3_3I_3_3I_3_3DJII(*args)
    else:
      raise ValueError('Invalid argument list tripletSort('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.CommonTools.tripletSort(array(int32,ndim=1),array(int32,ndim=1),array(double,ndim=1),array(array(int32,ndim=1),ndim=1),array(array(int32,ndim=1),ndim=1),array(array(double,ndim=1),ndim=1),int64,int32,int32)')
  @staticmethod
  def resize(*args):
    if False: pass
    elif mosek_fusion_CommonTools._match_resize__3DI(*args): 
      return mosek_fusion_CommonTools._resize__3DI(*args)
    elif mosek_fusion_CommonTools._match_alt_resize__3DI(*args): 
      return mosek_fusion_CommonTools._resize_alt__3DI(*args)
    elif mosek_fusion_CommonTools._match_resize__3II(*args): 
      return mosek_fusion_CommonTools._resize__3II(*args)
    elif mosek_fusion_CommonTools._match_alt_resize__3II(*args): 
      return mosek_fusion_CommonTools._resize_alt__3II(*args)
    elif mosek_fusion_CommonTools._match_resize__3JI(*args): 
      return mosek_fusion_CommonTools._resize__3JI(*args)
    elif mosek_fusion_CommonTools._match_alt_resize__3JI(*args): 
      return mosek_fusion_CommonTools._resize_alt__3JI(*args)
    else:
      raise ValueError('Invalid argument list resize('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.CommonTools.resize(array(double,ndim=1),int32)\n\tmosek.fusion.CommonTools.resize(array(int32,ndim=1),int32)\n\tmosek.fusion.CommonTools.resize(array(int64,ndim=1),int32)')
  @staticmethod
  def ndIncr(*args):
    if False: pass
    elif mosek_fusion_CommonTools._match_ndIncr__3I_3I_3I(*args): 
      return mosek_fusion_CommonTools._ndIncr__3I_3I_3I(*args)
    elif mosek_fusion_CommonTools._match_alt_ndIncr__3I_3I_3I(*args): 
      return mosek_fusion_CommonTools._ndIncr_alt__3I_3I_3I(*args)
    else:
      raise ValueError('Invalid argument list ndIncr('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.CommonTools.ndIncr(array(int32,ndim=1),array(int32,ndim=1),array(int32,ndim=1))')
  @staticmethod
  def binarySearchR(*args):
    if False: pass
    elif mosek_fusion_CommonTools._match_binarySearchR__3JJ(*args): 
      return mosek_fusion_CommonTools._binarySearchR__3JJ(*args)
    elif mosek_fusion_CommonTools._match_alt_binarySearchR__3JJ(*args): 
      return mosek_fusion_CommonTools._binarySearchR_alt__3JJ(*args)
    else:
      raise ValueError('Invalid argument list binarySearchR('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.CommonTools.binarySearchR(array(int64,ndim=1),int64)')
  @staticmethod
  def argMSort(*args):
    if False: pass
    elif mosek_fusion_CommonTools._match_argMSort__3I_3I(*args): 
      return mosek_fusion_CommonTools._argMSort__3I_3I(*args)
    elif mosek_fusion_CommonTools._match_alt_argMSort__3I_3I(*args): 
      return mosek_fusion_CommonTools._argMSort_alt__3I_3I(*args)
    else:
      raise ValueError('Invalid argument list argMSort('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.CommonTools.argMSort(array(int32,ndim=1),array(int32,ndim=1))')
  @staticmethod
  def argQsort(*args):
    if False: pass
    elif mosek_fusion_CommonTools._match_argQsort__3J_3I_3IJJ(*args): 
      return mosek_fusion_CommonTools._argQsort__3J_3I_3IJJ(*args)
    elif mosek_fusion_CommonTools._match_alt_argQsort__3J_3I_3IJJ(*args): 
      return mosek_fusion_CommonTools._argQsort_alt__3J_3I_3IJJ(*args)
    elif mosek_fusion_CommonTools._match_argQsort__3J_3J_3JJJ(*args): 
      return mosek_fusion_CommonTools._argQsort__3J_3J_3JJJ(*args)
    elif mosek_fusion_CommonTools._match_alt_argQsort__3J_3J_3JJJ(*args): 
      return mosek_fusion_CommonTools._argQsort_alt__3J_3J_3JJJ(*args)
    else:
      raise ValueError('Invalid argument list argQsort('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.CommonTools.argQsort(array(int64,ndim=1),array(int32,ndim=1),array(int32,ndim=1),int64,int64)\n\tmosek.fusion.CommonTools.argQsort(array(int64,ndim=1),array(int64,ndim=1),array(int64,ndim=1),int64,int64)')
  def __repr__(self): return 'mosek.fusion.CommonTools'
  @staticmethod
  def _match_resize__3JI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3J__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_resize__3JI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _resize_alt__3JI(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.int32(_t__1)
   _1_res = mosek_fusion_CommonTools._resize__3JI(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _resize__3JI(_0,_1):
   if (_1==int((_0).shape[0])):
    return (_0)
   else:
    _2=numpy.zeros((_1,), dtype=numpy.dtype(numpy.int64))
    if (_1 > int((_0).shape[0])):
     mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(_0,0,_2,0,int((_0).shape[0]))
    else:
     mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(_0,0,_2,0,_1)
    return (_2)
  @staticmethod
  def _match_resize__3II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_resize__3II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _resize_alt__3II(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.int32(_t__1)
   _1_res = mosek_fusion_CommonTools._resize__3II(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _resize__3II(_0,_1):
   if (_1==int((_0).shape[0])):
    return (_0)
   else:
    _2=numpy.zeros((_1,), dtype=numpy.dtype(numpy.int32))
    if (_1 > int((_0).shape[0])):
     mosek.fusion.Utils.Tools._arraycopy__3II_3III(_0,0,_2,0,int((_0).shape[0]))
    else:
     mosek.fusion.Utils.Tools._arraycopy__3II_3III(_0,0,_2,0,_1)
    return (_2)
  @staticmethod
  def _match_resize__3DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_resize__3DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _resize_alt__3DI(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=numpy.int32(_t__1)
   _1_res = mosek_fusion_CommonTools._resize__3DI(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _resize__3DI(_0,_1):
   if (_1==int((_0).shape[0])):
    return (_0)
   else:
    _2=numpy.zeros((_1,), dtype=numpy.dtype(numpy.float64))
    if (_1 > int((_0).shape[0])):
     mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(_0,0,_2,0,int((_0).shape[0]))
    else:
     mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(_0,0,_2,0,_1)
    return (_2)
  @staticmethod
  def _match_binarySearch__3II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_binarySearch__3II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _binarySearch_alt__3II(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.int32(_t__1)
   _1_res = mosek_fusion_CommonTools._binarySearch__3II(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _binarySearch__3II(_0,_1):
   _2=0
   _3=int((_0).shape[0])
   if (_0[_2]==_1):
    return numpy.int32(_2)
   elif (_0[(_3 - 1)]==_1): # bld/grindsted/final/default/src/fusion/CommonUtil.mbi:394:16-38
    return numpy.int32((_3 - 1))
   while (_2 < (_3 - 1)):
    _4=((_3 - _2) // 2)
    if (_1 < _0[_4]):
     _2 = (_4 + 1)
    elif (_1 > _0[_4]): # bld/grindsted/final/default/src/fusion/CommonUtil.mbi:399:18-36
     _3 = _4
    else:
     return numpy.int32(_4)
   return numpy.int32((- 1))
  @staticmethod
  def _match_binarySearch__3JJ(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3J__(_0) and __arg_match_J__(_1))
  @staticmethod
  def _match_alt_binarySearch__3JJ(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match_J__(_1))
  @staticmethod
  def _binarySearch_alt__3JJ(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.int64(_t__1)
   _1_res = mosek_fusion_CommonTools._binarySearch__3JJ(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _binarySearch__3JJ(_0,_1):
   _2=mosek.fusion.CommonTools._binarySearchL__3JJ(_0,_1)
   if ((_2 < int((_0).shape[0])) and (_0[_2]==_1)):
    return numpy.int32(_2)
   else:
    return numpy.int32((- 1))
  @staticmethod
  def _match_binarySearchR__3JJ(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3J__(_0) and __arg_match_J__(_1))
  @staticmethod
  def _match_alt_binarySearchR__3JJ(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match_J__(_1))
  @staticmethod
  def _binarySearchR_alt__3JJ(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.int64(_t__1)
   _1_res = mosek_fusion_CommonTools._binarySearchR__3JJ(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _binarySearchR__3JJ(_0,_1):
   _2=0
   _3=int((_0).shape[0])
   if (_0[_2] > _1):
    return numpy.int32(_2)
   while (_2 < (_3 - 1)):
    _4=((_3 + _2) // 2)
    if (_1 >= _0[_4]):
     _2 = _4
    else:
     _3 = _4
   return numpy.int32(_3)
  @staticmethod
  def _match_binarySearchL__3JJ(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3J__(_0) and __arg_match_J__(_1))
  @staticmethod
  def _match_alt_binarySearchL__3JJ(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match_J__(_1))
  @staticmethod
  def _binarySearchL_alt__3JJ(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.int64(_t__1)
   _1_res = mosek_fusion_CommonTools._binarySearchL__3JJ(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _binarySearchL__3JJ(_0,_1):
   _2=0
   _3=int((_0).shape[0])
   if (_1 <= _0[_2]):
    return numpy.int32(_2)
   while (_2 < (_3 - 1)):
    _4=((_3 + _2) // 2)
    if (_0[_4] < _1):
     _2 = _4
    else:
     _3 = _4
   return numpy.int32(_3)
  @staticmethod
  def _match_ndIncr__3I_3I_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1) and __arg_match__3I__(_2))
  @staticmethod
  def _match_alt_ndIncr__3I_3I_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3I__(_2))
  @staticmethod
  def _ndIncr_alt__3I_3I_3I(_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_CommonTools._ndIncr__3I_3I_3I(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _ndIncr__3I_3I_3I(_0,_1,_2):
   _3=(int((_0).shape[0]) - 1)
   _0[_3] += 1
   while ((_3 > 0) and (_0[_3] >= _2[_3])):
    _0[_3] = _1[_3]
    _0[(_3 - 1)] += 1
  @staticmethod
  def _match_transposeTriplets__3I_3I_3D_3_3J_3_3J_3_3DJII(*args):
    if len(args) != 9: return False
    _0,_1,_2,_3,_4,_5,_6,_7,_8, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1) and __arg_match__3D__(_2) and __arg_match__3_3J__(_3) and __arg_match__3_3J__(_4) and __arg_match__3_3D__(_5) and __arg_match_J__(_6) and __arg_match_I__(_7) and __arg_match_I__(_8))
  @staticmethod
  def _match_alt_transposeTriplets__3I_3I_3D_3_3J_3_3J_3_3DJII(*args):
    if len(args) != 9: return False
    _0,_1,_2,_3,_4,_5,_6,_7,_8, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3D__(_2) and __arg_alt_match__3_3J__(_3) and __arg_alt_match__3_3J__(_4) and __arg_alt_match__3_3D__(_5) and __arg_alt_match_J__(_6) and __arg_alt_match_I__(_7) and __arg_alt_match_I__(_8))
  @staticmethod
  def _transposeTriplets_alt__3I_3I_3D_3_3J_3_3J_3_3DJII(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5,_t__6,_t__7,_t__8):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _3=_monty.makeJaggedArray(_t__3,(1,1),numpy.dtype(numpy.int64))
   _4=_monty.makeJaggedArray(_t__4,(1,1),numpy.dtype(numpy.int64))
   _5=_monty.makeJaggedArray(_t__5,(1,1),numpy.dtype(numpy.float64))
   _6=numpy.int64(_t__6)
   _7=numpy.int32(_t__7)
   _8=numpy.int32(_t__8)
   _1_res = mosek_fusion_CommonTools._transposeTriplets__3I_3I_3D_3_3J_3_3J_3_3DJII(_0,_1,_2,_3,_4,_5,_6,_7,_8)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__5[:] = _5
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _transposeTriplets__3I_3I_3D_3_3J_3_3J_3_3DJII(_0,_1,_2,_3,_4,_5,_6,_7,_8):
   _9=numpy.zeros(((_7 + 2),), dtype=numpy.dtype(numpy.int64))
   _10=numpy.zeros(((_8 + 2),), dtype=numpy.dtype(numpy.int64))
   _11=0
   while (_11 < _6):
    _10[(_1[_11] + 2)] = (_10[(_1[_11] + 2)] + 1)
    _9[(_0[_11] + 2)] = (_9[(_0[_11] + 2)] + 1)
    _11 += 1
   _12=1
   while (_12 < _7):
    _9[(_12 + 1)] = (_9[(_12 + 1)] + _9[_12])
    _12 += 1
   _13=1
   while (_13 < _8):
    _10[(_13 + 1)] = (_10[(_13 + 1)] + _10[_13])
    _13 += 1
   _14=numpy.zeros((_6,), dtype=numpy.dtype(numpy.int64))
   _15=numpy.zeros((_6,), dtype=numpy.dtype(numpy.int64))
   _16=numpy.zeros((_6,), dtype=numpy.dtype(numpy.float64))
   for _17 in range(0,_7):
    _18=_9[_17]
    while (_18 < _9[(_17 + 1)]):
     _19=_1[_18]
     _20=_10[_19]
     _14[_20] = _17
     _15[_20] = _19
     _16[_20] = _2[_18]
     _10[_19] = (_20 + 1)
     _18 += 1
   _3[0] = _15
   _4[0] = _14
   _5[0] = _16
  @staticmethod
  def _match_transposeTriplets__3I_3I_3D_3_3I_3_3I_3_3DJII(*args):
    if len(args) != 9: return False
    _0,_1,_2,_3,_4,_5,_6,_7,_8, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1) and __arg_match__3D__(_2) and __arg_match__3_3I__(_3) and __arg_match__3_3I__(_4) and __arg_match__3_3D__(_5) and __arg_match_J__(_6) and __arg_match_I__(_7) and __arg_match_I__(_8))
  @staticmethod
  def _match_alt_transposeTriplets__3I_3I_3D_3_3I_3_3I_3_3DJII(*args):
    if len(args) != 9: return False
    _0,_1,_2,_3,_4,_5,_6,_7,_8, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3D__(_2) and __arg_alt_match__3_3I__(_3) and __arg_alt_match__3_3I__(_4) and __arg_alt_match__3_3D__(_5) and __arg_alt_match_J__(_6) and __arg_alt_match_I__(_7) and __arg_alt_match_I__(_8))
  @staticmethod
  def _transposeTriplets_alt__3I_3I_3D_3_3I_3_3I_3_3DJII(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5,_t__6,_t__7,_t__8):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _3=_monty.makeJaggedArray(_t__3,(1,1),numpy.dtype(numpy.int32))
   _4=_monty.makeJaggedArray(_t__4,(1,1),numpy.dtype(numpy.int32))
   _5=_monty.makeJaggedArray(_t__5,(1,1),numpy.dtype(numpy.float64))
   _6=numpy.int64(_t__6)
   _7=numpy.int32(_t__7)
   _8=numpy.int32(_t__8)
   _1_res = mosek_fusion_CommonTools._transposeTriplets__3I_3I_3D_3_3I_3_3I_3_3DJII(_0,_1,_2,_3,_4,_5,_6,_7,_8)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__5[:] = _5
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _transposeTriplets__3I_3I_3D_3_3I_3_3I_3_3DJII(_0,_1,_2,_3,_4,_5,_6,_7,_8):
   _9=numpy.zeros(((_7 + 2),), dtype=numpy.dtype(numpy.int64))
   _10=numpy.zeros(((_8 + 2),), dtype=numpy.dtype(numpy.int64))
   _11=0
   while (_11 < _6):
    _10[(_1[_11] + 2)] = (_10[(_1[_11] + 2)] + 1)
    _9[(_0[_11] + 2)] = (_9[(_0[_11] + 2)] + 1)
    _11 += 1
   _12=1
   while (_12 < _7):
    _9[(_12 + 1)] = (_9[(_12 + 1)] + _9[_12])
    _12 += 1
   _13=1
   while (_13 < _8):
    _10[(_13 + 1)] = (_10[(_13 + 1)] + _10[_13])
    _13 += 1
   _14=numpy.zeros((_6,), dtype=numpy.dtype(numpy.int32))
   _15=numpy.zeros((_6,), dtype=numpy.dtype(numpy.int32))
   _16=numpy.zeros((_6,), dtype=numpy.dtype(numpy.float64))
   _17=0
   while (_17 < _7):
    for _18 in range(_9[_17],_9[(_17 + 1)]):
     _19=_1[_18]
     _20=_10[_19]
     _14[_20] = _17
     _15[_20] = _19
     _16[_20] = _2[_18]
     _10[_19] = (_20 + 1)
    _17 += 1
   _3[0] = _15
   _4[0] = _14
   _5[0] = _16
  @staticmethod
  def _match_tripletSort__3I_3I_3D_3_3I_3_3I_3_3DJII(*args):
    if len(args) != 9: return False
    _0,_1,_2,_3,_4,_5,_6,_7,_8, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1) and __arg_match__3D__(_2) and __arg_match__3_3I__(_3) and __arg_match__3_3I__(_4) and __arg_match__3_3D__(_5) and __arg_match_J__(_6) and __arg_match_I__(_7) and __arg_match_I__(_8))
  @staticmethod
  def _match_alt_tripletSort__3I_3I_3D_3_3I_3_3I_3_3DJII(*args):
    if len(args) != 9: return False
    _0,_1,_2,_3,_4,_5,_6,_7,_8, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3D__(_2) and __arg_alt_match__3_3I__(_3) and __arg_alt_match__3_3I__(_4) and __arg_alt_match__3_3D__(_5) and __arg_alt_match_J__(_6) and __arg_alt_match_I__(_7) and __arg_alt_match_I__(_8))
  @staticmethod
  def _tripletSort_alt__3I_3I_3D_3_3I_3_3I_3_3DJII(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5,_t__6,_t__7,_t__8):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _3=_monty.makeJaggedArray(_t__3,(1,1),numpy.dtype(numpy.int32))
   _4=_monty.makeJaggedArray(_t__4,(1,1),numpy.dtype(numpy.int32))
   _5=_monty.makeJaggedArray(_t__5,(1,1),numpy.dtype(numpy.float64))
   _6=numpy.int64(_t__6)
   _7=numpy.int32(_t__7)
   _8=numpy.int32(_t__8)
   _1_res = mosek_fusion_CommonTools._tripletSort__3I_3I_3D_3_3I_3_3I_3_3DJII(_0,_1,_2,_3,_4,_5,_6,_7,_8)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__5[:] = _5
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _tripletSort__3I_3I_3D_3_3I_3_3I_3_3DJII(_0,_1,_2,_3,_4,_5,_6,_7,_8):
   _9=numpy.zeros((_6,), dtype=numpy.dtype(numpy.int32))
   _10=numpy.zeros(((_8 + 2),), dtype=numpy.dtype(numpy.int64))
   for _11 in range(0,_6):
    _10[(_1[_11] + 2)] = (_10[(_1[_11] + 2)] + 1)
   for _12 in range(1,_8):
    _10[(_12 + 1)] = (_10[(_12 + 1)] + _10[_12])
   for _13 in range(0,numpy.int32(_6)):
    _14=_1[_13]
    _9[_10[(_14 + 1)]] = _13
    _10[(_14 + 1)] = (_10[(_14 + 1)] + 1)
   _15=numpy.zeros(((_7 + 2),), dtype=numpy.dtype(numpy.int64))
   _16=numpy.zeros((_6,), dtype=numpy.dtype(numpy.int32))
   _17=0
   while (_17 < _6):
    _15[(_0[_17] + 2)] = (_15[(_0[_17] + 2)] + 1)
    _17 += 1
   _18=1
   while (_18 < _7):
    _15[(_18 + 1)] = (_15[(_18 + 1)] + _15[_18])
    _18 += 1
   _19=0
   while (_19 < _8):
    _20=_10[_19]
    while (_20 < _10[(_19 + 1)]):
     _21=_0[_9[_20]]
     _16[_15[(_21 + 1)]] = _9[_20]
     _15[(_21 + 1)] = (_15[(_21 + 1)] + 1)
     _20 += 1
    _19 += 1
   _22=1
   _23=_0[_16[0]]
   _24=_1[_16[0]]
   _25=1
   while (_25 < _6):
    _26=_16[_25]
    if ((_23!=_0[_26]) or (_24!=_1[_26])):
     _23 = _0[_26]
     _24 = _1[_26]
     _22 += 1
    _25 += 1
   _27=numpy.zeros((_22,), dtype=numpy.dtype(numpy.int32))
   _28=numpy.zeros((_22,), dtype=numpy.dtype(numpy.int32))
   _29=numpy.zeros((_22,), dtype=numpy.dtype(numpy.float64))
   _30=_16[0]
   _27[0] = _0[_30]
   _28[0] = _1[_30]
   _29[0] = _2[_30]
   _31=1
   for _32 in range(1,_6):
    _33=_16[_32]
    if ((_27[(_31 - 1)]==_0[_33]) and (_28[(_31 - 1)]==_1[_33])):
     _29[(_31 - 1)] = (_29[(_31 - 1)] + _2[_33])
    else:
     _27[_31] = _0[_33]
     _28[_31] = _1[_33]
     _29[_31] = _2[_33]
     _31 += 1
   _3[0] = _27
   _4[0] = _28
   _5[0] = _29
  @staticmethod
  def _match_argMSort__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_argMSort__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _argMSort_alt__3I_3I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_CommonTools._argMSort__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argMSort__3I_3I(_0,_1):
   _2=numpy.zeros((int((_0).shape[0]),), dtype=numpy.dtype(numpy.int32))
   _3=False
   _4=1
   while (_4 < int((_0).shape[0])):
    _3 = (not _3)
    for _5 in range(0,int((_0).shape[0]),(_4 * 2)):
     if _3:
      mosek.fusion.CommonTools.__mergeInto__3I_3I_3IIII(_0,_2,_1,_5,(_5 + _4),(_5 + (2 * _4)))
     else:
      mosek.fusion.CommonTools.__mergeInto__3I_3I_3IIII(_2,_0,_1,_5,(_5 + _4),(_5 + (2 * _4)))
    _4 *= 2
   if _3:
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(_2,0,_0,0,int((_0).shape[0]))
  @staticmethod
  def __mergeInto_alt__3I_3I_3IIII(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.int32(_t__3)
   _4=numpy.int32(_t__4)
   _5=numpy.int32(_t__5)
   _1_res = mosek_fusion_CommonTools.__mergeInto__3I_3I_3IIII(_0,_1,_2,_3,_4,_5)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __mergeInto__3I_3I_3IIII(_0,_1,_2,_3,_4,_5):
   _6=(int((_0).shape[0]) if ((_5 > int((_0).shape[0])) ) else _5)
   _7=(_6 if ((_4 > _6) ) else _4)
   if (_7==_6):
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(_0,_3,_1,_3,(_7 - _3))
   else:
    _8=_3
    _9=_7
    _10 = _3
    while ((_8 < _7) and (_9 < _6)):
     if (_2[_0[_8]] < _2[_0[_9]]):
      _1[_10] = _0[_8]
      _8 += 1
     else:
      _1[_10] = _0[_9]
      _9 += 1
     _10 += 1
    while (_8 < _7):
     _1[_10] = _0[_8]
     _8 += 1
     _10 += 1
    while (_9 < _6):
     _1[_10] = _0[_9]
     _9 += 1
     _10 += 1
  @staticmethod
  def _match_argQsort__3J_3J_3JJJ(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_match__3J__(_0) and __arg_match__3J__(_1) and __arg_match__3J__(_2) and __arg_match_J__(_3) and __arg_match_J__(_4))
  @staticmethod
  def _match_alt_argQsort__3J_3J_3JJJ(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match__3J__(_2) and __arg_alt_match_J__(_3) and __arg_alt_match_J__(_4))
  @staticmethod
  def _argQsort_alt__3J_3J_3JJJ(_t__0,_t__1,_t__2,_t__3,_t__4):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int64))
   _3=numpy.int64(_t__3)
   _4=numpy.int64(_t__4)
   _1_res = mosek_fusion_CommonTools._argQsort__3J_3J_3JJJ(_0,_1,_2,_3,_4)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argQsort__3J_3J_3JJJ(_0,_1,_2,_3,_4):
   if (_2 is None):
    mosek.fusion.Utils.Tools._argsort__3J_3JJJ(_0,_1,_3,_4)
   else:
    mosek.fusion.Utils.Tools._argsort__3J_3J_3JJJ(_0,_1,_2,_3,_4)
  @staticmethod
  def _match_argQsort__3J_3I_3IJJ(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_match__3J__(_0) and __arg_match__3I__(_1) and __arg_match__3I__(_2) and __arg_match_J__(_3) and __arg_match_J__(_4))
  @staticmethod
  def _match_alt_argQsort__3J_3I_3IJJ(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3I__(_2) and __arg_alt_match_J__(_3) and __arg_alt_match_J__(_4))
  @staticmethod
  def _argQsort_alt__3J_3I_3IJJ(_t__0,_t__1,_t__2,_t__3,_t__4):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.int64(_t__3)
   _4=numpy.int64(_t__4)
   _1_res = mosek_fusion_CommonTools._argQsort__3J_3I_3IJJ(_0,_1,_2,_3,_4)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _argQsort__3J_3I_3IJJ(_0,_1,_2,_3,_4):
   if (_2 is None):
    mosek.fusion.Utils.Tools._argsort__3J_3IJJ(_0,_1,_3,_4)
   else:
    mosek.fusion.Utils.Tools._argsort__3J_3I_3IJJ(_0,_1,_2,_3,_4)
 return CommonTools
mosek_fusion_CommonTools=__mk_mosek_fusion_CommonTools()
del __mk_mosek_fusion_CommonTools
def __mk_mosek_fusion_SolutionStruct():
 class SolutionStruct(object):
  __slots__ = ['accy','accx','accptr','yx','sux','slx','bars','barx','y','suc','slc','xx','xc','dobj','pobj','probstatus','dstatus','pstatus','sol_numbarvar','sol_numaccelm','sol_numacc','sol_numvar','sol_numcon']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4SolutionStruct_2(*args): 
      self._ctor_init_Lmosek_4fusion_4SolutionStruct_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4SolutionStruct_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4SolutionStruct_2(*args)
    elif self.__match_ctor_IIIII(*args): 
      self._ctor_init_IIIII(*args)
    elif self.__match_alt_ctor_IIIII(*args):
      self._ctor_alt_init_IIIII(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.SolutionStruct.ctor(mosek.fusion.SolutionStruct)\n\tmosek.fusion.SolutionStruct.ctor(int32,int32,int32,int32,int32)')
  def isDualAcceptable(self,*args):
    if False: pass
    elif mosek_fusion_SolutionStruct._match_isDualAcceptable_Emosek_4fusion_4AccSolutionStatus_2(*args): 
      return self._isDualAcceptable_Emosek_4fusion_4AccSolutionStatus_2(*args)
    elif mosek_fusion_SolutionStruct._match_alt_isDualAcceptable_Emosek_4fusion_4AccSolutionStatus_2(*args): 
      return self._isDualAcceptable_alt_Emosek_4fusion_4AccSolutionStatus_2(*args)
    else:
      raise ValueError('Invalid argument list isDualAcceptable('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SolutionStruct.isDualAcceptable(mosek.fusion.AccSolutionStatus)')
  def resize(self,*args):
    if False: pass
    elif mosek_fusion_SolutionStruct._match_resize_IIIII(*args): 
      return self._resize_IIIII(*args)
    elif mosek_fusion_SolutionStruct._match_alt_resize_IIIII(*args): 
      return self._resize_alt_IIIII(*args)
    else:
      raise ValueError('Invalid argument list resize('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SolutionStruct.resize(int32,int32,int32,int32,int32)')
  def isPrimalAcceptable(self,*args):
    if False: pass
    elif mosek_fusion_SolutionStruct._match_isPrimalAcceptable_Emosek_4fusion_4AccSolutionStatus_2(*args): 
      return self._isPrimalAcceptable_Emosek_4fusion_4AccSolutionStatus_2(*args)
    elif mosek_fusion_SolutionStruct._match_alt_isPrimalAcceptable_Emosek_4fusion_4AccSolutionStatus_2(*args): 
      return self._isPrimalAcceptable_alt_Emosek_4fusion_4AccSolutionStatus_2(*args)
    else:
      raise ValueError('Invalid argument list isPrimalAcceptable('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SolutionStruct.isPrimalAcceptable(mosek.fusion.AccSolutionStatus)')
  def clone(self,*args):
    if False: pass
    elif mosek_fusion_SolutionStruct._match_clone_(*args): 
      return self._clone_(*args)
    elif mosek_fusion_SolutionStruct._match_alt_clone_(*args): 
      return self._clone_alt_(*args)
    else:
      raise ValueError('Invalid argument list clone('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SolutionStruct.clone()')
  def __repr__(self): return 'mosek.fusion.SolutionStruct'
  @staticmethod
  def _ctor_IIIII(numvar,numcon,numbarvar,numacc,numaccelm):
    o = SolutionStruct.__new__(SolutionStruct)
    o._ctor_init_IIIII(numvar,numcon,numbarvar,numacc,numaccelm)
    return o
  @staticmethod
  def __match_ctor_IIIII(*args):
    if len(args) != 5: return False
    numvar,numcon,numbarvar,numacc,numaccelm, = args
    return (__arg_match_I__(numvar) and __arg_match_I__(numcon) and __arg_match_I__(numbarvar) and __arg_match_I__(numacc) and __arg_match_I__(numaccelm))
  @staticmethod
  def __match_alt_ctor_IIIII(*args):
    if len(args) != 5: return False
    numvar,numcon,numbarvar,numacc,numaccelm, = args
    return (__arg_alt_match_I__(numvar) and __arg_alt_match_I__(numcon) and __arg_alt_match_I__(numbarvar) and __arg_alt_match_I__(numacc) and __arg_alt_match_I__(numaccelm))
  def _ctor_alt_init_IIIII(self,numvar,numcon,numbarvar,numacc,numaccelm):
    self._ctor_init_IIIII(numpy.int32(numvar),numpy.int32(numcon),numpy.int32(numbarvar),numpy.int32(numacc),numpy.int32(numaccelm))
  def _ctor_init_IIIII(self,numvar,numcon,numbarvar,numacc,numaccelm):
   self.pobj = 0.0
   self.dobj = 0.0
   self.pstatus = mosek.fusion.SolutionStatus.Unknown
   self.dstatus = mosek.fusion.SolutionStatus.Unknown
   self.probstatus = mosek.fusion.ProblemStatus.Unknown
   self.sol_numvar = numvar
   self.sol_numcon = numcon
   self.sol_numbarvar = numbarvar
   self.sol_numacc = numacc
   self.sol_numaccelm = numaccelm
   self.slx = None
   self.sux = None
   self.xx = None
   self.yx = None
   self.slc = None
   self.suc = None
   self.y = None
   self.xc = None
   self.barx = None
   self.bars = None
   self.accx = None
   self.accy = None
   self.accptr = None
   if (numvar > 0):
    self.slx = numpy.zeros((numvar,), dtype=numpy.dtype(numpy.float64))
    self.sux = numpy.zeros((numvar,), dtype=numpy.dtype(numpy.float64))
    self.xx = numpy.zeros((numvar,), dtype=numpy.dtype(numpy.float64))
    self.yx = numpy.zeros((numvar,), dtype=numpy.dtype(numpy.float64))
   if (numbarvar > 0):
    self.barx = numpy.zeros((numbarvar,), dtype=numpy.dtype(numpy.float64))
    self.bars = numpy.zeros((numbarvar,), dtype=numpy.dtype(numpy.float64))
   if (numcon > 0):
    self.slc = numpy.zeros((numcon,), dtype=numpy.dtype(numpy.float64))
    self.suc = numpy.zeros((numcon,), dtype=numpy.dtype(numpy.float64))
    self.y = numpy.zeros((numcon,), dtype=numpy.dtype(numpy.float64))
    self.xc = numpy.zeros((numcon,), dtype=numpy.dtype(numpy.float64))
   if (numacc > 0):
    self.accx = numpy.zeros((numaccelm,), dtype=numpy.dtype(numpy.float64))
    self.accy = numpy.zeros((numaccelm,), dtype=numpy.dtype(numpy.float64))
    self.accptr = numpy.zeros(((numacc + 1),), dtype=numpy.dtype(numpy.int32))
  @staticmethod
  def _ctor_Lmosek_4fusion_4SolutionStruct_2(that):
    o = SolutionStruct.__new__(SolutionStruct)
    o._ctor_init_Lmosek_4fusion_4SolutionStruct_2(that)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4SolutionStruct_2(*args):
    if len(args) != 1: return False
    that, = args
    return (__arg_match_Lmosek_4fusion_4SolutionStruct_2__(that))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4SolutionStruct_2(*args):
    if len(args) != 1: return False
    that, = args
    return (__arg_alt_match_Lmosek_4fusion_4SolutionStruct_2__(that))
  def _ctor_alt_init_Lmosek_4fusion_4SolutionStruct_2(self,that):
    self._ctor_init_Lmosek_4fusion_4SolutionStruct_2(that)
  def _ctor_init_Lmosek_4fusion_4SolutionStruct_2(self,that):
   self.sol_numcon = (that.sol_numcon)
   self.sol_numvar = (that.sol_numvar)
   self.sol_numbarvar = (that.sol_numbarvar)
   self.sol_numacc = (that.sol_numacc)
   self.sol_numaccelm = (that.sol_numaccelm)
   self.pstatus = (that.pstatus)
   self.dstatus = (that.dstatus)
   self.probstatus = (that.probstatus)
   self.pobj = (that.pobj)
   self.dobj = (that.dobj)
   self.xc = (mosek.fusion.Utils.Tools._arraycopy__3D((that.xc)) if (((that.xc) is not None) ) else None)
   self.xx = (mosek.fusion.Utils.Tools._arraycopy__3D((that.xx)) if (((that.xx) is not None) ) else None)
   self.yx = (mosek.fusion.Utils.Tools._arraycopy__3D((that.yx)) if (((that.yx) is not None) ) else None)
   self.slc = (mosek.fusion.Utils.Tools._arraycopy__3D((that.slc)) if (((that.slc) is not None) ) else None)
   self.suc = (mosek.fusion.Utils.Tools._arraycopy__3D((that.suc)) if (((that.suc) is not None) ) else None)
   self.y = (mosek.fusion.Utils.Tools._arraycopy__3D((that.y)) if (((that.y) is not None) ) else None)
   self.barx = (mosek.fusion.Utils.Tools._arraycopy__3D((that.barx)) if (((that.barx) is not None) ) else None)
   self.bars = (mosek.fusion.Utils.Tools._arraycopy__3D((that.bars)) if (((that.bars) is not None) ) else None)
   self.slx = (mosek.fusion.Utils.Tools._arraycopy__3D((that.slx)) if (((that.slx) is not None) ) else None)
   self.sux = (mosek.fusion.Utils.Tools._arraycopy__3D((that.sux)) if (((that.sux) is not None) ) else None)
   self.accptr = (mosek.fusion.Utils.Tools._arraycopy__3I((that.accptr)) if (((that.accptr) is not None) ) else None)
   self.accx = (mosek.fusion.Utils.Tools._arraycopy__3D((that.accx)) if (((that.accx) is not None) ) else None)
   self.accy = (mosek.fusion.Utils.Tools._arraycopy__3D((that.accy)) if (((that.accy) is not None) ) else None)
  @staticmethod
  def _match_clone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_clone_(*args):
    if len(args) != 0: return False
    return True
  def _clone_alt_(self,):
    return self._clone_()
  def _clone_(self,):
   return (mosek_fusion_SolutionStruct._ctor_Lmosek_4fusion_4SolutionStruct_2(self))
  @staticmethod
  def _match_resize_IIIII(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2) and __arg_match_I__(_3) and __arg_match_I__(_4))
  @staticmethod
  def _match_alt_resize_IIIII(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2) and __arg_alt_match_I__(_3) and __arg_alt_match_I__(_4))
  def _resize_alt_IIIII(self,_t__0,_t__1,_t__2,_t__3,_t__4):
    return self._resize_IIIII(numpy.int32(__0),numpy.int32(__1),numpy.int32(__2),numpy.int32(__3),numpy.int32(__4))
  def _resize_IIIII(self,_0,_1,_2,_3,_4):
   if (_3 <= 0):
    self.sol_numacc = 0
   elif (_3 <= (int((self.accptr).shape[0]) - 1)): # bld/grindsted/final/default/src/fusion/Model.mbi:5546:16-39
    self.sol_numacc = _3
   else:
    _5=((int((self.accptr).shape[0]) - 1) * 2)
    if (_5 < _3):
     _5 = _3
    _6=numpy.zeros(((_5 + 1),), dtype=numpy.dtype(numpy.int32))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.accptr,0,_6,0,(_3 + 1))
    self.accptr = _6
    self.sol_numacc = _3
   if (_4 <= 0):
    self.sol_numaccelm = 0
   elif (_4 > int((self.accx).shape[0])): # bld/grindsted/final/default/src/fusion/Model.mbi:5560:16-37
    self.sol_numaccelm = _4
   else:
    _7=(int((self.accx).shape[0]) * 2)
    if (_7 < _4):
     _7 = _4
    _8=numpy.zeros((_7,), dtype=numpy.dtype(numpy.float64))
    _9=numpy.zeros((_7,), dtype=numpy.dtype(numpy.float64))
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.accx,0,_8,0,_4)
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.accy,0,_9,0,_4)
    self.accx = _8
    self.accy = _9
    self.sol_numaccelm = _4
   if (_2 < 0):
    pass
   elif (_2 <= self.sol_numbarvar): # bld/grindsted/final/default/src/fusion/Model.mbi:5577:18-44
    self.sol_numbarvar = _2
   elif (_2 <= int((self.barx).shape[0])): # bld/grindsted/final/default/src/fusion/Model.mbi:5580:18-40
    pass
   else:
    if ((self.sol_numbarvar * 2) > (_2 + 100)):
     _10 = (self.sol_numbarvar * 2)
    else:
     _10 = (_2 + 100)
    self.barx = mosek.fusion.CommonTools._resize__3DI(self.barx,_10)
    self.bars = mosek.fusion.CommonTools._resize__3DI(self.bars,_10)
    self.sol_numbarvar = _10
   if (_0 < 0):
    pass
   elif (_0 <= self.sol_numvar): # bld/grindsted/final/default/src/fusion/Model.mbi:5598:18-38
    self.sol_numvar = _0
   elif (_0 <= int((self.xx).shape[0])): # bld/grindsted/final/default/src/fusion/Model.mbi:5603:18-35
    for _11 in range(self.sol_numvar,_0):
     self.slx[_11] = 0.0
     self.sux[_11] = 0.0
     self.xx[_11] = 0.0
     self.yx[_11] = 0.0
    self.sol_numvar = _0
   else:
    if ((self.sol_numvar * 2) > (_0 + 100)):
     _12 = (self.sol_numvar * 2)
    else:
     _12 = (_0 + 100)
    _13=numpy.zeros((_12,), dtype=numpy.dtype(numpy.float64))
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.slx,0,_13,0,int((self.slx).shape[0]))
    self.slx = _13
    _14=numpy.zeros((_12,), dtype=numpy.dtype(numpy.float64))
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.sux,0,_14,0,int((self.sux).shape[0]))
    self.sux = _14
    _15=numpy.zeros((_12,), dtype=numpy.dtype(numpy.float64))
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.xx,0,_15,0,int((self.xx).shape[0]))
    self.xx = _15
    _16=numpy.zeros((_12,), dtype=numpy.dtype(numpy.float64))
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.yx,0,_16,0,int((self.yx).shape[0]))
    self.yx = _16
    _17=self.sol_numvar
    while (_17 < _0):
     self.slx[_17] = 0.0
     self.sux[_17] = 0.0
     self.xx[_17] = 0.0
     _17 += 1
    self.sol_numvar = _0
   if (_1 < 0):
    pass
   elif (_1 <= self.sol_numcon): # bld/grindsted/final/default/src/fusion/Model.mbi:5653:18-38
    self.sol_numcon = _1
   elif (_1 <= int((self.xx).shape[0])): # bld/grindsted/final/default/src/fusion/Model.mbi:5658:18-35
    for _18 in range(self.sol_numcon,_1):
     self.slc[_18] = 0.0
     self.suc[_18] = 0.0
     self.xc[_18] = 0.0
     self.y[_18] = 0.0
    self.sol_numcon = _1
   else:
    if ((self.sol_numcon * 2) > (_1 + 100)):
     _19 = (self.sol_numcon * 2)
    else:
     _19 = (_1 + 100)
    _20=numpy.zeros((_19,), dtype=numpy.dtype(numpy.float64))
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.slc,0,_20,0,int((self.slc).shape[0]))
    self.slc = _20
    _21=numpy.zeros((_19,), dtype=numpy.dtype(numpy.float64))
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.suc,0,_21,0,int((self.suc).shape[0]))
    self.suc = _21
    _22=numpy.zeros((_19,), dtype=numpy.dtype(numpy.float64))
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.xc,0,_22,0,int((self.xc).shape[0]))
    self.xc = _22
    _23=numpy.zeros((_19,), dtype=numpy.dtype(numpy.float64))
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.y,0,_23,0,int((self.y).shape[0]))
    self.y = _23
    for _24 in range(self.sol_numcon,_1):
     self.slc[_24] = 0.0
     self.suc[_24] = 0.0
     self.xc[_24] = 0.0
     self.y[_24] = 0.0
    self.sol_numcon = _1
  @staticmethod
  def _match_isDualAcceptable_Emosek_4fusion_4AccSolutionStatus_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Emosek_4fusion_4AccSolutionStatus_2__(_0))
  @staticmethod
  def _match_alt_isDualAcceptable_Emosek_4fusion_4AccSolutionStatus_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Emosek_4fusion_4AccSolutionStatus_2__(_0))
  def _isDualAcceptable_alt_Emosek_4fusion_4AccSolutionStatus_2(self,_t__0):
    return self._isDualAcceptable_Emosek_4fusion_4AccSolutionStatus_2(__0)
  def _isDualAcceptable_Emosek_4fusion_4AccSolutionStatus_2(self,_0):
   return (self.__isAcceptable_Emosek_4fusion_4SolutionStatus_2Emosek_4fusion_4AccSolutionStatus_2(self.dstatus,_0))
  @staticmethod
  def _match_isPrimalAcceptable_Emosek_4fusion_4AccSolutionStatus_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Emosek_4fusion_4AccSolutionStatus_2__(_0))
  @staticmethod
  def _match_alt_isPrimalAcceptable_Emosek_4fusion_4AccSolutionStatus_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Emosek_4fusion_4AccSolutionStatus_2__(_0))
  def _isPrimalAcceptable_alt_Emosek_4fusion_4AccSolutionStatus_2(self,_t__0):
    return self._isPrimalAcceptable_Emosek_4fusion_4AccSolutionStatus_2(__0)
  def _isPrimalAcceptable_Emosek_4fusion_4AccSolutionStatus_2(self,_0):
   return (self.__isAcceptable_Emosek_4fusion_4SolutionStatus_2Emosek_4fusion_4AccSolutionStatus_2(self.pstatus,_0))
  def __isAcceptable_alt_Emosek_4fusion_4SolutionStatus_2Emosek_4fusion_4AccSolutionStatus_2(self,_t__0,_t__1):
    return self.__isAcceptable_Emosek_4fusion_4SolutionStatus_2Emosek_4fusion_4AccSolutionStatus_2(__0,__1)
  def __isAcceptable_Emosek_4fusion_4SolutionStatus_2Emosek_4fusion_4AccSolutionStatus_2(self,_0,_1):
   if (_1==mosek.fusion.AccSolutionStatus.Anything):
    return (True)
   elif (_1==mosek.fusion.AccSolutionStatus.Optimal): # bld/grindsted/final/default/src/fusion/Model.mbi:5508:16-52
    return ((_0==mosek.fusion.SolutionStatus.Optimal))
   elif (_1==mosek.fusion.AccSolutionStatus.Feasible): # bld/grindsted/final/default/src/fusion/Model.mbi:5512:16-53
    return (((_0==mosek.fusion.SolutionStatus.Optimal) or (_0==mosek.fusion.SolutionStatus.Feasible)))
   elif (_1==mosek.fusion.AccSolutionStatus.Certificate): # bld/grindsted/final/default/src/fusion/Model.mbi:5518:16-56
    return ((_0==mosek.fusion.SolutionStatus.Certificate))
   return (False)
 return SolutionStruct
mosek_fusion_SolutionStruct=__mk_mosek_fusion_SolutionStruct()
del __mk_mosek_fusion_SolutionStruct
def __mk_mosek_fusion_RowBlockManager():
 class RowBlockManager(object):
  __slots__ = ['varidx_used','code_used','cconst','code','first_free_codeitem','param_code_sizes','param_varidx','first_free_entry','row_code_ptr','row_param_ptre','row_param_ptrb','blocks']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_(*args): 
      self._ctor_init_(*args)
    elif self.__match_alt_ctor_(*args):
      self._ctor_alt_init_(*args)
    elif self.__match_ctor_Lmosek_4fusion_4RowBlockManager_2(*args): 
      self._ctor_init_Lmosek_4fusion_4RowBlockManager_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4RowBlockManager_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4RowBlockManager_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.RowBlockManager.ctor()\n\tmosek.fusion.RowBlockManager.ctor(mosek.fusion.RowBlockManager)')
  def evaluate(self,*args):
    if False: pass
    elif mosek_fusion_RowBlockManager._match_evaluate_Lmosek_4fusion_4WorkStack_2_3D_3I_3I_3D(*args): 
      return self._evaluate_Lmosek_4fusion_4WorkStack_2_3D_3I_3I_3D(*args)
    elif mosek_fusion_RowBlockManager._match_alt_evaluate_Lmosek_4fusion_4WorkStack_2_3D_3I_3I_3D(*args): 
      return self._evaluate_alt_Lmosek_4fusion_4WorkStack_2_3D_3I_3I_3D(*args)
    else:
      raise ValueError('Invalid argument list evaluate('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RowBlockManager.evaluate(mosek.fusion.WorkStack,array(double,ndim=1),array(int32,ndim=1),array(int32,ndim=1),array(double,ndim=1))')
  def allocate(self,*args):
    if False: pass
    elif mosek_fusion_RowBlockManager._match_allocate__3I(*args): 
      return self._allocate__3I(*args)
    elif mosek_fusion_RowBlockManager._match_alt_allocate__3I(*args): 
      return self._allocate_alt__3I(*args)
    else:
      raise ValueError('Invalid argument list allocate('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RowBlockManager.allocate(array(int32,ndim=1))')
  def num_parameterized(self,*args):
    if False: pass
    elif mosek_fusion_RowBlockManager._match_num_1parameterized_(*args): 
      return self._num_1parameterized_(*args)
    elif mosek_fusion_RowBlockManager._match_alt_num_1parameterized_(*args): 
      return self._num_1parameterized_alt_(*args)
    else:
      raise ValueError('Invalid argument list num_parameterized('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RowBlockManager.num_parameterized()')
  def is_parameterized(self,*args):
    if False: pass
    elif mosek_fusion_RowBlockManager._match_is_1parameterized_(*args): 
      return self._is_1parameterized_(*args)
    elif mosek_fusion_RowBlockManager._match_alt_is_1parameterized_(*args): 
      return self._is_1parameterized_alt_(*args)
    else:
      raise ValueError('Invalid argument list is_parameterized('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RowBlockManager.is_parameterized()')
  def get(self,*args):
    if False: pass
    elif mosek_fusion_RowBlockManager._match_get_I_3II(*args): 
      return self._get_I_3II(*args)
    elif mosek_fusion_RowBlockManager._match_alt_get_I_3II(*args): 
      return self._get_alt_I_3II(*args)
    else:
      raise ValueError('Invalid argument list get('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RowBlockManager.get(int32,array(int32,ndim=1),int32)')
  def capacity(self,*args):
    if False: pass
    elif mosek_fusion_RowBlockManager._match_capacity_(*args): 
      return self._capacity_(*args)
    elif mosek_fusion_RowBlockManager._match_alt_capacity_(*args): 
      return self._capacity_alt_(*args)
    else:
      raise ValueError('Invalid argument list capacity('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RowBlockManager.capacity()')
  def clear_row_code(self,*args):
    if False: pass
    elif mosek_fusion_RowBlockManager._match_clear_1row_1code__3I(*args): 
      return self._clear_1row_1code__3I(*args)
    elif mosek_fusion_RowBlockManager._match_alt_clear_1row_1code__3I(*args): 
      return self._clear_1row_1code_alt__3I(*args)
    else:
      raise ValueError('Invalid argument list clear_row_code('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RowBlockManager.clear_row_code(array(int32,ndim=1))')
  def replace_row_code(self,*args):
    if False: pass
    elif mosek_fusion_RowBlockManager._match_replace_1row_1code_Lmosek_4fusion_4WorkStack_2_3IIIIII(*args): 
      return self._replace_1row_1code_Lmosek_4fusion_4WorkStack_2_3IIIIII(*args)
    elif mosek_fusion_RowBlockManager._match_alt_replace_1row_1code_Lmosek_4fusion_4WorkStack_2_3IIIIII(*args): 
      return self._replace_1row_1code_alt_Lmosek_4fusion_4WorkStack_2_3IIIIII(*args)
    else:
      raise ValueError('Invalid argument list replace_row_code('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RowBlockManager.replace_row_code(mosek.fusion.WorkStack,array(int32,ndim=1),int32,int32,int32,int32,int32)')
  def block_capacity(self,*args):
    if False: pass
    elif mosek_fusion_RowBlockManager._match_block_1capacity_(*args): 
      return self._block_1capacity_(*args)
    elif mosek_fusion_RowBlockManager._match_alt_block_1capacity_(*args): 
      return self._block_1capacity_alt_(*args)
    else:
      raise ValueError('Invalid argument list block_capacity('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RowBlockManager.block_capacity()')
  def blocksize(self,*args):
    if False: pass
    elif mosek_fusion_RowBlockManager._match_blocksize_I(*args): 
      return self._blocksize_I(*args)
    elif mosek_fusion_RowBlockManager._match_alt_blocksize_I(*args): 
      return self._blocksize_alt_I(*args)
    else:
      raise ValueError('Invalid argument list blocksize('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RowBlockManager.blocksize(int32)')
  def row_is_parameterized(self,*args):
    if False: pass
    elif mosek_fusion_RowBlockManager._match_row_1is_1parameterized_I(*args): 
      return self._row_1is_1parameterized_I(*args)
    elif mosek_fusion_RowBlockManager._match_alt_row_1is_1parameterized_I(*args): 
      return self._row_1is_1parameterized_alt_I(*args)
    else:
      raise ValueError('Invalid argument list row_is_parameterized('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RowBlockManager.row_is_parameterized(int32)')
  def release(self,*args):
    if False: pass
    elif mosek_fusion_RowBlockManager._match_release_I_3I(*args): 
      return self._release_I_3I(*args)
    elif mosek_fusion_RowBlockManager._match_alt_release_I_3I(*args): 
      return self._release_alt_I_3I(*args)
    else:
      raise ValueError('Invalid argument list release('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RowBlockManager.release(int32,array(int32,ndim=1))')
  def __repr__(self): return 'mosek.fusion.RowBlockManager'
  @staticmethod
  def _ctor_Lmosek_4fusion_4RowBlockManager_2(that):
    o = RowBlockManager.__new__(RowBlockManager)
    o._ctor_init_Lmosek_4fusion_4RowBlockManager_2(that)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4RowBlockManager_2(*args):
    if len(args) != 1: return False
    that, = args
    return (__arg_match_Lmosek_4fusion_4RowBlockManager_2__(that))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4RowBlockManager_2(*args):
    if len(args) != 1: return False
    that, = args
    return (__arg_alt_match_Lmosek_4fusion_4RowBlockManager_2__(that))
  def _ctor_alt_init_Lmosek_4fusion_4RowBlockManager_2(self,that):
    self._ctor_init_Lmosek_4fusion_4RowBlockManager_2(that)
  def _ctor_init_Lmosek_4fusion_4RowBlockManager_2(self,that):
   self.blocks = mosek_fusion_LinkedBlocks._ctor_Lmosek_4fusion_4LinkedBlocks_2((that.blocks))
   self.row_param_ptrb = (mosek.fusion.Utils.Tools._arraycopy__3I((that.row_param_ptrb)) if (((that.row_param_ptrb) is not None) ) else None)
   self.row_param_ptre = (mosek.fusion.Utils.Tools._arraycopy__3I((that.row_param_ptre)) if (((that.row_param_ptre) is not None) ) else None)
   self.row_code_ptr = (mosek.fusion.Utils.Tools._arraycopy__3I((that.row_code_ptr)) if (((that.row_code_ptr) is not None) ) else None)
   self.first_free_entry = (that.first_free_entry)
   self.param_varidx = (mosek.fusion.Utils.Tools._arraycopy__3J((that.param_varidx)) if (((that.param_varidx) is not None) ) else None)
   self.param_code_sizes = (mosek.fusion.Utils.Tools._arraycopy__3I((that.param_code_sizes)) if (((that.param_code_sizes) is not None) ) else None)
   self.first_free_codeitem = (that.first_free_codeitem)
   self.code = (mosek.fusion.Utils.Tools._arraycopy__3I((that.code)) if (((that.code) is not None) ) else None)
   self.cconst = (mosek.fusion.Utils.Tools._arraycopy__3D((that.cconst)) if (((that.cconst) is not None) ) else None)
   self.code_used = (that.code_used)
   self.varidx_used = (that.varidx_used)
  @staticmethod
  def _ctor_():
    o = RowBlockManager.__new__(RowBlockManager)
    o._ctor_init_()
    return o
  @staticmethod
  def __match_ctor_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def __match_alt_ctor_(*args):
    if len(args) != 0: return False
    return True
  def _ctor_alt_init_(self,):
    self._ctor_init_()
  def _ctor_init_(self,):
   self.blocks = mosek_fusion_LinkedBlocks._ctor_()
   self.row_param_ptrb = None
   self.row_param_ptre = None
   self.row_code_ptr = None
   self.first_free_entry = 0
   self.param_varidx = None
   self.param_code_sizes = None
   self.first_free_codeitem = 0
   self.code = None
   self.cconst = None
   self.code_used = 0
   self.varidx_used = 0
  @staticmethod
  def _match_num_1parameterized_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_num_1parameterized_(*args):
    if len(args) != 0: return False
    return True
  def _num_1parameterized_alt_(self,):
    return self._num_1parameterized_()
  def _num_1parameterized_(self,):
   return numpy.int32(self.varidx_used)
  @staticmethod
  def _match_is_1parameterized_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_is_1parameterized_(*args):
    if len(args) != 0: return False
    return True
  def _is_1parameterized_alt_(self,):
    return self._is_1parameterized_()
  def _is_1parameterized_(self,):
   return ((self.code_used > 0))
  @staticmethod
  def _match_blocksize_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_blocksize_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _blocksize_alt_I(self,_t__0):
    return self._blocksize_I(numpy.int32(__0))
  def _blocksize_I(self,_0):
   return numpy.int32(self.blocks.blocksize(_0))
  @staticmethod
  def _match_block_1capacity_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_block_1capacity_(*args):
    if len(args) != 0: return False
    return True
  def _block_1capacity_alt_(self,):
    return self._block_1capacity_()
  def _block_1capacity_(self,):
   return numpy.int32(self.blocks.block_capacity())
  @staticmethod
  def _match_capacity_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_capacity_(*args):
    if len(args) != 0: return False
    return True
  def _capacity_alt_(self,):
    return self._capacity_()
  def _capacity_(self,):
   return numpy.int32(self.blocks.capacity())
  @staticmethod
  def _match_get_I_3II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match__3I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_get_I_3II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match_I__(_2))
  def _get_alt_I_3II(self,_t__0,_t__1,_t__2):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.int32(_t__2)
   _1_res = self._get_I_3II(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _get_I_3II(self,_0,_1,_2):
   self.blocks.get(_0,_1,_2)
  @staticmethod
  def _match_evaluate_Lmosek_4fusion_4WorkStack_2_3D_3I_3I_3D(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match__3D__(_1) and __arg_match__3I__(_2) and __arg_match__3I__(_3) and __arg_match__3D__(_4))
  @staticmethod
  def _match_alt_evaluate_Lmosek_4fusion_4WorkStack_2_3D_3I_3I_3D(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match__3D__(_1) and __arg_alt_match__3I__(_2) and __arg_alt_match__3I__(_3) and __arg_alt_match__3D__(_4))
  def _evaluate_alt_Lmosek_4fusion_4WorkStack_2_3D_3I_3I_3D(self,_t__0,_t__1,_t__2,_t__3,_t__4):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.int32))
   _4=numpy.array(_t__4,dtype=numpy.dtype(numpy.float64))
   _1_res = self._evaluate_Lmosek_4fusion_4WorkStack_2_3D_3I_3I_3D(_0,_1,_2,_3,_4)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _evaluate_Lmosek_4fusion_4WorkStack_2_3D_3I_3I_3D(self,_0,_1,_2,_3,_4):
   _5=_0.allocf64(self.code_used)
   _6=0
   _7=(_0.f64)
   _8=0
   for _9 in range(0,int((self.row_param_ptrb).shape[0])):
    if (self.row_param_ptrb[_9] < self.row_param_ptre[_9]):
     _10=self.row_code_ptr[_9]
     for _11 in range(self.row_param_ptrb[_9],self.row_param_ptre[_9]):
      for _12 in range(0,self.param_code_sizes[_11]):
       if (self.code[_10]==0):
        pass
       else:
        if (self.code[_10]==1):
         _7[(_5 + _6)] = _1[numpy.int32(self.cconst[_10])]
         _6 += 1
        else:
         if (self.code[_10]==2):
          _7[(_5 + _6)] = self.cconst[_10]
          _6 += 1
         else:
          if (self.code[_10]==3):
           _7[((_5 + _6) - 2)] += _7[((_5 + _6) - 1)]
           _6 -= 1
          else:
           if (self.code[_10]==4):
            _7[((_5 + _6) - 1)] = (- _7[((_5 + _6) - 1)])
           else:
            if (self.code[_10]==5):
             _7[((_5 + _6) - 2)] *= _7[((_5 + _6) - 1)]
             _6 -= 1
            else:
             if (self.code[_10]==6):
              _7[((_5 + _6) - 1)] = (1.0 / _7[((_5 + _6) - 1)])
             else:
              if (self.code[_10]==8):
               _13=0.0
               for _14 in range(0,numpy.int32(self.cconst[_10])):
                _13 += _7[((_5 + _6) - 1)]
                _6 -= 1
               _7[(_5 + _6)] = _13
               _6 += 1
              else:
               pass
       _10 += 1
      _2[_8] = _9
      _3[_8] = numpy.int32(self.param_varidx[_11])
      _4[_8] = _7[_5]
      _6 = 0
      _8 += 1
   _0.popf64(self.code_used)
  @staticmethod
  def _match_replace_1row_1code_Lmosek_4fusion_4WorkStack_2_3IIIIII(*args):
    if len(args) != 7: return False
    _0,_1,_2,_3,_4,_5,_6, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match__3I__(_1) and __arg_match_I__(_2) and __arg_match_I__(_3) and __arg_match_I__(_4) and __arg_match_I__(_5) and __arg_match_I__(_6))
  @staticmethod
  def _match_alt_replace_1row_1code_Lmosek_4fusion_4WorkStack_2_3IIIIII(*args):
    if len(args) != 7: return False
    _0,_1,_2,_3,_4,_5,_6, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match_I__(_2) and __arg_alt_match_I__(_3) and __arg_alt_match_I__(_4) and __arg_alt_match_I__(_5) and __arg_alt_match_I__(_6))
  def _replace_1row_1code_alt_Lmosek_4fusion_4WorkStack_2_3IIIIII(self,_t__0,_t__1,_t__2,_t__3,_t__4,_t__5,_t__6):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.int32(_t__2)
   _3=numpy.int32(_t__3)
   _4=numpy.int32(_t__4)
   _5=numpy.int32(_t__5)
   _6=numpy.int32(_t__6)
   _1_res = self._replace_1row_1code_Lmosek_4fusion_4WorkStack_2_3IIIIII(_0,_1,_2,_3,_4,_5,_6)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _replace_1row_1code_Lmosek_4fusion_4WorkStack_2_3IIIIII(self,_0,_1,_2,_3,_4,_5,_6):
   _7=int((_1).shape[0])
   _8=(_0.i32)
   _9=(_0.i64)
   _10=(_0.f64)
   _11=True
   _12=0
   _13=0
   for _14 in range(0,_7):
    for _15 in range(_8[(_2 + _14)],_8[((_2 + _14) + 1)]):
     if (((_8[((_4 + _15) + 1)] - _8[(_4 + _15)])==1) and ((_8[(_5 + _8[(_4 + _15)])]==10) or (_8[(_5 + _8[(_4 + _15)])]==2))):
      pass
     else:
      _13 += 1
      _12 += (_8[((_4 + _15) + 1)] - _8[(_4 + _15)])
   self.clear_row_code(_1)
   self.__ensure_1code_1cap_II(_13,_12)
   self.code_used += _12
   self.varidx_used += _13
   if (self.first_free_codeitem > (self.code_used * 2)):
    self.__compress_()
   for _16 in range(0,_7):
    _17=_1[_16]
    _18=0
    _19=0
    for _20 in range(_8[(_2 + _16)],_8[((_2 + _16) + 1)]):
     if (((_8[((_4 + _20) + 1)] - _8[(_4 + _20)])==1) and ((_8[(_5 + _8[(_4 + _20)])]==10) or (_8[(_5 + _8[(_4 + _20)])]==2))):
      pass
     else:
      _18 += 1
      _19 += (_8[((_4 + _20) + 1)] - _8[(_4 + _20)])
    _21=_1[_16]
    _22=(self.row_param_ptre[_21] - self.row_param_ptrb[_21])
    if (_18 > 0):
     self.row_param_ptrb[_17] = self.first_free_entry
     self.row_param_ptre[_17] = (self.first_free_entry + _18)
     self.row_code_ptr[_17] = self.first_free_codeitem
     self.first_free_entry += _18
     self.first_free_codeitem += _19
   for _23 in range(0,_7):
    _24=_1[_23]
    _25=self.row_code_ptr[_24]
    _26=self.row_param_ptrb[_24]
    for _27 in range(_8[(_2 + _23)],_8[((_2 + _23) + 1)]):
     if (((_8[((_4 + _27) + 1)] - _8[(_4 + _27)])==1) and ((_8[(_5 + _8[(_4 + _27)])]==10) or (_8[(_5 + _8[(_4 + _27)])]==2))):
      pass
     else:
      for _28 in range(_8[(_4 + _27)],_8[((_4 + _27) + 1)]):
       self.code[_25] = _8[(_5 + _28)]
       self.cconst[_25] = _10[(_6 + _28)]
       _25 += 1
      self.param_code_sizes[_26] = (_8[((_4 + _27) + 1)] - _8[(_4 + _27)])
      self.param_varidx[_26] = _9[(_3 + _27)]
      _11 = (_11 and (_9[(_3 + _27)] >= 0))
      _26 += 1
   if (not _11):
    raise mosek_fusion_ParameterError._ctor_S("Expression contains parameterized SDP non-zero")
  @staticmethod
  def _match_clear_1row_1code__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_clear_1row_1code__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _clear_1row_1code_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._clear_1row_1code__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _clear_1row_1code__3I(self,_0):
   if (self.row_param_ptrb is not None):
    for _1 in range(0,int((_0).shape[0])):
     for _2 in range(self.row_param_ptrb[_0[_1]],self.row_param_ptre[_0[_1]]):
      self.code_used -= self.param_code_sizes[_2]
     self.varidx_used -= (self.row_param_ptre[_0[_1]] - self.row_param_ptrb[_0[_1]])
     self.row_param_ptrb[_0[_1]] = 0
     self.row_param_ptre[_0[_1]] = 0
  def __compress_alt_(self,):
    return self.__compress_()
  def __compress_(self,):
   _0=numpy.zeros((self.code_used,), dtype=numpy.dtype(numpy.int32))
   _1=numpy.zeros((self.code_used,), dtype=numpy.dtype(numpy.float64))
   _2=numpy.zeros((self.first_free_entry,), dtype=numpy.dtype(numpy.int64))
   _3=numpy.zeros((self.first_free_entry,), dtype=numpy.dtype(numpy.int32))
   _4=0
   _5=0
   for _6 in range(0,int((self.row_param_ptrb).shape[0])):
    _7=0
    _8=(self.row_param_ptre[_6] - self.row_param_ptrb[_6])
    mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(self.param_varidx,self.row_param_ptrb[_6],_2,_4,_8)
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.param_code_sizes,self.row_param_ptrb[_6],_3,_4,_8)
    for _9 in range(self.row_param_ptrb[_6],self.row_param_ptre[_6]):
     _7 += self.param_code_sizes[_9]
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.code,self.row_code_ptr[_6],_0,_5,_7)
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.cconst,self.row_code_ptr[_6],_1,_5,_7)
    self.row_param_ptrb[_6] = _4
    self.row_param_ptre[_6] = (_4 + _8)
    self.row_code_ptr[_6] = _5
    _5 += _7
    _4 += _8
   mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(_2,0,self.param_varidx,0,_4)
   mosek.fusion.Utils.Tools._arraycopy__3II_3III(_3,0,self.param_code_sizes,0,_4)
   mosek.fusion.Utils.Tools._arraycopy__3II_3III(_0,0,self.code,0,_5)
   mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(_1,0,self.cconst,0,_5)
   self.first_free_codeitem = _5
   self.first_free_entry = _4
  def __ensure_1code_1cap_alt_II(self,_t__0,_t__1):
    return self.__ensure_1code_1cap_II(numpy.int32(__0),numpy.int32(__1))
  def __ensure_1code_1cap_II(self,_0,_1):
   if (self.row_code_ptr is None):
    _2=128
    while (_2 < _0):
     _2 *= 2
    _3=128
    while (_3 < _1):
     _3 *= 2
    self.row_param_ptrb = numpy.zeros((self.blocks.capacity(),), dtype=numpy.dtype(numpy.int32))
    self.row_param_ptre = numpy.zeros((self.blocks.capacity(),), dtype=numpy.dtype(numpy.int32))
    self.row_code_ptr = numpy.zeros((self.blocks.capacity(),), dtype=numpy.dtype(numpy.int32))
    self.param_varidx = numpy.zeros((_2,), dtype=numpy.dtype(numpy.int64))
    self.param_code_sizes = numpy.zeros((_2,), dtype=numpy.dtype(numpy.int32))
    self.code = numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
    self.cconst = numpy.zeros((_3,), dtype=numpy.dtype(numpy.float64))
   else:
    if (_0 > (int((self.param_varidx).shape[0]) - self.first_free_entry)):
     _4=int((self.param_varidx).shape[0])
     while ((_4 - self.first_free_entry) < _0):
      _4 *= 2
     _5=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
     _6=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int64))
     _7=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
     mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(self.param_varidx,0,_6,0,self.first_free_entry)
     mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.param_code_sizes,0,_7,0,self.first_free_entry)
     self.param_varidx = _6
     self.param_code_sizes = _7
    if (_1 > (int((self.code).shape[0]) - self.first_free_codeitem)):
     _8=int((self.code).shape[0])
     while (_1 > (_8 - self.first_free_codeitem)):
      _8 *= 2
     _9=numpy.zeros((_8,), dtype=numpy.dtype(numpy.int32))
     mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.code,0,_9,0,self.first_free_codeitem)
     _10=numpy.zeros((_8,), dtype=numpy.dtype(numpy.float64))
     mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.cconst,0,_10,0,self.first_free_codeitem)
     self.code = _9
     self.cconst = _10
  @staticmethod
  def _match_release_I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_release_I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3I__(_1))
  def _release_alt_I_3I(self,_t__0,_t__1):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self._release_I_3I(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _release_I_3I(self,_0,_1):
   _2=self.blocks.blocksize(_0)
   self.blocks.get(_0,_1,0)
   self.blocks.free(_0)
   if (self.row_code_ptr is not None):
    for _3 in range(0,_2):
     _4=_1[_3]
     self.code_used -= (self.row_param_ptre[_4] - self.row_param_ptrb[_4])
     self.row_param_ptre[_4] = 0
     self.row_param_ptrb[_4] = 0
  @staticmethod
  def _match_allocate__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_allocate__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _allocate_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._allocate__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _allocate__3I(self,_0):
   _1=int((_0).shape[0])
   _2=self.blocks.alloc(_1)
   self.blocks.get(_2,_0,0)
   if ((self.row_code_ptr is not None) and (self.blocks.capacity() > int((self.row_param_ptrb).shape[0]))):
    _3=numpy.zeros((self.blocks.capacity(),), dtype=numpy.dtype(numpy.int32))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.row_param_ptrb,0,_3,0,int((self.row_param_ptrb).shape[0]))
    _4=numpy.zeros((self.blocks.capacity(),), dtype=numpy.dtype(numpy.int32))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.row_param_ptre,0,_4,0,int((self.row_param_ptre).shape[0]))
    _5=numpy.zeros((self.blocks.capacity(),), dtype=numpy.dtype(numpy.int32))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.row_code_ptr,0,_5,0,int((self.row_code_ptr).shape[0]))
    self.row_param_ptrb = _3
    self.row_param_ptre = _4
    self.row_code_ptr = _5
   return numpy.int32(_2)
  @staticmethod
  def _match_row_1is_1parameterized_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_row_1is_1parameterized_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _row_1is_1parameterized_alt_I(self,_t__0):
    return self._row_1is_1parameterized_I(numpy.int32(__0))
  def _row_1is_1parameterized_I(self,_0):
   return (((self.row_param_ptrb is not None) and (self.row_param_ptrb[_0] < self.row_param_ptre[_0])))
 return RowBlockManager
mosek_fusion_RowBlockManager=__mk_mosek_fusion_RowBlockManager()
del __mk_mosek_fusion_RowBlockManager
def __mk_mosek_fusion_BaseVariable():
 class BaseVariable(mosek_fusion_Variable,object):
  __slots__ = ['_BaseVariable__sparsity','_BaseVariable__basevar_nativeidxs','_BaseVariable__model','_BaseVariable__shape']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(*args): 
      self._ctor_init_Lmosek_4fusion_4Model_2_3I_3J_3J(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Model_2_3I_3J_3J(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.BaseVariable.ctor(mosek.fusion.Model,array(int32,ndim=1),array(int64,ndim=1),array(int64,ndim=1))')
  def slice(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_slice_II(*args): 
      return self._slice_II(*args)
    elif mosek_fusion_BaseVariable._match_alt_slice_II(*args): 
      return self._slice_alt_II(*args)
    elif mosek_fusion_BaseVariable._match_slice__3I_3I(*args): 
      return self._slice__3I_3I(*args)
    elif mosek_fusion_BaseVariable._match_alt_slice__3I_3I(*args): 
      return self._slice_alt__3I_3I(*args)
    else:
      raise ValueError('Invalid argument list slice('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.slice(int32,int32)\n\tmosek.fusion.BaseVariable.slice(array(int32,ndim=1),array(int32,ndim=1))')
  def pick(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_pick__3I(*args): 
      return self._pick__3I(*args)
    elif mosek_fusion_BaseVariable._match_alt_pick__3I(*args): 
      return self._pick_alt__3I(*args)
    elif mosek_fusion_BaseVariable._match_pick__3_5I(*args): 
      return self._pick__3_5I(*args)
    elif mosek_fusion_BaseVariable._match_alt_pick__3_5I(*args): 
      return self._pick_alt__3_5I(*args)
    elif mosek_fusion_BaseVariable._match_pick__3I_3I(*args): 
      return self._pick__3I_3I(*args)
    elif mosek_fusion_BaseVariable._match_alt_pick__3I_3I(*args): 
      return self._pick_alt__3I_3I(*args)
    elif mosek_fusion_BaseVariable._match_pick__3I_3I_3I(*args): 
      return self._pick__3I_3I_3I(*args)
    elif mosek_fusion_BaseVariable._match_alt_pick__3I_3I_3I(*args): 
      return self._pick_alt__3I_3I_3I(*args)
    else:
      raise ValueError('Invalid argument list pick('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.pick(array(int32,ndim=1))\n\tmosek.fusion.BaseVariable.pick(array(int32,ndim=2))\n\tmosek.fusion.BaseVariable.pick(array(int32,ndim=1),array(int32,ndim=1))\n\tmosek.fusion.BaseVariable.pick(array(int32,ndim=1),array(int32,ndim=1),array(int32,ndim=1))')
  def antidiag(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_antidiag_(*args): 
      return self._antidiag_(*args)
    elif mosek_fusion_BaseVariable._match_alt_antidiag_(*args): 
      return self._antidiag_alt_(*args)
    elif mosek_fusion_BaseVariable._match_antidiag_I(*args): 
      return self._antidiag_I(*args)
    elif mosek_fusion_BaseVariable._match_alt_antidiag_I(*args): 
      return self._antidiag_alt_I(*args)
    else:
      raise ValueError('Invalid argument list antidiag('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.antidiag()\n\tmosek.fusion.BaseVariable.antidiag(int32)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_BaseVariable._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_BaseVariable._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_BaseVariable._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.BaseVariable.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def transpose(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_transpose_(*args): 
      return self._transpose_(*args)
    elif mosek_fusion_BaseVariable._match_alt_transpose_(*args): 
      return self._transpose_alt_(*args)
    else:
      raise ValueError('Invalid argument list transpose('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.transpose()')
  def reshape(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_reshape__3I(*args): 
      return self._reshape__3I(*args)
    elif mosek_fusion_BaseVariable._match_alt_reshape__3I(*args): 
      return self._reshape_alt__3I(*args)
    elif mosek_fusion_BaseVariable._match_reshape_I(*args): 
      return self._reshape_I(*args)
    elif mosek_fusion_BaseVariable._match_alt_reshape_I(*args): 
      return self._reshape_alt_I(*args)
    elif mosek_fusion_BaseVariable._match_reshape_II(*args): 
      return self._reshape_II(*args)
    elif mosek_fusion_BaseVariable._match_alt_reshape_II(*args): 
      return self._reshape_alt_II(*args)
    elif mosek_fusion_BaseVariable._match_reshape_III(*args): 
      return self._reshape_III(*args)
    elif mosek_fusion_BaseVariable._match_alt_reshape_III(*args): 
      return self._reshape_alt_III(*args)
    else:
      raise ValueError('Invalid argument list reshape('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.reshape(array(int32,ndim=1))\n\tmosek.fusion.BaseVariable.reshape(int32)\n\tmosek.fusion.BaseVariable.reshape(int32,int32)\n\tmosek.fusion.BaseVariable.reshape(int32,int32,int32)')
  def values(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_values_I_3DZ(*args): 
      return self._values_I_3DZ(*args)
    elif mosek_fusion_BaseVariable._match_alt_values_I_3DZ(*args): 
      return self._values_alt_I_3DZ(*args)
    else:
      raise ValueError('Invalid argument list values('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.values(int32,array(double,ndim=1),bool)')
  def diag(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_diag_(*args): 
      return self._diag_(*args)
    elif mosek_fusion_BaseVariable._match_alt_diag_(*args): 
      return self._diag_alt_(*args)
    elif mosek_fusion_BaseVariable._match_diag_I(*args): 
      return self._diag_I(*args)
    elif mosek_fusion_BaseVariable._match_alt_diag_I(*args): 
      return self._diag_alt_I(*args)
    else:
      raise ValueError('Invalid argument list diag('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.diag()\n\tmosek.fusion.BaseVariable.diag(int32)')
  def makeInteger(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_makeInteger_(*args): 
      return self._makeInteger_(*args)
    elif mosek_fusion_BaseVariable._match_alt_makeInteger_(*args): 
      return self._makeInteger_alt_(*args)
    else:
      raise ValueError('Invalid argument list makeInteger('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.makeInteger()')
  def fromTril(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_fromTril_I(*args): 
      return self._fromTril_I(*args)
    elif mosek_fusion_BaseVariable._match_alt_fromTril_I(*args): 
      return self._fromTril_alt_I(*args)
    elif mosek_fusion_BaseVariable._match_fromTril_II(*args): 
      return self._fromTril_II(*args)
    elif mosek_fusion_BaseVariable._match_alt_fromTril_II(*args): 
      return self._fromTril_alt_II(*args)
    else:
      raise ValueError('Invalid argument list fromTril('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.fromTril(int32)\n\tmosek.fusion.BaseVariable.fromTril(int32,int32)')
  def remove(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_remove_(*args): 
      return self._remove_(*args)
    elif mosek_fusion_BaseVariable._match_alt_remove_(*args): 
      return self._remove_alt_(*args)
    else:
      raise ValueError('Invalid argument list remove('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.remove()')
  def getShape(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_getShape_(*args): 
      return self._getShape_(*args)
    elif mosek_fusion_BaseVariable._match_alt_getShape_(*args): 
      return self._getShape_alt_(*args)
    else:
      raise ValueError('Invalid argument list getShape('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.getShape()')
  def make_integer(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_make_1integer_(*args): 
      return self._make_1integer_(*args)
    elif mosek_fusion_BaseVariable._match_alt_make_1integer_(*args): 
      return self._make_1integer_alt_(*args)
    else:
      raise ValueError('Invalid argument list make_integer('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.make_integer()')
  def makeContinuous(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_makeContinuous_(*args): 
      return self._makeContinuous_(*args)
    elif mosek_fusion_BaseVariable._match_alt_makeContinuous_(*args): 
      return self._makeContinuous_alt_(*args)
    else:
      raise ValueError('Invalid argument list makeContinuous('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.makeContinuous()')
  def make_continuous(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_make_1continuous_(*args): 
      return self._make_1continuous_(*args)
    elif mosek_fusion_BaseVariable._match_alt_make_1continuous_(*args): 
      return self._make_1continuous_alt_(*args)
    else:
      raise ValueError('Invalid argument list make_continuous('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.make_continuous()')
  def level(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_level_(*args): 
      return self._level_(*args)
    elif mosek_fusion_BaseVariable._match_alt_level_(*args): 
      return self._level_alt_(*args)
    else:
      raise ValueError('Invalid argument list level('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.level()')
  def getDim(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_getDim_I(*args): 
      return self._getDim_I(*args)
    elif mosek_fusion_BaseVariable._match_alt_getDim_I(*args): 
      return self._getDim_alt_I(*args)
    else:
      raise ValueError('Invalid argument list getDim('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.getDim(int32)')
  def numInst(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_numInst_(*args): 
      return self._numInst_(*args)
    elif mosek_fusion_BaseVariable._match_alt_numInst_(*args): 
      return self._numInst_alt_(*args)
    else:
      raise ValueError('Invalid argument list numInst('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.numInst()')
  def recursive_eval(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_BaseVariable._match_alt_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._recursive_1eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list recursive_eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.recursive_eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def set_values(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_set_1values__3DZ(*args): 
      return self._set_1values__3DZ(*args)
    elif mosek_fusion_BaseVariable._match_alt_set_1values__3DZ(*args): 
      return self._set_1values_alt__3DZ(*args)
    else:
      raise ValueError('Invalid argument list set_values('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.set_values(array(double,ndim=1),bool)')
  def getND(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_getND_(*args): 
      return self._getND_(*args)
    elif mosek_fusion_BaseVariable._match_alt_getND_(*args): 
      return self._getND_alt_(*args)
    else:
      raise ValueError('Invalid argument list getND('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.getND()')
  def getModel(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_getModel_(*args): 
      return self._getModel_(*args)
    elif mosek_fusion_BaseVariable._match_alt_getModel_(*args): 
      return self._getModel_alt_(*args)
    else:
      raise ValueError('Invalid argument list getModel('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.getModel()')
  def index(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_index_I(*args): 
      return self._index_I(*args)
    elif mosek_fusion_BaseVariable._match_alt_index_I(*args): 
      return self._index_alt_I(*args)
    elif mosek_fusion_BaseVariable._match_index__3I(*args): 
      return self._index__3I(*args)
    elif mosek_fusion_BaseVariable._match_alt_index__3I(*args): 
      return self._index_alt__3I(*args)
    elif mosek_fusion_BaseVariable._match_index_II(*args): 
      return self._index_II(*args)
    elif mosek_fusion_BaseVariable._match_alt_index_II(*args): 
      return self._index_alt_II(*args)
    elif mosek_fusion_BaseVariable._match_index_III(*args): 
      return self._index_III(*args)
    elif mosek_fusion_BaseVariable._match_alt_index_III(*args): 
      return self._index_alt_III(*args)
    else:
      raise ValueError('Invalid argument list index('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.index(int32)\n\tmosek.fusion.BaseVariable.index(array(int32,ndim=1))\n\tmosek.fusion.BaseVariable.index(int32,int32)\n\tmosek.fusion.BaseVariable.index(int32,int32,int32)')
  def tril(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_tril_(*args): 
      return self._tril_(*args)
    elif mosek_fusion_BaseVariable._match_alt_tril_(*args): 
      return self._tril_alt_(*args)
    elif mosek_fusion_BaseVariable._match_tril_II(*args): 
      return self._tril_II(*args)
    elif mosek_fusion_BaseVariable._match_alt_tril_II(*args): 
      return self._tril_alt_II(*args)
    else:
      raise ValueError('Invalid argument list tril('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.tril()\n\tmosek.fusion.BaseVariable.tril(int32,int32)')
  def dual(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_dual_(*args): 
      return self._dual_(*args)
    elif mosek_fusion_BaseVariable._match_alt_dual_(*args): 
      return self._dual_alt_(*args)
    else:
      raise ValueError('Invalid argument list dual('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.dual()')
  def getSize(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_getSize_(*args): 
      return self._getSize_(*args)
    elif mosek_fusion_BaseVariable._match_alt_getSize_(*args): 
      return self._getSize_alt_(*args)
    else:
      raise ValueError('Invalid argument list getSize('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.getSize()')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_BaseVariable._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.toString()')
  def setLevel(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_setLevel__3D(*args): 
      return self._setLevel__3D(*args)
    elif mosek_fusion_BaseVariable._match_alt_setLevel__3D(*args): 
      return self._setLevel_alt__3D(*args)
    else:
      raise ValueError('Invalid argument list setLevel('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.setLevel(array(double,ndim=1))')
  def compress_when_caching(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_compress_1when_1caching_(*args): 
      return self._compress_1when_1caching_(*args)
    elif mosek_fusion_BaseVariable._match_alt_compress_1when_1caching_(*args): 
      return self._compress_1when_1caching_alt_(*args)
    else:
      raise ValueError('Invalid argument list compress_when_caching('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.compress_when_caching()')
  def asExpr(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_asExpr_(*args): 
      return self._asExpr_(*args)
    elif mosek_fusion_BaseVariable._match_alt_asExpr_(*args): 
      return self._asExpr_alt_(*args)
    else:
      raise ValueError('Invalid argument list asExpr('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.asExpr()')
  def inst(self,*args):
    if False: pass
    elif mosek_fusion_BaseVariable._match_inst_I_3J(*args): 
      return self._inst_I_3J(*args)
    elif mosek_fusion_BaseVariable._match_alt_inst_I_3J(*args): 
      return self._inst_alt_I_3J(*args)
    elif mosek_fusion_BaseVariable._match_inst_I_3JI_3J(*args): 
      return self._inst_I_3JI_3J(*args)
    elif mosek_fusion_BaseVariable._match_alt_inst_I_3JI_3J(*args): 
      return self._inst_alt_I_3JI_3J(*args)
    else:
      raise ValueError('Invalid argument list inst('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseVariable.inst(int32,array(int64,ndim=1))\n\tmosek.fusion.BaseVariable.inst(int32,array(int64,ndim=1),int32,array(int64,ndim=1))')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.BaseVariable: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4BaseVariable_2Lmosek_4fusion_4Model_2(v,m):
    o = BaseVariable.__new__(BaseVariable)
    o._ctor_init_Lmosek_4fusion_4BaseVariable_2Lmosek_4fusion_4Model_2(v,m)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4BaseVariable_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    v,m, = args
    return (__arg_match_Lmosek_4fusion_4BaseVariable_2__(v) and __arg_match_Lmosek_4fusion_4Model_2__(m))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4BaseVariable_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    v,m, = args
    return (__arg_alt_match_Lmosek_4fusion_4BaseVariable_2__(v) and __arg_alt_match_Lmosek_4fusion_4Model_2__(m))
  def _ctor_alt_init_Lmosek_4fusion_4BaseVariable_2Lmosek_4fusion_4Model_2(self,v,m):
    self._ctor_init_Lmosek_4fusion_4BaseVariable_2Lmosek_4fusion_4Model_2(v,m)
  def _ctor_init_Lmosek_4fusion_4BaseVariable_2Lmosek_4fusion_4Model_2(self,v,m):
   self.__model = m
   self.__shape = (v.__shape)
   self.__sparsity = (v.__sparsity)
   self.__basevar_nativeidxs = (v.__basevar_nativeidxs)
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(m,shape,sparsity,basevar_nativeidxs):
    o = BaseVariable.__new__(BaseVariable)
    o._ctor_init_Lmosek_4fusion_4Model_2_3I_3J_3J(m,shape,sparsity,basevar_nativeidxs)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(*args):
    if len(args) != 4: return False
    m,shape,sparsity,basevar_nativeidxs, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(m) and __arg_match__3I__(shape) and __arg_match__3J__(sparsity) and __arg_match__3J__(basevar_nativeidxs))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(*args):
    if len(args) != 4: return False
    m,shape,sparsity,basevar_nativeidxs, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(m) and __arg_alt_match__3I__(shape) and __arg_alt_match__3J__(sparsity) and __arg_alt_match__3J__(basevar_nativeidxs))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2_3I_3J_3J(self,m,shape,sparsity,basevar_nativeidxs):
    self._ctor_init_Lmosek_4fusion_4Model_2_3I_3J_3J(m,numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.array(sparsity,dtype=numpy.dtype(numpy.int64)),numpy.array(basevar_nativeidxs,dtype=numpy.dtype(numpy.int64)))
  def _ctor_init_Lmosek_4fusion_4Model_2_3I_3J_3J(self,m,shape,sparsity,basevar_nativeidxs):
   self.__model = m
   (self.__shape) = shape
   (self.__sparsity) = sparsity
   (self.__basevar_nativeidxs) = basevar_nativeidxs
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   _0=mosek.fusion.Utils.StringBuffer()
   _0._a_S("Variable((")
   if (int((self.__shape).shape[0]) > 0):
    _0._a_I(self.__shape[0])
    for _1 in range(1,int((self.__shape).shape[0])):
     _0._a_S(",")._a_I(self.__shape[_1])
   _0._a_S("))")
   return (_0._toString_())
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   _4=int((self.__basevar_nativeidxs).shape[0])
   _5=_4
   _6=int((self.__shape).shape[0])
   _7=(self.__sparsity is not None)
   _0.alloc_expr(_6,_5,_4,_7)
   _8=(_0.ptr_base)
   _9=(_0.nidxs_base)
   _10=(_0.sp_base)
   _11=(_0.cof_base)
   _12=(_0.shape_base)
   _13=(_0.i32)
   _14=(_0.i64)
   _15=(_0.f64)
   for _16 in range(0,_6):
    _13[(_12 + _16)] = self.__shape[_16]
   for _17 in range(0,(_4 + 1)):
    _13[(_8 + _17)] = _17
   for _18 in range(0,_4):
    _14[(_9 + _18)] = self.__basevar_nativeidxs[_18]
   if _7:
    for _19 in range(0,_4):
     _14[(_10 + _19)] = self.__sparsity[_19]
   for _20 in range(0,_4):
    _15[(_11 + _20)] = 1.0
  @staticmethod
  def _match_compress_1when_1caching_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_compress_1when_1caching_(*args):
    if len(args) != 0: return False
    return True
  def _compress_1when_1caching_alt_(self,):
    return self._compress_1when_1caching_()
  def _compress_1when_1caching_(self,):
   return (False)
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(self,_t__0,_t__1,_t__2):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(_0,_1,_2)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(self,_0,_1,_2):
   self.recursive_eval(_0,_1,_2,False)
  @staticmethod
  def _match_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _recursive_1eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.eval(_0,_1,_2,_3)
  @staticmethod
  def _match_remove_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_remove_(*args):
    if len(args) != 0: return False
    return True
  def _remove_alt_(self,):
    return self._remove_()
  def _remove_(self,):
   raise mosek_fusion_DeletionError._ctor_S("Only original variables can be removed")
  @staticmethod
  def _match_fromTril_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_fromTril_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _fromTril_alt_II(self,_t__0,_t__1):
    return self._fromTril_II(numpy.int32(__0),numpy.int32(__1))
  def _fromTril_II(self,_0,_1):
   if ((_0 < 0) or (_0 >= int((self.__shape).shape[0]))):
    raise mosek_fusion_DimensionError._ctor_S("Invalid dimension")
   elif (self.__shape[_0]!=((_1 * (_1 + 1)) // 2)): # bld/grindsted/final/default/src/fusion/BaseVariable.monty:846:16-40
    raise mosek_fusion_DimensionError._ctor_S("Invalid shape for operation")
   _2=1
   for _3 in range(0,_0):
    _2 *= self.__shape[_3]
   _4=self.__shape[_0]
   _5=1
   for _6 in range((_0 + 1),int((self.__shape).shape[0])):
    _5 *= self.__shape[_6]
   _7=numpy.zeros(((int((self.__shape).shape[0]) + 1),), dtype=numpy.dtype(numpy.int32))
   for _8 in range(0,_0):
    _7[_8] = self.__shape[_8]
   _7[_0] = _1
   _7[(_0 + 1)] = _1
   for _9 in range((_0 + 1),int((self.__shape).shape[0])):
    _7[(_9 + 1)] = self.__shape[_9]
   if (self.__sparsity is None):
    _10=numpy.zeros(((((_2 * _1) * _1) * _5),), dtype=numpy.dtype(numpy.int64))
    _11=0
    for _12 in range(0,_2):
     for _13 in range(0,_1):
      for _14 in range(0,_1):
       for _15 in range(0,_5):
        if (_13 >= _14):
         _10[_11] = self.__basevar_nativeidxs[((((_12 * _4) * _5) + ((((_13 * (_13 + 1)) // 2) + _14) * _5)) + _15)]
        else:
         _10[_11] = self.__basevar_nativeidxs[((((_12 * _4) * _5) + ((((_14 * (_14 + 1)) // 2) + _13) * _5)) + _15)]
        _11 += 1
    return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(self.getModel(),_7,None,_10))
   else:
    _16=0
    for _17 in range(0,int((self.__sparsity).shape[0])):
     _18=((self.__sparsity[_17] // _5) % _4)
     _19=numpy.int32((((- 1) + mosek.fusion.Utils.Tools._sqrt_D(((1 + (2 * _18)) * (1 + (2 * _18))))) / 4))
     _20=(self.__sparsity[_17] - ((_19 * (_19 + 1)) // 2))
     if (_19==_20):
      _16 += 1
     else:
      _16 += 2
    _21=numpy.zeros((_16,), dtype=numpy.dtype(numpy.int64))
    _22=numpy.zeros((_16,), dtype=numpy.dtype(numpy.int64))
    _23=numpy.zeros((_16,), dtype=numpy.dtype(numpy.int64))
    for _24 in range(0,_16):
     _23[_24] = _24
    _25=0
    for _26 in range(0,int((self.__sparsity).shape[0])):
     _27=(self.__sparsity[_26] // (_4 * _5))
     _28=((self.__sparsity[_26] // _5) % _4)
     _29=(self.__sparsity[_26] % _5)
     _30=numpy.int32((((- 1) + mosek.fusion.Utils.Tools._sqrt_D(((1 + (2 * _28)) * (1 + (2 * _28))))) / 4))
     _31=(self.__sparsity[_26] - ((_30 * (_30 + 1)) // 2))
     if (_30==_31):
      _21[_25] = self.__basevar_nativeidxs[_26]
      _22[_25] = (((((_27 * _1) * _1) * _5) + (((_30 * _1) + _31) * _5)) + _29)
      _25 += 1
     else:
      _21[_25] = self.__basevar_nativeidxs[_26]
      _21[(_25 + 1)] = self.__basevar_nativeidxs[_26]
      _22[_25] = (((((_27 * _1) * _1) * _5) + (((_30 * _1) + _31) * _5)) + _29)
      _22[(_25 + 1)] = (((((_27 * _1) * _1) * _5) + (((_31 * _1) + _30) * _5)) + _29)
      _25 += 2
    mosek.fusion.CommonTools._argQsort__3J_3J_3JJJ(_23,_21,None,0,_16)
    return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(self.getModel(),_7,numpy.array([_22[_23[_32]] for _32 in range(0,_16)], dtype=numpy.dtype(numpy.int64)),numpy.array([_21[_23[_33]] for _33 in range(0,_16)], dtype=numpy.dtype(numpy.int64))))
  @staticmethod
  def _match_fromTril_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_fromTril_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _fromTril_alt_I(self,_t__0):
    return self._fromTril_I(numpy.int32(__0))
  def _fromTril_I(self,_0):
   return (self.fromTril(0,_0))
  @staticmethod
  def _match_tril_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_tril_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _tril_alt_II(self,_t__0,_t__1):
    return self._tril_II(numpy.int32(__0),numpy.int32(__1))
  def _tril_II(self,_0,_1):
   if ((_0 < 0) or ((_0 >= _1) or (_1 >= int((self.__shape).shape[0])))):
    raise mosek_fusion_DimensionError._ctor_S("Invalid dimension specification")
   else:
    if (self.__shape[_0]!=self.__shape[_1]):
     raise mosek_fusion_DimensionError._ctor_S("Operation only valid for square variables")
   _2=numpy.zeros(((int((self.__shape).shape[0]) - 1),), dtype=numpy.dtype(numpy.int32))
   for _3 in range(0,_0):
    _2[_3] = self.__shape[_3]
   _2[_0] = ((self.__shape[_0] * (self.__shape[_0] + 1)) // 2)
   for _4 in range((_0 + 1),_1):
    _2[_4] = self.__shape[_4]
   for _5 in range((_1 + 1),int((self.__shape).shape[0])):
    _2[(_5 - 1)] = self.__shape[_5]
   if (self.__sparsity is None):
    _6=1
    for _7 in range(0,_0):
     _6 *= self.__shape[_7]
    _8=self.__shape[_0]
    _9=1
    for _10 in range((_0 + 1),_1):
     _9 *= self.__shape[_10]
    _11=self.__shape[_1]
    _12=1
    for _13 in range((_1 + 1),int((self.__shape).shape[0])):
     _12 *= self.__shape[_13]
    _14=numpy.zeros(((((((_6 * _9) * _12) * _8) * (_8 + 1)) // 2),), dtype=numpy.dtype(numpy.int64))
    _15=0
    for _16 in range(0,_6):
     for _17 in range(0,_8):
      for _18 in range(0,(_17 + 1)):
       for _19 in range(0,_9):
        for _20 in range(0,_12):
         _14[_15] = self.__basevar_nativeidxs[(_20 + (_12 * (_18 + (_11 * (_19 + (_9 * (_17 + (_8 * _16))))))))]
         _15 += 1
    return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(self.getModel(),_2,None,_14))
   else:
    _21=1
    for _22 in range(0,_0):
     _21 *= self.__shape[_22]
    _23=self.__shape[_0]
    _24=1
    for _25 in range((_0 + 1),_1):
     _24 *= self.__shape[_25]
    _26=self.__shape[_1]
    _27=1
    for _28 in range((_1 + 1),int((self.__shape).shape[0])):
     _27 *= self.__shape[_28]
    _29=1
    _30=_27
    _31=(_30 * _26)
    _32=(_31 * _24)
    _33=(_32 * _23)
    _34=0
    for _35 in range(0,int((self.__sparsity).shape[0])):
     if (((self.__sparsity[_35] // _32) % _23) >= ((self.__sparsity[_35] // _30) % _26)):
      _34 += 1
    _36=1
    _37=_27
    _38=(_37 * _24)
    _39=(((_38 * _23) * (_23 + 1)) // 2)
    _40=numpy.zeros((_34,), dtype=numpy.dtype(numpy.int64))
    _41=numpy.zeros((_34,), dtype=numpy.dtype(numpy.int64))
    _42=numpy.zeros((_34,), dtype=numpy.dtype(numpy.int64))
    _43=0
    for _44 in range(0,int((self.__sparsity).shape[0])):
     if (((self.__sparsity[_44] // _32) % _23) >= ((self.__sparsity[_44] // _30) % _26)):
      _45=(self.__sparsity[_44] // _33)
      _46=((self.__sparsity[_44] // _32) % _23)
      _47=((self.__sparsity[_44] // _31) % _24)
      _48=((self.__sparsity[_44] // _30) % _26)
      _49=((self.__sparsity[_44] // _29) % _27)
      _41[_43] = self.__basevar_nativeidxs[_44]
      _42[_43] = ((((_39 * _45) + (_38 * (((_46 * (_46 + 1)) // 2) + _48))) + (_37 * _47)) + (_36 * _49))
      _43 += 1
    for _50 in range(0,_34):
     _40[_50] = _50
    mosek.fusion.CommonTools._argQsort__3J_3J_3JJJ(_40,_41,None,0,_34)
    _51=numpy.zeros((_34,), dtype=numpy.dtype(numpy.int64))
    _52=numpy.zeros((_34,), dtype=numpy.dtype(numpy.int64))
    for _53 in range(0,_34):
     _51[_53] = _41[_40[_53]]
    for _54 in range(0,_34):
     _52[_54] = _42[_40[_54]]
    return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(self.getModel(),_2,_52,_51))
  @staticmethod
  def _match_tril_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_tril_(*args):
    if len(args) != 0: return False
    return True
  def _tril_alt_(self,):
    return self._tril_()
  def _tril_(self,):
   return (self.tril(0,1))
  @staticmethod
  def _match_reshape_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_reshape_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  def _reshape_alt_III(self,_t__0,_t__1,_t__2):
    return self._reshape_III(numpy.int32(__0),numpy.int32(__1),numpy.int32(__2))
  def _reshape_III(self,_0,_1,_2):
   return (self.reshape(numpy.array([_0,_1,_2], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_reshape_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_reshape_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _reshape_alt_II(self,_t__0,_t__1):
    return self._reshape_II(numpy.int32(__0),numpy.int32(__1))
  def _reshape_II(self,_0,_1):
   return (self.reshape(numpy.array([_0,_1], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_reshape_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_reshape_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _reshape_alt_I(self,_t__0):
    return self._reshape_I(numpy.int32(__0))
  def _reshape_I(self,_0):
   return (self.reshape(numpy.array([_0], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_reshape__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_reshape__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _reshape_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._reshape__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _reshape__3I(self,_0):
   _1=1
   for _2 in range(0,int((_0).shape[0])):
    if (_0[_2] < 0):
     raise mosek_fusion_DimensionError._ctor_S("Invalid shape")
    _1 *= _0[_2]
   if (_1!=self.getSize()):
    raise mosek_fusion_LengthError._ctor_S("Shape size does not match variable size")
   return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(self.getModel(),numpy.array([_0[_3] for _3 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int32)),self.__sparsity,self.__basevar_nativeidxs))
  @staticmethod
  def _match_setLevel__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_setLevel__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  def _setLevel_alt__3D(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = self._setLevel__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _setLevel__3D(self,_0):
   if (self.__sparsity is None):
    if (int((_0).shape[0])!=int((self.__basevar_nativeidxs).shape[0])):
     raise mosek_fusion_LengthError._ctor_S("Invalid length of solution values vector")
    self.__model.setVariableValues(True,self.__basevar_nativeidxs,_0)
   else:
    if (int((_0).shape[0])!=self.getSize()):
     raise mosek_fusion_LengthError._ctor_S("Invalid length of solution values vector")
    _1=numpy.array([_0[self.__sparsity[_2]] for _2 in range(0,int((self.__basevar_nativeidxs).shape[0]))], dtype=numpy.dtype(numpy.float64))
    self.__model.setVariableValues(True,self.__basevar_nativeidxs,_1)
  @staticmethod
  def _match_getModel_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getModel_(*args):
    if len(args) != 0: return False
    return True
  def _getModel_alt_(self,):
    return self._getModel_()
  def _getModel_(self,):
   return (self.__model)
  @staticmethod
  def _match_getND_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getND_(*args):
    if len(args) != 0: return False
    return True
  def _getND_alt_(self,):
    return self._getND_()
  def _getND_(self,):
   return numpy.int32(int((self.__shape).shape[0]))
  @staticmethod
  def _match_getDim_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_getDim_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _getDim_alt_I(self,_t__0):
    return self._getDim_I(numpy.int32(__0))
  def _getDim_I(self,_0):
   return numpy.int32(self.__shape[_0])
  @staticmethod
  def _match_getShape_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getShape_(*args):
    if len(args) != 0: return False
    return True
  def _getShape_alt_(self,):
    return self._getShape_()
  def _getShape_(self,):
   return (mosek.fusion.Utils.Tools._arraycopy__3I(self.__shape))
  @staticmethod
  def _match_getSize_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getSize_(*args):
    if len(args) != 0: return False
    return True
  def _getSize_alt_(self,):
    return self._getSize_()
  def _getSize_(self,):
   _0=1
   for _1 in range(0,int((self.__shape).shape[0])):
    _0 *= self.__shape[_1]
   return numpy.int64(_0)
  @staticmethod
  def _match_dual_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_dual_(*args):
    if len(args) != 0: return False
    return True
  def _dual_alt_(self,):
    return self._dual_()
  def _dual_(self,):
   _0=numpy.zeros((int((self.__basevar_nativeidxs).shape[0]),), dtype=numpy.dtype(numpy.float64))
   self.__model.getVariableValues(False,self.__basevar_nativeidxs,_0,0)
   if (self.__sparsity is not None):
    _1=numpy.zeros((self.getSize(),), dtype=numpy.dtype(numpy.float64))
    for _2 in range(0,int((self.__basevar_nativeidxs).shape[0])):
     _1[self.__sparsity[_2]] = _0[_2]
    _0 = _1
   return (_0)
  @staticmethod
  def _match_level_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_level_(*args):
    if len(args) != 0: return False
    return True
  def _level_alt_(self,):
    return self._level_()
  def _level_(self,):
   _0=numpy.zeros((int((self.__basevar_nativeidxs).shape[0]),), dtype=numpy.dtype(numpy.float64))
   self.__model.getVariableValues(True,self.__basevar_nativeidxs,_0,0)
   if (self.__sparsity is not None):
    _1=numpy.zeros((self.getSize(),), dtype=numpy.dtype(numpy.float64))
    for _2 in range(0,int((self.__basevar_nativeidxs).shape[0])):
     _1[self.__sparsity[_2]] = _0[_2]
    _0 = _1
   return (_0)
  @staticmethod
  def _match_makeContinuous_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_makeContinuous_(*args):
    if len(args) != 0: return False
    return True
  def _makeContinuous_alt_(self,):
    return self._makeContinuous_()
  def _makeContinuous_(self,):
   self.make_continuous()
  @staticmethod
  def _match_makeInteger_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_makeInteger_(*args):
    if len(args) != 0: return False
    return True
  def _makeInteger_alt_(self,):
    return self._makeInteger_()
  def _makeInteger_(self,):
   self.make_integer()
  @staticmethod
  def _match_transpose_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_transpose_(*args):
    if len(args) != 0: return False
    return True
  def _transpose_alt_(self,):
    return self._transpose_()
  def _transpose_(self,):
   if (int((self.__shape).shape[0])==1):
    return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(self.getModel(),numpy.array([1,self.__shape[0]], dtype=numpy.dtype(numpy.int32)),self.__sparsity,self.__basevar_nativeidxs))
   elif (int((self.__shape).shape[0]) > 2): # bld/grindsted/final/default/src/fusion/BaseVariable.monty:635:16-30
    raise mosek_fusion_DimensionError._ctor_S("Invalid shape for operation")
   else:
    _0=numpy.zeros((int((self.__basevar_nativeidxs).shape[0]),), dtype=numpy.dtype(numpy.int64))
    _1=(None if ((self.__sparsity is None) ) else numpy.zeros((int((self.__basevar_nativeidxs).shape[0]),), dtype=numpy.dtype(numpy.int64)))
    if (self.__sparsity is None):
     _2=0
     for _3 in range(0,self.__shape[1]):
      for _4 in range(0,self.__shape[0]):
       _0[_2] = self.__basevar_nativeidxs[((_4 * self.__shape[1]) + _3)]
       _2 += 1
    else:
     _5=numpy.zeros(((self.__shape[1] + 1),), dtype=numpy.dtype(numpy.int32))
     _6=self.__shape[0]
     _7=self.__shape[1]
     for _8 in range(0,int((self.__sparsity).shape[0])):
      _5[((self.__sparsity[_8] % _7) + 1)] += 1
     for _9 in range(0,_7):
      _5[(_9 + 1)] += _5[_9]
     for _10 in range(0,int((self.__sparsity).shape[0])):
      _11=(self.__sparsity[_10] % _7)
      _0[_5[_11]] = self.__basevar_nativeidxs[_10]
      _1[_5[_11]] = ((self.__sparsity[_10] // _7) + ((self.__sparsity[_10] % _7) * _6))
      _5[_11] += 1
    return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(self.getModel(),numpy.array([self.__shape[1],self.__shape[0]], dtype=numpy.dtype(numpy.int32)),_1,_0))
  @staticmethod
  def _match_index_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_index_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  def _index_alt_III(self,_t__0,_t__1,_t__2):
    return self._index_III(numpy.int32(__0),numpy.int32(__1),numpy.int32(__2))
  def _index_III(self,_0,_1,_2):
   return (self.index(numpy.array([_0,_1,_2], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_index_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_index_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _index_alt_II(self,_t__0,_t__1):
    return self._index_II(numpy.int32(__0),numpy.int32(__1))
  def _index_II(self,_0,_1):
   return (self.index(numpy.array([_0,_1], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_index__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_index__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _index_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._index__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _index__3I(self,_0):
   _1=numpy.zeros((1,int((_0).shape[0]),), dtype=numpy.dtype(numpy.int32))
   for _2 in range(0,int((_0).shape[0])):
    _1[0,_2] = _0[_2]
   return (self.pick(_1).reshape(numpy.zeros((0,), dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_index_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_index_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _index_alt_I(self,_t__0):
    return self._index_I(numpy.int32(__0))
  def _index_I(self,_0):
   return (self.pick(numpy.array([_0], dtype=numpy.dtype(numpy.int32))).reshape(numpy.zeros((0,), dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_pick__3I_3I_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1) and __arg_match__3I__(_2))
  @staticmethod
  def _match_alt_pick__3I_3I_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3I__(_2))
  def _pick_alt__3I_3I_3I(self,_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3I_3I_3I(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _pick__3I_3I_3I(self,_0,_1,_2):
   if (int((self.__shape).shape[0])!=3):
    raise mosek_fusion_IndexError._ctor_S("Invalid index")
   if ((int((_0).shape[0])!=int((_1).shape[0])) or (int((_0).shape[0])!=int((_2).shape[0]))):
    raise mosek_fusion_LengthError._ctor_S("Mismatching argument lengths")
   _3=numpy.zeros((int((_0).shape[0]),3,), dtype=numpy.dtype(numpy.int32))
   for _4 in range(0,int((_0).shape[0])):
    _3[_4,0] = _0[_4]
    _3[_4,1] = _1[_4]
    _3[_4,2] = _2[_4]
   return (self.pick(_3))
  @staticmethod
  def _match_pick__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_pick__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  def _pick_alt__3I_3I(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _pick__3I_3I(self,_0,_1):
   if ((int((self.__shape).shape[0])!=2) or (int((_0).shape[0])!=int((_1).shape[0]))):
    raise mosek_fusion_IndexError._ctor_S("Invalid index")
   _2=numpy.zeros((int((_0).shape[0]),2,), dtype=numpy.dtype(numpy.int32))
   for _3 in range(0,int((_0).shape[0])):
    _2[_3,0] = _0[_3]
    _2[_3,1] = _1[_3]
   return (self.pick(_2))
  @staticmethod
  def _match_pick__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5I__(_0))
  @staticmethod
  def _match_alt_pick__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5I__(_0))
  def _pick_alt__3_5I(self,_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3_5I(_0)
   return _1_res
  def _pick__3_5I(self,_0):
   if (int((self.__shape).shape[0])!=int((_0).shape[1])):
    raise mosek_fusion_IndexError._ctor_S("Invalid index")
   _1=False
   for _2 in range(0,int((_0).shape[0])):
    for _3 in range(0,int((_0).shape[1])):
     if ((_0[_2,_3] < 0) or (_0[_2,_3] >= self.__shape[_3])):
      _1 = True
   if _1:
    raise mosek_fusion_IndexError._ctor_S("Invalid index")
   _4=int((self.__shape).shape[0])
   _5=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int64))
   _5[(_4 - 1)] = 1
   for _6 in range(1,_4):
    _5[((_4 - _6) - 1)] = (_5[(_4 - _6)] * self.__shape[(_4 - _6)])
   _7=numpy.array([int((_0).shape[0])], dtype=numpy.dtype(numpy.int32))
   _9=None
   if (self.__sparsity is None):
    _8 = numpy.zeros((int((_0).shape[0]),), dtype=numpy.dtype(numpy.int64))
    for _10 in range(0,int((_0).shape[0])):
     _11=0
     for _12 in range(0,_4):
      _11 += (_5[_12] * _0[_10,_12])
     _8[_10] = self.__basevar_nativeidxs[_11]
   else:
    _13=0
    for _14 in range(0,int((_0).shape[0])):
     _15=0
     for _16 in range(0,_4):
      _15 += (_5[_16] * _0[_14,_16])
     if (mosek.fusion.CommonTools._binarySearch__3JJ(self.__sparsity,_15) >= 0):
      _13 += 1
    _8 = numpy.zeros((_13,), dtype=numpy.dtype(numpy.int64))
    _9 = numpy.zeros((_13,), dtype=numpy.dtype(numpy.int64))
    _17=0
    for _18 in range(0,int((_0).shape[0])):
     _19=0
     for _20 in range(0,_4):
      _19 += (_5[_20] * _0[_18,_20])
     _21=mosek.fusion.CommonTools._binarySearch__3JJ(self.__sparsity,_19)
     if (_21 >= 0):
      _8[_17] = self.__basevar_nativeidxs[_21]
      _9[_17] = _18
      _17 += 1
    if (_13==int((_0).shape[0])):
     _9 = None
   return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(self.getModel(),_7,_9,_8))
  @staticmethod
  def _match_pick__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_pick__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _pick_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _pick__3I(self,_0):
   if (int((self.__shape).shape[0])!=1):
    raise mosek_fusion_IndexError._ctor_S("Invalid index")
   _1=False
   for _2 in range(0,int((_0).shape[0])):
    if ((_0[_2] < 0) or (_0[_2] >= self.__shape[0])):
     _1 = True
   if _1:
    raise mosek_fusion_IndexError._ctor_S("Invalid index")
   _4=None
   if (self.__sparsity is None):
    _3 = numpy.array([self.__basevar_nativeidxs[_0[_5]] for _5 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int64))
   else:
    _6=0
    for _7 in range(0,int((_0).shape[0])):
     if (mosek.fusion.CommonTools._binarySearch__3JJ(self.__sparsity,_0[_7]) >= 0):
      _6 += 1
    _3 = numpy.zeros((_6,), dtype=numpy.dtype(numpy.int64))
    _4 = numpy.zeros((_6,), dtype=numpy.dtype(numpy.int64))
    _8=0
    for _9 in range(0,int((_0).shape[0])):
     _10=mosek.fusion.CommonTools._binarySearch__3JJ(self.__sparsity,_0[_9])
     if (_10 >= 0):
      _4[_8] = _9
      _3[_8] = self.__basevar_nativeidxs[_10]
      _8 += 1
    if (_6==int((_0).shape[0])):
     _4 = None
   return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(self.getModel(),numpy.array([int((_0).shape[0])], dtype=numpy.dtype(numpy.int32)),_4,_3))
  @staticmethod
  def _match_antidiag_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_antidiag_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _antidiag_alt_I(self,_t__0):
    return self._antidiag_I(numpy.int32(__0))
  def _antidiag_I(self,_0):
   if (int((self.__shape).shape[0])!=2):
    raise mosek_fusion_DimensionError._ctor_S("antidiag() only works on two-dimensional objects")
   elif ((_0 >= self.__shape[1]) or ((- _0) >= self.__shape[2])): # bld/grindsted/final/default/src/fusion/BaseVariable.monty:450:16-55
    raise mosek_fusion_IndexError._ctor_S("Diagonal index out of bounds")
   if (_0 >= 0):
    return (self.__general_1diag__3I_3II(numpy.array([0,((self.__shape[1] - 1) - _0)], dtype=numpy.dtype(numpy.int32)),numpy.array([1,(- 1)], dtype=numpy.dtype(numpy.int32)),(self.__shape[0] if ((self.__shape[0] < (self.__shape[1] - _0)) ) else (self.__shape[1] - _0))))
   else:
    return (self.__general_1diag__3I_3II(numpy.array([(- _0),(self.__shape[1] - 1)], dtype=numpy.dtype(numpy.int32)),numpy.array([1,(- 1)], dtype=numpy.dtype(numpy.int32)),(self.__shape[1] if ((self.__shape[1] < (self.__shape[0] + _0)) ) else (self.__shape[0] + _0))))
  @staticmethod
  def _match_antidiag_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_antidiag_(*args):
    if len(args) != 0: return False
    return True
  def _antidiag_alt_(self,):
    return self._antidiag_()
  def _antidiag_(self,):
   if (int((self.__shape).shape[0])!=2):
    raise mosek_fusion_DimensionError._ctor_S("antidiag() only works on two-dimensional objects")
   return (self.__general_1diag__3I_3II(numpy.array([0,(self.__shape[1] - 1)], dtype=numpy.dtype(numpy.int32)),numpy.array([1,(- 1)], dtype=numpy.dtype(numpy.int32)),(self.__shape[0] if ((self.__shape[0] < self.__shape[1]) ) else self.__shape[1])))
  @staticmethod
  def _match_diag_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_diag_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _diag_alt_I(self,_t__0):
    return self._diag_I(numpy.int32(__0))
  def _diag_I(self,_0):
   if (int((self.__shape).shape[0])!=2):
    raise mosek_fusion_DimensionError._ctor_S("diag() only works on two-dimensional objects")
   elif ((_0 >= self.__shape[1]) or ((- _0) >= self.__shape[2])): # bld/grindsted/final/default/src/fusion/BaseVariable.monty:429:16-55
    raise mosek_fusion_IndexError._ctor_S("Diagonal index out of bounds")
   if (_0 >= 0):
    return (self.__general_1diag__3I_3II(numpy.array([0,_0], dtype=numpy.dtype(numpy.int32)),numpy.array([1,1], dtype=numpy.dtype(numpy.int32)),(self.__shape[0] if ((self.__shape[0] < (self.__shape[1] - _0)) ) else (self.__shape[1] - _0))))
   else:
    return (self.__general_1diag__3I_3II(numpy.array([(- _0),0], dtype=numpy.dtype(numpy.int32)),numpy.array([1,1], dtype=numpy.dtype(numpy.int32)),(self.__shape[1] if ((self.__shape[1] < (self.__shape[0] + _0)) ) else (self.__shape[0] + _0))))
  @staticmethod
  def _match_diag_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_diag_(*args):
    if len(args) != 0: return False
    return True
  def _diag_alt_(self,):
    return self._diag_()
  def _diag_(self,):
   if (int((self.__shape).shape[0])!=2):
    raise mosek_fusion_DimensionError._ctor_S("diag() only works on two-dimensional objects")
   return (self.__general_1diag__3I_3II(numpy.array([0,0], dtype=numpy.dtype(numpy.int32)),numpy.array([1,1], dtype=numpy.dtype(numpy.int32)),(self.__shape[0] if ((self.__shape[0] < self.__shape[1]) ) else self.__shape[1])))
  def __general_1diag_alt__3I_3II(self,_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.int32(_t__2)
   _1_res = self.__general_1diag__3I_3II(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __general_1diag__3I_3II(self,_0,_1,_2):
   _3=int((self.__shape).shape[0])
   if ((_3!=int((_0).shape[0])) or (_3!=int((_1).shape[0]))):
    raise mosek_fusion_DimensionError._ctor_S("Invalid start or step definition")
   for _4 in range(0,_3):
    if ((_0[_4] < 0) or (_0[_4] >= self.__shape[_4])):
     raise mosek_fusion_LengthError._ctor_S("Start element is out of bounds")
   _5=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int64))
   _5[(_3 - 1)] = 1
   for _6 in range(1,_3):
    _5[((_3 - _6) - 1)] = (_5[(_3 - _6)] * self.__shape[(_3 - _6)])
   _7=0
   for _8 in range(0,int((_1).shape[0])):
    _7 += (_0[_8] * _5[_8])
   _9=0
   for _10 in range(0,int((_1).shape[0])):
    _9 += (_1[_10] * _5[_10])
   if (self.__sparsity is None):
    _11=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int64))
    for _12 in range(0,_2):
     _11[_12] = self.__basevar_nativeidxs[(_7 + (_9 * _12))]
    return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(self.getModel(),numpy.array([_2], dtype=numpy.dtype(numpy.int32)),None,_11))
   else:
    _13=0
    for _14 in range(0,_2):
     _15=(_7 + (_9 * _14))
     _16=mosek.fusion.CommonTools._binarySearch__3JJ(self.__sparsity,_15)
     if (_16 >= 0):
      _13 += 1
    _17=numpy.zeros((_13,), dtype=numpy.dtype(numpy.int64))
    _18=numpy.zeros((_13,), dtype=numpy.dtype(numpy.int64))
    _19=0
    for _20 in range(0,_2):
     _17[_20] = self.__basevar_nativeidxs[(_7 + (_9 * _20))]
     _21=(_7 + (_9 * _20))
     _22=mosek.fusion.CommonTools._binarySearch__3JJ(self.__sparsity,_21)
     if (_22 >= 0):
      _18[_19] = _20
      _17[_19] = self.__basevar_nativeidxs[_22]
      _19 += 1
    return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(self.getModel(),numpy.array([_2], dtype=numpy.dtype(numpy.int32)),_18,_17))
  @staticmethod
  def _match_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  def _slice_alt__3I_3I(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self._slice__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _slice__3I_3I(self,_0,_1):
   if (int((_0).shape[0])!=int((_1).shape[0])):
    raise mosek_fusion_SliceError._ctor_S("Invalid slice")
   elif (int((_0).shape[0])!=int((self.__shape).shape[0])): # bld/grindsted/final/default/src/fusion/BaseVariable.monty:265:16-40
    raise mosek_fusion_DimensionError._ctor_S("Variable shape and slice do not match")
   else:
    for _2 in range(0,int((self.__shape).shape[0])):
     if ((_0[_2] < 0) or (_1[_2] > self.__shape[_2])):
      raise mosek_fusion_IndexError._ctor_S("Slice is out of bounds")
     elif (_0[_2] > _1[_2]): # bld/grindsted/final/default/src/fusion/BaseVariable.monty:271:20-38
      raise mosek_fusion_SliceError._ctor_S("Invalid slice")
    _3=int((self.__shape).shape[0])
    _4=numpy.array([(_1[_5] - _0[_5]) for _5 in range(0,_3)], dtype=numpy.dtype(numpy.int32))
    _6=1
    for _7 in range(0,_3):
     _6 *= (_1[_7] - _0[_7])
    if (_6==0):
     return (mosek_fusion_NilVariable._ctor_())
    elif (self.__sparsity is not None): # bld/grindsted/final/default/src/fusion/BaseVariable.monty:280:18-34
     _8=0
     _9=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
     for _10 in range(0,int((self.__sparsity).shape[0])):
      _11=self.__sparsity[_10]
      for _12 in range(1,_3):
       _9[(_3 - _12)] = numpy.int32((_11 % self.__shape[(_3 - _12)]))
       _11 /= self.__shape[(_3 - _12)]
      _9[0] = numpy.int32(_11)
      _13=0
      while ((_9[_13] >= _0[_13]) and (_9[_13] < _1[_13])):
       _13 += 1
      if (_13==_3):
       _8 += 1
     _14=0
     _15=numpy.zeros((_8,), dtype=numpy.dtype(numpy.int64))
     _16=numpy.zeros((_8,), dtype=numpy.dtype(numpy.int64))
     for _17 in range(0,int((self.__sparsity).shape[0])):
      _18=self.__sparsity[_17]
      for _19 in range(1,_3):
       _9[(_3 - _19)] = numpy.int32((_18 % self.__shape[(_3 - _19)]))
       _18 /= self.__shape[(_3 - _19)]
      _9[0] = numpy.int32(_18)
      _20=0
      while ((_9[_20] >= _0[_20]) and (_9[_20] < _1[_20])):
       _20 += 1
      if (_20==_3):
       _15[_14] = self.__basevar_nativeidxs[_17]
       _21=0
       for _22 in range(0,_3):
        _21 = ((_21 * _4[_22]) + (_9[_22] - _0[_22]))
       _16[_14] = _21
       _14 += 1
     return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(self.getModel(),_4,_16,_15))
    else:
     _23=numpy.zeros((_6,), dtype=numpy.dtype(numpy.int64))
     _24=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
     _24[(_3 - 1)] = 1
     for _25 in range(1,_3):
      _24[((_3 - _25) - 1)] = (_24[(_3 - _25)] * self.__shape[(_3 - _25)])
     _26=0
     for _27 in range(0,_3):
      _26 += (_0[_27] * _24[_27])
     _28=numpy.array([_26 for _29 in range(0,_3)], dtype=numpy.dtype(numpy.int32))
     _30=numpy.array([_0[_31] for _31 in range(0,_3)], dtype=numpy.dtype(numpy.int32))
     for _32 in range(0,_6):
      _23[_32] = self.__basevar_nativeidxs[_28[(_3 - 1)]]
      _30[(_3 - 1)] += 1
      _28[(_3 - 1)] += _24[(_3 - 1)]
      if (_30[(_3 - 1)] >= _1[(_3 - 1)]):
       _33=(_3 - 1)
       while ((_33 > 0) and (_30[_33] >= _1[_33])):
        _30[_33] = _0[_33]
        _30[(_33 - 1)] += 1
        _28[(_33 - 1)] += _24[(_33 - 1)]
        _33 -= 1
       for _34 in range((_33 + 1),_3):
        _28[_34] = _28[_33]
     return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(self.getModel(),_4,None,_23))
  @staticmethod
  def _match_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _slice_alt_II(self,_t__0,_t__1):
    return self._slice_II(numpy.int32(__0),numpy.int32(__1))
  def _slice_II(self,_0,_1):
   if (int((self.__shape).shape[0])!=1):
    raise mosek_fusion_DimensionError._ctor_S("Variable shape and slice do not match")
   if ((_0==0) and (_1==self.__shape[0])):
    return (self)
   elif ((_0 < 0) or (_1 > self.__shape[0])): # bld/grindsted/final/default/src/fusion/BaseVariable.monty:234:16-44
    raise mosek_fusion_IndexError._ctor_S("Slice is out of bounds")
   elif (_0 > _1): # bld/grindsted/final/default/src/fusion/BaseVariable.monty:236:16-28
    raise mosek_fusion_SliceError._ctor_S("Invalid slice")
   elif (_0==_1): # bld/grindsted/final/default/src/fusion/BaseVariable.monty:238:16-29
    return (mosek_fusion_NilVariable._ctor_())
   elif (self.__sparsity is not None): # bld/grindsted/final/default/src/fusion/BaseVariable.monty:240:16-32
    _2=(_1 - _0)
    _3=0
    _4=mosek.fusion.CommonTools._binarySearchL__3JJ(self.__sparsity,_0)
    _5=mosek.fusion.CommonTools._binarySearchL__3JJ(self.__sparsity,_1)
    return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(self.getModel(),numpy.array([_2], dtype=numpy.dtype(numpy.int32)),numpy.array([(self.__sparsity[_6] - _0) for _6 in range(_4,_5)], dtype=numpy.dtype(numpy.int64)),numpy.array([self.__basevar_nativeidxs[_7] for _7 in range(_4,_5)], dtype=numpy.dtype(numpy.int64))))
   else:
    _8=(_1 - _0)
    _9=numpy.zeros((_8,), dtype=numpy.dtype(numpy.int64))
    mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(self.__basevar_nativeidxs,_0,_9,0,_8)
    return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(self.getModel(),numpy.array([_8], dtype=numpy.dtype(numpy.int32)),None,_9))
  @staticmethod
  def _match_asExpr_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_asExpr_(*args):
    if len(args) != 0: return False
    return True
  def _asExpr_alt_(self,):
    return self._asExpr_()
  def _asExpr_(self,):
   return (mosek_fusion_ExprFromVar._ctor_Lmosek_4fusion_4Variable_2(self))
  @staticmethod
  def _match_inst_I_3JI_3J(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_I__(_0) and __arg_match__3J__(_1) and __arg_match_I__(_2) and __arg_match__3J__(_3))
  @staticmethod
  def _match_alt_inst_I_3JI_3J(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match_I__(_2) and __arg_alt_match__3J__(_3))
  def _inst_alt_I_3JI_3J(self,_t__0,_t__1,_t__2,_t__3):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.int32(_t__2)
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.int64))
   _1_res = self._inst_I_3JI_3J(_0,_1,_2,_3)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _inst_I_3JI_3J(self,_0,_1,_2,_3):
   _4=(self.__basevar_nativeidxs)
   _5=(self.__sparsity)
   if (_5 is None):
    for _6 in range(0,int((_4).shape[0])):
     _1[(_6 + _0)] = _6
     _3[(_6 + _2)] = _4[_6]
   else:
    for _7 in range(0,int(((self.__sparsity)).shape[0])):
     _1[(_0 + _7)] = _5[_7]
     _3[(_7 + _2)] = _4[_7]
   return numpy.int32(int(((self.__basevar_nativeidxs)).shape[0]))
  @staticmethod
  def _match_numInst_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_numInst_(*args):
    if len(args) != 0: return False
    return True
  def _numInst_alt_(self,):
    return self._numInst_()
  def _numInst_(self,):
   return numpy.int32(int((self.__basevar_nativeidxs).shape[0]))
  @staticmethod
  def _match_inst_I_3J(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match__3J__(_1))
  @staticmethod
  def _match_alt_inst_I_3J(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3J__(_1))
  def _inst_alt_I_3J(self,_t__0,_t__1):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _1_res = self._inst_I_3J(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _inst_I_3J(self,_0,_1):
   if (self.__sparsity is None):
    for _2 in range(0,int((self.__basevar_nativeidxs).shape[0])):
     _1[(_0 + _2)] = self.__basevar_nativeidxs[_2]
   else:
    _3=self.getShape()
    _4=1
    for _5 in range(0,int((_3).shape[0])):
     _4 *= _3[_5]
    for _6 in range(0,_4):
     _1[(_0 + _6)] = 0
    for _7 in range(0,int((self.__sparsity).shape[0])):
     _1[(_0 + self.__sparsity[_7])] = self.__basevar_nativeidxs[_7]
  @staticmethod
  def _match_set_1values__3DZ(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match_Z__(_1))
  @staticmethod
  def _match_alt_set_1values__3DZ(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match_Z__(_1))
  def _set_1values_alt__3DZ(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = self._set_1values__3DZ(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _set_1values__3DZ(self,_0,_1):
   if (self.__sparsity is None):
    self.getModel().setVariableValues(_1,self.__basevar_nativeidxs,_0)
   else:
    _2=1
    for _3 in range(0,int((self.__shape).shape[0])):
     _2 *= self.__shape[_3]
    _4=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int64))
    for _5 in range(0,int((self.__basevar_nativeidxs).shape[0])):
     _4[self.__sparsity[_5]] = self.__basevar_nativeidxs[_5]
    self.getModel().setVariableValues(_1,_4,_0)
  def _dual_1lu_alt_I_3DZ(self,_t__0,_t__1,_t__2):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _2=_t__2
   _1_res = self._dual_1lu_I_3DZ(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _dual_1lu_I_3DZ(self,_0,_1,_2):
   if (self.__sparsity is None):
    self.__model.getVariableDuals(_2,self.__basevar_nativeidxs,_1,_0)
   else:
    _3=numpy.zeros((self.getSize(),), dtype=numpy.dtype(numpy.int64))
    for _4 in range(0,int((self.__sparsity).shape[0])):
     _3[self.__sparsity[_4]] = self.__basevar_nativeidxs[_4]
    self.__model.getVariableDuals(_2,_3,_1,_0)
  @staticmethod
  def _match_values_I_3DZ(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match__3D__(_1) and __arg_match_Z__(_2))
  @staticmethod
  def _match_alt_values_I_3DZ(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3D__(_1) and __arg_alt_match_Z__(_2))
  def _values_alt_I_3DZ(self,_t__0,_t__1,_t__2):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _2=_t__2
   _1_res = self._values_I_3DZ(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _values_I_3DZ(self,_0,_1,_2):
   if (self.__sparsity is None):
    self.__model.getVariableValues(_2,self.__basevar_nativeidxs,_1,_0)
   else:
    _3=numpy.zeros((self.getSize(),), dtype=numpy.dtype(numpy.int64))
    for _4 in range(0,int((self.__sparsity).shape[0])):
     _3[self.__sparsity[_4]] = self.__basevar_nativeidxs[_4]
    self.__model.getVariableValues(_2,_3,_1,_0)
  @staticmethod
  def _match_make_1continuous_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_make_1continuous_(*args):
    if len(args) != 0: return False
    return True
  def _make_1continuous_alt_(self,):
    return self._make_1continuous_()
  def _make_1continuous_(self,):
   self.getModel()._make_1continuous__3J(self.__basevar_nativeidxs)
  @staticmethod
  def _match_make_1integer_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_make_1integer_(*args):
    if len(args) != 0: return False
    return True
  def _make_1integer_alt_(self,):
    return self._make_1integer_()
  def _make_1integer_(self,):
   self.getModel()._make_1integer__3J(self.__basevar_nativeidxs)
 return BaseVariable
mosek_fusion_BaseVariable=__mk_mosek_fusion_BaseVariable()
del __mk_mosek_fusion_BaseVariable
def __mk_mosek_fusion_SliceVariable():
 class SliceVariable(mosek_fusion_BaseVariable):
  __slots__ = ['_SliceVariable__shape','_SliceVariable__sparsity','_SliceVariable__nativeidxs']
  def __repr__(self): return 'mosek.fusion.SliceVariable'
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(m,shape,sparsity,nativeidxs):
    o = SliceVariable.__new__(SliceVariable)
    o._ctor_init_Lmosek_4fusion_4Model_2_3I_3J_3J(m,shape,sparsity,nativeidxs)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(*args):
    if len(args) != 4: return False
    m,shape,sparsity,nativeidxs, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(m) and __arg_match__3I__(shape) and __arg_match__3J__(sparsity) and __arg_match__3J__(nativeidxs))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(*args):
    if len(args) != 4: return False
    m,shape,sparsity,nativeidxs, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(m) and __arg_alt_match__3I__(shape) and __arg_alt_match__3J__(sparsity) and __arg_alt_match__3J__(nativeidxs))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2_3I_3J_3J(self,m,shape,sparsity,nativeidxs):
    self._ctor_init_Lmosek_4fusion_4Model_2_3I_3J_3J(m,numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.array(sparsity,dtype=numpy.dtype(numpy.int64)),numpy.array(nativeidxs,dtype=numpy.dtype(numpy.int64)))
  def _ctor_init_Lmosek_4fusion_4Model_2_3I_3J_3J(self,m,shape,sparsity,nativeidxs):
   mosek_fusion_BaseVariable._ctor_init_Lmosek_4fusion_4Model_2_3I_3J_3J(self,m,shape,sparsity,nativeidxs)
   (self.__nativeidxs) = nativeidxs
   (self.__sparsity) = sparsity
   (self.__shape) = shape
  @staticmethod
  def _ctor_Lmosek_4fusion_4SliceVariable_2(v):
    o = SliceVariable.__new__(SliceVariable)
    o._ctor_init_Lmosek_4fusion_4SliceVariable_2(v)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4SliceVariable_2(*args):
    if len(args) != 1: return False
    v, = args
    return (__arg_match_Lmosek_4fusion_4SliceVariable_2__(v))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4SliceVariable_2(*args):
    if len(args) != 1: return False
    v, = args
    return (__arg_alt_match_Lmosek_4fusion_4SliceVariable_2__(v))
  def _ctor_alt_init_Lmosek_4fusion_4SliceVariable_2(self,v):
    self._ctor_init_Lmosek_4fusion_4SliceVariable_2(v)
  def _ctor_init_Lmosek_4fusion_4SliceVariable_2(self,v):
   mosek_fusion_BaseVariable._ctor_init_Lmosek_4fusion_4BaseVariable_2Lmosek_4fusion_4Model_2(self,v,v.getModel())
   (self.__nativeidxs) = (v.__nativeidxs)
   (self.__sparsity) = (v.__sparsity)
   (self.__shape) = (v.__shape)
 return SliceVariable
mosek_fusion_SliceVariable=__mk_mosek_fusion_SliceVariable()
del __mk_mosek_fusion_SliceVariable
def __mk_mosek_fusion_BoundInterfaceVariable():
 class BoundInterfaceVariable(mosek_fusion_SliceVariable):
  __slots__ = ['_BoundInterfaceVariable__islower']
  def antidiag(self,*args):
    if False: pass
    elif mosek_fusion_BoundInterfaceVariable._match_antidiag_(*args): 
      return self._antidiag_(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_alt_antidiag_(*args): 
      return self._antidiag_alt_(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_antidiag_I(*args): 
      return self._antidiag_I(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_alt_antidiag_I(*args): 
      return self._antidiag_alt_I(*args)
    else:
      raise ValueError('Invalid argument list antidiag('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BoundInterfaceVariable.antidiag()\n\tmosek.fusion.BoundInterfaceVariable.antidiag(int32)')
  def diag(self,*args):
    if False: pass
    elif mosek_fusion_BoundInterfaceVariable._match_diag_(*args): 
      return self._diag_(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_alt_diag_(*args): 
      return self._diag_alt_(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_diag_I(*args): 
      return self._diag_I(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_alt_diag_I(*args): 
      return self._diag_alt_I(*args)
    else:
      raise ValueError('Invalid argument list diag('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BoundInterfaceVariable.diag()\n\tmosek.fusion.BoundInterfaceVariable.diag(int32)')
  def pick(self,*args):
    if False: pass
    elif mosek_fusion_BoundInterfaceVariable._match_pick__3I(*args): 
      return self._pick__3I(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_alt_pick__3I(*args): 
      return self._pick_alt__3I(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_pick__3_5I(*args): 
      return self._pick__3_5I(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_alt_pick__3_5I(*args): 
      return self._pick_alt__3_5I(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_pick__3I_3I(*args): 
      return self._pick__3I_3I(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_alt_pick__3I_3I(*args): 
      return self._pick_alt__3I_3I(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_pick__3I_3I_3I(*args): 
      return self._pick__3I_3I_3I(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_alt_pick__3I_3I_3I(*args): 
      return self._pick_alt__3I_3I_3I(*args)
    else:
      raise ValueError('Invalid argument list pick('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BoundInterfaceVariable.pick(array(int32,ndim=1))\n\tmosek.fusion.BoundInterfaceVariable.pick(array(int32,ndim=2))\n\tmosek.fusion.BoundInterfaceVariable.pick(array(int32,ndim=1),array(int32,ndim=1))\n\tmosek.fusion.BoundInterfaceVariable.pick(array(int32,ndim=1),array(int32,ndim=1),array(int32,ndim=1))')
  def dual(self,*args):
    if False: pass
    elif mosek_fusion_BoundInterfaceVariable._match_dual_(*args): 
      return self._dual_(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_alt_dual_(*args): 
      return self._dual_alt_(*args)
    else:
      raise ValueError('Invalid argument list dual('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BoundInterfaceVariable.dual()')
  def transpose(self,*args):
    if False: pass
    elif mosek_fusion_BoundInterfaceVariable._match_transpose_(*args): 
      return self._transpose_(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_alt_transpose_(*args): 
      return self._transpose_alt_(*args)
    else:
      raise ValueError('Invalid argument list transpose('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BoundInterfaceVariable.transpose()')
  def slice(self,*args):
    if False: pass
    elif mosek_fusion_BoundInterfaceVariable._match_slice_II(*args): 
      return self._slice_II(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_alt_slice_II(*args): 
      return self._slice_alt_II(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_slice__3I_3I(*args): 
      return self._slice__3I_3I(*args)
    elif mosek_fusion_BoundInterfaceVariable._match_alt_slice__3I_3I(*args): 
      return self._slice_alt__3I_3I(*args)
    else:
      raise ValueError('Invalid argument list slice('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BoundInterfaceVariable.slice(int32,int32)\n\tmosek.fusion.BoundInterfaceVariable.slice(array(int32,ndim=1),array(int32,ndim=1))')
  def __repr__(self): return 'mosek.fusion.BoundInterfaceVariable'
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2_3I_3J_3JZ(m,shape,sparsity,nativeidxs,islower):
    o = BoundInterfaceVariable.__new__(BoundInterfaceVariable)
    o._ctor_init_Lmosek_4fusion_4Model_2_3I_3J_3JZ(m,shape,sparsity,nativeidxs,islower)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2_3I_3J_3JZ(*args):
    if len(args) != 5: return False
    m,shape,sparsity,nativeidxs,islower, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(m) and __arg_match__3I__(shape) and __arg_match__3J__(sparsity) and __arg_match__3J__(nativeidxs) and __arg_match_Z__(islower))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2_3I_3J_3JZ(*args):
    if len(args) != 5: return False
    m,shape,sparsity,nativeidxs,islower, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(m) and __arg_alt_match__3I__(shape) and __arg_alt_match__3J__(sparsity) and __arg_alt_match__3J__(nativeidxs) and __arg_alt_match_Z__(islower))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2_3I_3J_3JZ(self,m,shape,sparsity,nativeidxs,islower):
    self._ctor_init_Lmosek_4fusion_4Model_2_3I_3J_3JZ(m,numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.array(sparsity,dtype=numpy.dtype(numpy.int64)),numpy.array(nativeidxs,dtype=numpy.dtype(numpy.int64)),islower)
  def _ctor_init_Lmosek_4fusion_4Model_2_3I_3J_3JZ(self,m,shape,sparsity,nativeidxs,islower):
   mosek_fusion_SliceVariable._ctor_init_Lmosek_4fusion_4Model_2_3I_3J_3J(self,m,shape,sparsity,nativeidxs)
   (self.__islower) = islower
  @staticmethod
  def _ctor_Lmosek_4fusion_4SliceVariable_2Z(v,islower):
    o = BoundInterfaceVariable.__new__(BoundInterfaceVariable)
    o._ctor_init_Lmosek_4fusion_4SliceVariable_2Z(v,islower)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4SliceVariable_2Z(*args):
    if len(args) != 2: return False
    v,islower, = args
    return (__arg_match_Lmosek_4fusion_4SliceVariable_2__(v) and __arg_match_Z__(islower))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4SliceVariable_2Z(*args):
    if len(args) != 2: return False
    v,islower, = args
    return (__arg_alt_match_Lmosek_4fusion_4SliceVariable_2__(v) and __arg_alt_match_Z__(islower))
  def _ctor_alt_init_Lmosek_4fusion_4SliceVariable_2Z(self,v,islower):
    self._ctor_init_Lmosek_4fusion_4SliceVariable_2Z(v,islower)
  def _ctor_init_Lmosek_4fusion_4SliceVariable_2Z(self,v,islower):
   mosek_fusion_SliceVariable._ctor_init_Lmosek_4fusion_4SliceVariable_2(self,v)
   (self.__islower) = islower
  @staticmethod
  def _match_dual_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_dual_(*args):
    if len(args) != 0: return False
    return True
  def _dual_alt_(self,):
    return self._dual_()
  def _dual_(self,):
   _0=numpy.zeros((self.getSize(),), dtype=numpy.dtype(numpy.float64))
   self._dual_1lu_I_3DZ(0,_0,self.__islower)
   return (_0)
  @staticmethod
  def _match_transpose_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_transpose_(*args):
    if len(args) != 0: return False
    return True
  def _transpose_alt_(self,):
    return self._transpose_()
  def _transpose_(self,):
   return (self.__from_1_Lmosek_4fusion_4Variable_2(mosek_fusion_BaseVariable._transpose_(self)))
  @staticmethod
  def _match_pick__3I_3I_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1) and __arg_match__3I__(_2))
  @staticmethod
  def _match_alt_pick__3I_3I_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3I__(_2))
  def _pick_alt__3I_3I_3I(self,_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3I_3I_3I(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _pick__3I_3I_3I(self,_0,_1,_2):
   return (self.__from_1_Lmosek_4fusion_4Variable_2(mosek_fusion_BaseVariable._pick__3I_3I_3I(self,_0,_1,_2)))
  @staticmethod
  def _match_pick__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_pick__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  def _pick_alt__3I_3I(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _pick__3I_3I(self,_0,_1):
   return (self.__from_1_Lmosek_4fusion_4Variable_2(mosek_fusion_BaseVariable._pick__3I_3I(self,_0,_1)))
  @staticmethod
  def _match_pick__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5I__(_0))
  @staticmethod
  def _match_alt_pick__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5I__(_0))
  def _pick_alt__3_5I(self,_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3_5I(_0)
   return _1_res
  def _pick__3_5I(self,_0):
   return (self.__from_1_Lmosek_4fusion_4Variable_2(mosek_fusion_BaseVariable._pick__3_5I(self,_0)))
  @staticmethod
  def _match_pick__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_pick__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _pick_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _pick__3I(self,_0):
   return (self.__from_1_Lmosek_4fusion_4Variable_2(mosek_fusion_BaseVariable._pick__3I(self,_0)))
  @staticmethod
  def _match_antidiag_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_antidiag_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _antidiag_alt_I(self,_t__0):
    return self._antidiag_I(numpy.int32(__0))
  def _antidiag_I(self,_0):
   return (self.__from_1_Lmosek_4fusion_4Variable_2(mosek_fusion_BaseVariable._antidiag_I(self,_0)))
  @staticmethod
  def _match_antidiag_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_antidiag_(*args):
    if len(args) != 0: return False
    return True
  def _antidiag_alt_(self,):
    return self._antidiag_()
  def _antidiag_(self,):
   return (self.__from_1_Lmosek_4fusion_4Variable_2(mosek_fusion_BaseVariable._antidiag_(self)))
  @staticmethod
  def _match_diag_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_diag_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _diag_alt_I(self,_t__0):
    return self._diag_I(numpy.int32(__0))
  def _diag_I(self,_0):
   return (self.__from_1_Lmosek_4fusion_4Variable_2(mosek_fusion_BaseVariable._diag_I(self,_0)))
  @staticmethod
  def _match_diag_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_diag_(*args):
    if len(args) != 0: return False
    return True
  def _diag_alt_(self,):
    return self._diag_()
  def _diag_(self,):
   return (self.__from_1_Lmosek_4fusion_4Variable_2(mosek_fusion_BaseVariable._diag_(self)))
  @staticmethod
  def _match_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  def _slice_alt__3I_3I(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self._slice__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _slice__3I_3I(self,_0,_1):
   return (self.__from_1_Lmosek_4fusion_4Variable_2(mosek_fusion_BaseVariable._slice__3I_3I(self,_0,_1)))
  @staticmethod
  def _match_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _slice_alt_II(self,_t__0,_t__1):
    return self._slice_II(numpy.int32(__0),numpy.int32(__1))
  def _slice_II(self,_0,_1):
   return (self.__from_1_Lmosek_4fusion_4Variable_2(mosek_fusion_BaseVariable._slice_II(self,_0,_1)))
  def __from_1_alt_Lmosek_4fusion_4Variable_2(self,_t__0):
    return self.__from_1_Lmosek_4fusion_4Variable_2(_0)
  def __from_1_Lmosek_4fusion_4Variable_2(self,_0):
   _1=self.getShape()
   _2=_0.numInst()
   _3=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int64))
   _4=None
   if (_0.getSize()==_2):
    _0.inst(0,_3)
   else:
    _4 = numpy.zeros((_2,), dtype=numpy.dtype(numpy.int64))
    _0.inst(0,_4,0,_3)
   return (mosek_fusion_BoundInterfaceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3JZ(_0.getModel(),_1,_4,_3,self.__islower))
 return BoundInterfaceVariable
mosek_fusion_BoundInterfaceVariable=__mk_mosek_fusion_BoundInterfaceVariable()
del __mk_mosek_fusion_BoundInterfaceVariable
def __mk_mosek_fusion_ModelVariable():
 class ModelVariable(mosek_fusion_BaseVariable):
  __slots__ = ['_ModelVariable__sparsity','_ModelVariable__shape','_ModelVariable__modelvar_nativeidxs','_ModelVariable__varid','_ModelVariable__name']
  def elementName(self,*args):
    if False: pass
    elif mosek_fusion_ModelVariable._match_elementName_JLmosek_4fusion_4Utils_4StringBuffer_2(*args): 
      return self._elementName_JLmosek_4fusion_4Utils_4StringBuffer_2(*args)
    elif mosek_fusion_ModelVariable._match_alt_elementName_JLmosek_4fusion_4Utils_4StringBuffer_2(*args): 
      return self._elementName_alt_JLmosek_4fusion_4Utils_4StringBuffer_2(*args)
    else:
      raise ValueError('Invalid argument list elementName('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ModelVariable.elementName(int64,mosek.fusion.Utils.StringBuffer)')
  def remove(self,*args):
    if False: pass
    elif mosek_fusion_ModelVariable._match_remove_(*args): 
      return self._remove_(*args)
    elif mosek_fusion_ModelVariable._match_alt_remove_(*args): 
      return self._remove_alt_(*args)
    else:
      raise ValueError('Invalid argument list remove('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ModelVariable.remove()')
  def __repr__(self): return 'mosek.fusion.ModelVariable'
  @staticmethod
  def _ctor_Lmosek_4fusion_4ModelVariable_2Lmosek_4fusion_4Model_2(v,m):
    o = ModelVariable.__new__(ModelVariable)
    o._ctor_init_Lmosek_4fusion_4ModelVariable_2Lmosek_4fusion_4Model_2(v,m)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4ModelVariable_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    v,m, = args
    return (__arg_match_Lmosek_4fusion_4ModelVariable_2__(v) and __arg_match_Lmosek_4fusion_4Model_2__(m))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4ModelVariable_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    v,m, = args
    return (__arg_alt_match_Lmosek_4fusion_4ModelVariable_2__(v) and __arg_alt_match_Lmosek_4fusion_4Model_2__(m))
  def _ctor_alt_init_Lmosek_4fusion_4ModelVariable_2Lmosek_4fusion_4Model_2(self,v,m):
    self._ctor_init_Lmosek_4fusion_4ModelVariable_2Lmosek_4fusion_4Model_2(v,m)
  def _ctor_init_Lmosek_4fusion_4ModelVariable_2Lmosek_4fusion_4Model_2(self,v,m):
   mosek_fusion_BaseVariable._ctor_init_Lmosek_4fusion_4BaseVariable_2Lmosek_4fusion_4Model_2(self,v,m)
   self.__name = (v.__name)
   self.__varid = (v.__varid)
   self.__modelvar_nativeidxs = (v.__modelvar_nativeidxs)
   self.__shape = (v.__shape)
   self.__sparsity = (v.__sparsity)
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2S_3IJ_3J_3J(model,name,shape,varid,sparsity,modelvar_nativeidxs):
    o = ModelVariable.__new__(ModelVariable)
    o._ctor_init_Lmosek_4fusion_4Model_2S_3IJ_3J_3J(model,name,shape,varid,sparsity,modelvar_nativeidxs)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2S_3IJ_3J_3J(*args):
    if len(args) != 6: return False
    model,name,shape,varid,sparsity,modelvar_nativeidxs, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(model) and __arg_match_S__(name) and __arg_match__3I__(shape) and __arg_match_J__(varid) and __arg_match__3J__(sparsity) and __arg_match__3J__(modelvar_nativeidxs))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2S_3IJ_3J_3J(*args):
    if len(args) != 6: return False
    model,name,shape,varid,sparsity,modelvar_nativeidxs, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(model) and __arg_alt_match_S__(name) and __arg_alt_match__3I__(shape) and __arg_alt_match_J__(varid) and __arg_alt_match__3J__(sparsity) and __arg_alt_match__3J__(modelvar_nativeidxs))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2S_3IJ_3J_3J(self,model,name,shape,varid,sparsity,modelvar_nativeidxs):
    self._ctor_init_Lmosek_4fusion_4Model_2S_3IJ_3J_3J(model,name,numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.int64(varid),numpy.array(sparsity,dtype=numpy.dtype(numpy.int64)),numpy.array(modelvar_nativeidxs,dtype=numpy.dtype(numpy.int64)))
  def _ctor_init_Lmosek_4fusion_4Model_2S_3IJ_3J_3J(self,model,name,shape,varid,sparsity,modelvar_nativeidxs):
   mosek_fusion_BaseVariable._ctor_init_Lmosek_4fusion_4Model_2_3I_3J_3J(self,model,shape,sparsity,modelvar_nativeidxs)
   (self.__name) = name
   (self.__varid) = varid
   (self.__shape) = shape
   (self.__sparsity) = sparsity
   (self.__modelvar_nativeidxs) = modelvar_nativeidxs
  @staticmethod
  def _match_elementName_JLmosek_4fusion_4Utils_4StringBuffer_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_J__(_0) and __arg_match_Lmosek_4fusion_4Utils_4StringBuffer_2__(_1))
  @staticmethod
  def _match_alt_elementName_JLmosek_4fusion_4Utils_4StringBuffer_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_J__(_0) and __arg_alt_match_Lmosek_4fusion_4Utils_4StringBuffer_2__(_1))
  def _elementName_alt_JLmosek_4fusion_4Utils_4StringBuffer_2(self,_t__0,_t__1):
    return self._elementName_JLmosek_4fusion_4Utils_4StringBuffer_2(numpy.int64(__0),_1)
  def _elementName_JLmosek_4fusion_4Utils_4StringBuffer_2(self,_0,_1):
   _1._a_S(("_" if ((int(len(self.__name))==0) ) else self.__name))._a_S("[")._a_S(mosek.fusion.Set._indexToString__3IJ(self.__shape,_0))._a_S("]")
  @staticmethod
  def _match_remove_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_remove_(*args):
    if len(args) != 0: return False
    return True
  def _remove_alt_(self,):
    return self._remove_()
  def _remove_(self,):
   self.getModel()._removeVariableBlock_J(self.__varid)
  def _clone_alt_Lmosek_4fusion_4Model_2(self,_t__0):
    return self._clone_Lmosek_4fusion_4Model_2(_0)
  def _clone_Lmosek_4fusion_4Model_2(self,_0):
   pass
 return ModelVariable
mosek_fusion_ModelVariable=__mk_mosek_fusion_ModelVariable()
del __mk_mosek_fusion_ModelVariable
def __mk_mosek_fusion_RangedVariable():
 class RangedVariable(mosek_fusion_ModelVariable):
  __slots__ = ['_RangedVariable__shape','_RangedVariable__name','_RangedVariable__nativeidxs','_RangedVariable__sparsity']
  def elementDesc(self,*args):
    if False: pass
    elif mosek_fusion_RangedVariable._match_elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(*args): 
      return self._elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(*args)
    elif mosek_fusion_RangedVariable._match_alt_elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(*args): 
      return self._elementDesc_alt_JLmosek_4fusion_4Utils_4StringBuffer_2(*args)
    else:
      raise ValueError('Invalid argument list elementDesc('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RangedVariable.elementDesc(int64,mosek.fusion.Utils.StringBuffer)')
  def lowerBoundVar(self,*args):
    if False: pass
    elif mosek_fusion_RangedVariable._match_lowerBoundVar_(*args): 
      return self._lowerBoundVar_(*args)
    elif mosek_fusion_RangedVariable._match_alt_lowerBoundVar_(*args): 
      return self._lowerBoundVar_alt_(*args)
    else:
      raise ValueError('Invalid argument list lowerBoundVar('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RangedVariable.lowerBoundVar()')
  def upperBoundVar(self,*args):
    if False: pass
    elif mosek_fusion_RangedVariable._match_upperBoundVar_(*args): 
      return self._upperBoundVar_(*args)
    elif mosek_fusion_RangedVariable._match_alt_upperBoundVar_(*args): 
      return self._upperBoundVar_alt_(*args)
    else:
      raise ValueError('Invalid argument list upperBoundVar('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RangedVariable.upperBoundVar()')
  def __repr__(self): return 'mosek.fusion.RangedVariable'
  @staticmethod
  def _ctor_Lmosek_4fusion_4RangedVariable_2Lmosek_4fusion_4Model_2(v,m):
    o = RangedVariable.__new__(RangedVariable)
    o._ctor_init_Lmosek_4fusion_4RangedVariable_2Lmosek_4fusion_4Model_2(v,m)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4RangedVariable_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    v,m, = args
    return (__arg_match_Lmosek_4fusion_4RangedVariable_2__(v) and __arg_match_Lmosek_4fusion_4Model_2__(m))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4RangedVariable_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    v,m, = args
    return (__arg_alt_match_Lmosek_4fusion_4RangedVariable_2__(v) and __arg_alt_match_Lmosek_4fusion_4Model_2__(m))
  def _ctor_alt_init_Lmosek_4fusion_4RangedVariable_2Lmosek_4fusion_4Model_2(self,v,m):
    self._ctor_init_Lmosek_4fusion_4RangedVariable_2Lmosek_4fusion_4Model_2(v,m)
  def _ctor_init_Lmosek_4fusion_4RangedVariable_2Lmosek_4fusion_4Model_2(self,v,m):
   mosek_fusion_ModelVariable._ctor_init_Lmosek_4fusion_4ModelVariable_2Lmosek_4fusion_4Model_2(self,v,m)
   self.__name = (v.__name)
   self.__nativeidxs = (v.__nativeidxs)
   self.__sparsity = (v.__sparsity)
   self.__shape = (v.__shape)
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2SJ_3I_3J_3I(model,name,varid,shape,sparsity,nativeidxs):
    o = RangedVariable.__new__(RangedVariable)
    o._ctor_init_Lmosek_4fusion_4Model_2SJ_3I_3J_3I(model,name,varid,shape,sparsity,nativeidxs)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2SJ_3I_3J_3I(*args):
    if len(args) != 6: return False
    model,name,varid,shape,sparsity,nativeidxs, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(model) and __arg_match_S__(name) and __arg_match_J__(varid) and __arg_match__3I__(shape) and __arg_match__3J__(sparsity) and __arg_match__3I__(nativeidxs))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2SJ_3I_3J_3I(*args):
    if len(args) != 6: return False
    model,name,varid,shape,sparsity,nativeidxs, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(model) and __arg_alt_match_S__(name) and __arg_alt_match_J__(varid) and __arg_alt_match__3I__(shape) and __arg_alt_match__3J__(sparsity) and __arg_alt_match__3I__(nativeidxs))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2SJ_3I_3J_3I(self,model,name,varid,shape,sparsity,nativeidxs):
    self._ctor_init_Lmosek_4fusion_4Model_2SJ_3I_3J_3I(model,name,numpy.int64(varid),numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.array(sparsity,dtype=numpy.dtype(numpy.int64)),numpy.array(nativeidxs,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_Lmosek_4fusion_4Model_2SJ_3I_3J_3I(self,model,name,varid,shape,sparsity,nativeidxs):
   mosek_fusion_ModelVariable._ctor_init_Lmosek_4fusion_4Model_2S_3IJ_3J_3J(self,model,name,shape,varid,sparsity,mosek.fusion.RangedVariable.__globalNativeIndexes__3I(nativeidxs))
   (self.__nativeidxs) = nativeidxs
   (self.__sparsity) = sparsity
   (self.__name) = name
   (self.__shape) = shape
  @staticmethod
  def _match_elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_J__(_0) and __arg_match_Lmosek_4fusion_4Utils_4StringBuffer_2__(_1))
  @staticmethod
  def _match_alt_elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_J__(_0) and __arg_alt_match_Lmosek_4fusion_4Utils_4StringBuffer_2__(_1))
  def _elementDesc_alt_JLmosek_4fusion_4Utils_4StringBuffer_2(self,_t__0,_t__1):
    return self._elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(numpy.int64(__0),_1)
  def _elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(self,_0,_1):
   self.elementName(_0,_1)
   _1._a_S(" : in range")
   return (_1)
  def _dual_1u_alt_I_3D(self,_t__0,_t__1):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _1_res = self._dual_1u_I_3D(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _dual_1u_I_3D(self,_0,_1):
   self._dual_1lu_I_3DZ(_0,_1,False)
  def _dual_1l_alt_I_3D(self,_t__0,_t__1):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _1_res = self._dual_1l_I_3D(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _dual_1l_I_3D(self,_0,_1):
   self._dual_1lu_I_3DZ(_0,_1,True)
  @staticmethod
  def _match_upperBoundVar_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_upperBoundVar_(*args):
    if len(args) != 0: return False
    return True
  def _upperBoundVar_alt_(self,):
    return self._upperBoundVar_()
  def _upperBoundVar_(self,):
   return (mosek_fusion_BoundInterfaceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3JZ(self.getModel(),self.__shape,self.__sparsity,numpy.array([self.__nativeidxs[_0] for _0 in range(0,int((self.__nativeidxs).shape[0]))], dtype=numpy.dtype(numpy.int64)),False))
  @staticmethod
  def _match_lowerBoundVar_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_lowerBoundVar_(*args):
    if len(args) != 0: return False
    return True
  def _lowerBoundVar_alt_(self,):
    return self._lowerBoundVar_()
  def _lowerBoundVar_(self,):
   return (mosek_fusion_BoundInterfaceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3JZ(self.getModel(),self.__shape,self.__sparsity,numpy.array([self.__nativeidxs[_0] for _0 in range(0,int((self.__nativeidxs).shape[0]))], dtype=numpy.dtype(numpy.int64)),True))
  def _clone_alt_Lmosek_4fusion_4Model_2(self,_t__0):
    return self._clone_Lmosek_4fusion_4Model_2(_0)
  def _clone_Lmosek_4fusion_4Model_2(self,_0):
   return (mosek_fusion_RangedVariable._ctor_Lmosek_4fusion_4RangedVariable_2Lmosek_4fusion_4Model_2(self,_0))
  @staticmethod
  def __globalNativeIndexes_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_RangedVariable.__globalNativeIndexes__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __globalNativeIndexes__3I(_0):
   _1=numpy.zeros((int((_0).shape[0]),), dtype=numpy.dtype(numpy.int64))
   for _2 in range(0,int((_0).shape[0])):
    _1[_2] = _0[_2]
   return (_1)
 return RangedVariable
mosek_fusion_RangedVariable=__mk_mosek_fusion_RangedVariable()
del __mk_mosek_fusion_RangedVariable
def __mk_mosek_fusion_LinearPSDVariable():
 class LinearPSDVariable(mosek_fusion_ModelVariable):
  __slots__ = ['_LinearPSDVariable__shape','_LinearPSDVariable__name','_LinearPSDVariable__varid','_LinearPSDVariable__nativeidxs','_LinearPSDVariable__conedim']
  def make_integer(self,*args):
    if False: pass
    elif mosek_fusion_LinearPSDVariable._match_make_1integer_(*args): 
      return self._make_1integer_(*args)
    elif mosek_fusion_LinearPSDVariable._match_alt_make_1integer_(*args): 
      return self._make_1integer_alt_(*args)
    elif mosek_fusion_LinearPSDVariable._match_make_1integer__3J(*args): 
      return self._make_1integer__3J(*args)
    elif mosek_fusion_LinearPSDVariable._match_alt_make_1integer__3J(*args): 
      return self._make_1integer_alt__3J(*args)
    else:
      raise ValueError('Invalid argument list make_integer('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinearPSDVariable.make_integer()\n\tmosek.fusion.LinearPSDVariable.make_integer(array(int64,ndim=1))')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_LinearPSDVariable._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_LinearPSDVariable._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinearPSDVariable.toString()')
  def make_continuous(self,*args):
    if False: pass
    elif mosek_fusion_LinearPSDVariable._match_make_1continuous_(*args): 
      return self._make_1continuous_(*args)
    elif mosek_fusion_LinearPSDVariable._match_alt_make_1continuous_(*args): 
      return self._make_1continuous_alt_(*args)
    elif mosek_fusion_LinearPSDVariable._match_make_1continuous__3J(*args): 
      return self._make_1continuous__3J(*args)
    elif mosek_fusion_LinearPSDVariable._match_alt_make_1continuous__3J(*args): 
      return self._make_1continuous_alt__3J(*args)
    else:
      raise ValueError('Invalid argument list make_continuous('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinearPSDVariable.make_continuous()\n\tmosek.fusion.LinearPSDVariable.make_continuous(array(int64,ndim=1))')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.LinearPSDVariable: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4LinearPSDVariable_2Lmosek_4fusion_4Model_2(v,m):
    o = LinearPSDVariable.__new__(LinearPSDVariable)
    o._ctor_init_Lmosek_4fusion_4LinearPSDVariable_2Lmosek_4fusion_4Model_2(v,m)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4LinearPSDVariable_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    v,m, = args
    return (__arg_match_Lmosek_4fusion_4LinearPSDVariable_2__(v) and __arg_match_Lmosek_4fusion_4Model_2__(m))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4LinearPSDVariable_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    v,m, = args
    return (__arg_alt_match_Lmosek_4fusion_4LinearPSDVariable_2__(v) and __arg_alt_match_Lmosek_4fusion_4Model_2__(m))
  def _ctor_alt_init_Lmosek_4fusion_4LinearPSDVariable_2Lmosek_4fusion_4Model_2(self,v,m):
    self._ctor_init_Lmosek_4fusion_4LinearPSDVariable_2Lmosek_4fusion_4Model_2(v,m)
  def _ctor_init_Lmosek_4fusion_4LinearPSDVariable_2Lmosek_4fusion_4Model_2(self,v,m):
   mosek_fusion_ModelVariable._ctor_init_Lmosek_4fusion_4ModelVariable_2Lmosek_4fusion_4Model_2(self,v,m)
   (self.__conedim) = (v.__conedim)
   (self.__varid) = (v.__varid)
   (self.__name) = (v.__name)
   (self.__shape) = (v.__shape)
   (self.__nativeidxs) = (v.__nativeidxs)
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2SI_3II_3J(model,name,varid,shape,conedim,nativeidxs):
    o = LinearPSDVariable.__new__(LinearPSDVariable)
    o._ctor_init_Lmosek_4fusion_4Model_2SI_3II_3J(model,name,varid,shape,conedim,nativeidxs)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2SI_3II_3J(*args):
    if len(args) != 6: return False
    model,name,varid,shape,conedim,nativeidxs, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(model) and __arg_match_S__(name) and __arg_match_I__(varid) and __arg_match__3I__(shape) and __arg_match_I__(conedim) and __arg_match__3J__(nativeidxs))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2SI_3II_3J(*args):
    if len(args) != 6: return False
    model,name,varid,shape,conedim,nativeidxs, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(model) and __arg_alt_match_S__(name) and __arg_alt_match_I__(varid) and __arg_alt_match__3I__(shape) and __arg_alt_match_I__(conedim) and __arg_alt_match__3J__(nativeidxs))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2SI_3II_3J(self,model,name,varid,shape,conedim,nativeidxs):
    self._ctor_init_Lmosek_4fusion_4Model_2SI_3II_3J(model,name,numpy.int32(varid),numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.int32(conedim),numpy.array(nativeidxs,dtype=numpy.dtype(numpy.int64)))
  def _ctor_init_Lmosek_4fusion_4Model_2SI_3II_3J(self,model,name,varid,shape,conedim,nativeidxs):
   mosek_fusion_ModelVariable._ctor_init_Lmosek_4fusion_4Model_2S_3IJ_3J_3J(self,model,name,shape,varid,None,mosek.fusion.LinearPSDVariable.__globalNativeIndexes__3J(nativeidxs))
   (self.__name) = name
   (self.__conedim) = conedim
   (self.__varid) = varid
   (self.__shape) = shape
   (self.__nativeidxs) = nativeidxs
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   _0=mosek.fusion.Utils.StringBuffer()
   _0._a_S("PSDVariable(")
   if (int(len(self.__name)) > 0):
    _0._a_S("'")._a_S(self.__name)._a_S("',")
   _0._a_I(self.__shape[0])
   for _1 in range(1,int((self.__shape).shape[0])):
    _0._a_S(",")._a_I(self.__shape[_1])
   _0._a_S(")")
   return (_0._toString_())
  @staticmethod
  def _match_make_1continuous__3J(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3J__(_0))
  @staticmethod
  def _match_alt_make_1continuous__3J(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3J__(_0))
  def _make_1continuous_alt__3J(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1_res = self._make_1continuous__3J(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _make_1continuous__3J(self,_0):
   pass
  @staticmethod
  def _match_make_1integer__3J(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3J__(_0))
  @staticmethod
  def _match_alt_make_1integer__3J(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3J__(_0))
  def _make_1integer_alt__3J(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1_res = self._make_1integer__3J(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _make_1integer__3J(self,_0):
   raise mosek_fusion_UnimplementedError._ctor_S("Cannot make PSDVariable elements integer")
  def _clone_alt_Lmosek_4fusion_4Model_2(self,_t__0):
    return self._clone_Lmosek_4fusion_4Model_2(_0)
  def _clone_Lmosek_4fusion_4Model_2(self,_0):
   return (mosek_fusion_LinearPSDVariable._ctor_Lmosek_4fusion_4LinearPSDVariable_2Lmosek_4fusion_4Model_2(self,_0))
  @staticmethod
  def __globalNativeIndexes_alt__3J(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1_res = mosek_fusion_LinearPSDVariable.__globalNativeIndexes__3J(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __globalNativeIndexes__3J(_0):
   return (numpy.array([(- (_0[_1] + 1)) for _1 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int64)))
 return LinearPSDVariable
mosek_fusion_LinearPSDVariable=__mk_mosek_fusion_LinearPSDVariable()
del __mk_mosek_fusion_LinearPSDVariable
def __mk_mosek_fusion_PSDVariable():
 class PSDVariable(mosek_fusion_ModelVariable):
  __slots__ = ['_PSDVariable__model','_PSDVariable__barvaridxs','_PSDVariable__conedim2','_PSDVariable__conedim1','_PSDVariable__shape','_PSDVariable__name','_PSDVariable__nativeidxs','_PSDVariable__varid']
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_PSDVariable._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_PSDVariable._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.PSDVariable.toString()')
  def elementDesc(self,*args):
    if False: pass
    elif mosek_fusion_PSDVariable._match_elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(*args): 
      return self._elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(*args)
    elif mosek_fusion_PSDVariable._match_alt_elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(*args): 
      return self._elementDesc_alt_JLmosek_4fusion_4Utils_4StringBuffer_2(*args)
    else:
      raise ValueError('Invalid argument list elementDesc('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.PSDVariable.elementDesc(int64,mosek.fusion.Utils.StringBuffer)')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.PSDVariable: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4PSDVariable_2Lmosek_4fusion_4Model_2(v,m):
    o = PSDVariable.__new__(PSDVariable)
    o._ctor_init_Lmosek_4fusion_4PSDVariable_2Lmosek_4fusion_4Model_2(v,m)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4PSDVariable_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    v,m, = args
    return (__arg_match_Lmosek_4fusion_4PSDVariable_2__(v) and __arg_match_Lmosek_4fusion_4Model_2__(m))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4PSDVariable_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    v,m, = args
    return (__arg_alt_match_Lmosek_4fusion_4PSDVariable_2__(v) and __arg_alt_match_Lmosek_4fusion_4Model_2__(m))
  def _ctor_alt_init_Lmosek_4fusion_4PSDVariable_2Lmosek_4fusion_4Model_2(self,v,m):
    self._ctor_init_Lmosek_4fusion_4PSDVariable_2Lmosek_4fusion_4Model_2(v,m)
  def _ctor_init_Lmosek_4fusion_4PSDVariable_2Lmosek_4fusion_4Model_2(self,v,m):
   mosek_fusion_ModelVariable._ctor_init_Lmosek_4fusion_4ModelVariable_2Lmosek_4fusion_4Model_2(self,v,m)
   self.__varid = (v.__varid)
   self.__nativeidxs = (v.__nativeidxs)
   self.__name = (v.__name)
   self.__shape = (v.__shape)
   self.__conedim1 = (v.__conedim1)
   self.__conedim2 = (v.__conedim2)
   self.__model = m
   self.__barvaridxs = (v.__barvaridxs)
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2SI_3III_3I_3J(model,name,varid,shape,conedim1,conedim2,barvaridxs,nativeidxs):
    o = PSDVariable.__new__(PSDVariable)
    o._ctor_init_Lmosek_4fusion_4Model_2SI_3III_3I_3J(model,name,varid,shape,conedim1,conedim2,barvaridxs,nativeidxs)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2SI_3III_3I_3J(*args):
    if len(args) != 8: return False
    model,name,varid,shape,conedim1,conedim2,barvaridxs,nativeidxs, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(model) and __arg_match_S__(name) and __arg_match_I__(varid) and __arg_match__3I__(shape) and __arg_match_I__(conedim1) and __arg_match_I__(conedim2) and __arg_match__3I__(barvaridxs) and __arg_match__3J__(nativeidxs))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2SI_3III_3I_3J(*args):
    if len(args) != 8: return False
    model,name,varid,shape,conedim1,conedim2,barvaridxs,nativeidxs, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(model) and __arg_alt_match_S__(name) and __arg_alt_match_I__(varid) and __arg_alt_match__3I__(shape) and __arg_alt_match_I__(conedim1) and __arg_alt_match_I__(conedim2) and __arg_alt_match__3I__(barvaridxs) and __arg_alt_match__3J__(nativeidxs))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2SI_3III_3I_3J(self,model,name,varid,shape,conedim1,conedim2,barvaridxs,nativeidxs):
    self._ctor_init_Lmosek_4fusion_4Model_2SI_3III_3I_3J(model,name,numpy.int32(varid),numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.int32(conedim1),numpy.int32(conedim2),numpy.array(barvaridxs,dtype=numpy.dtype(numpy.int32)),numpy.array(nativeidxs,dtype=numpy.dtype(numpy.int64)))
  def _ctor_init_Lmosek_4fusion_4Model_2SI_3III_3I_3J(self,model,name,varid,shape,conedim1,conedim2,barvaridxs,nativeidxs):
   mosek_fusion_ModelVariable._ctor_init_Lmosek_4fusion_4Model_2S_3IJ_3J_3J(self,model,name,shape,varid,None,mosek.fusion.PSDVariable.__fullnativeidxs__3III_3J(shape,conedim1,conedim2,nativeidxs))
   (self.__varid) = varid
   (self.__nativeidxs) = nativeidxs
   (self.__name) = name
   (self.__shape) = shape
   (self.__conedim1) = conedim1
   (self.__conedim2) = conedim2
   (self.__model) = model
   (self.__barvaridxs) = barvaridxs
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   _0=mosek.fusion.Utils.StringBuffer()
   _0._a_S("PSDVariable(")
   if (int(len(self.__name)) > 0):
    _0._a_S("'")._a_S(self.__name)._a_S("',")
   _0._a_I(self.__shape[0])
   for _1 in range(1,int((self.__shape).shape[0])):
    _0._a_S(",")._a_I(self.__shape[_1])
   _0._a_S(")")
   return (_0._toString_())
  @staticmethod
  def _match_elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_J__(_0) and __arg_match_Lmosek_4fusion_4Utils_4StringBuffer_2__(_1))
  @staticmethod
  def _match_alt_elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_J__(_0) and __arg_alt_match_Lmosek_4fusion_4Utils_4StringBuffer_2__(_1))
  def _elementDesc_alt_JLmosek_4fusion_4Utils_4StringBuffer_2(self,_t__0,_t__1):
    return self._elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(numpy.int64(__0),_1)
  def _elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(self,_0,_1):
   self.elementName(_0,_1)
   _1._a_S(" : element in positive semidefinite cone")
   return (_1)
  def _clone_alt_Lmosek_4fusion_4Model_2(self,_t__0):
    return self._clone_Lmosek_4fusion_4Model_2(_0)
  def _clone_Lmosek_4fusion_4Model_2(self,_0):
   return (mosek_fusion_PSDVariable._ctor_Lmosek_4fusion_4PSDVariable_2Lmosek_4fusion_4Model_2(self,_0))
  @staticmethod
  def __fullnativeidxs_alt__3III_3J(_t__0,_t__1,_t__2,_t__3):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.int32(_t__1)
   _2=numpy.int32(_t__2)
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.int64))
   _1_res = mosek_fusion_PSDVariable.__fullnativeidxs__3III_3J(_0,_1,_2,_3)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __fullnativeidxs__3III_3J(_0,_1,_2,_3):
   _4=int((_0).shape[0])
   _5=(_1 < _2)
   _6=(_1 if (_5 ) else _2)
   _7=(_1 if ((not _5) ) else _2)
   _8=1
   for _9 in range(0,_6):
    _8 *= _0[_9]
   _10=_0[_6]
   _11=1
   for _12 in range((_6 + 1),_7):
    _11 *= _0[_12]
   _13=_0[_7]
   _14=1
   for _15 in range((_7 + 1),_4):
    _14 *= _0[_15]
   _16=((((_8 * _10) * _11) * _13) * _14)
   _17=numpy.zeros((_16,), dtype=numpy.dtype(numpy.int64))
   _18=_14
   _19=(_18 * _13)
   _20=(_19 * _11)
   _21=(_20 * _20)
   _22=0
   for _23 in range(0,_8):
    for _24 in range(0,_13):
     for _25 in range(0,_11):
      for _26 in range(_24,_10):
       for _27 in range(0,_14):
        _17[(((((_23 * _21) + (_26 * _20)) + (_25 * _19)) + (_24 * _18)) + _27)] = (- (_3[_22] + 1))
        _17[(((((_23 * _21) + (_24 * _20)) + (_25 * _19)) + (_26 * _18)) + _27)] = (- (_3[_22] + 1))
        _22 += 1
   return (_17)
 return PSDVariable
mosek_fusion_PSDVariable=__mk_mosek_fusion_PSDVariable()
del __mk_mosek_fusion_PSDVariable
def __mk_mosek_fusion_LinearVariable():
 class LinearVariable(mosek_fusion_ModelVariable):
  __slots__ = ['_LinearVariable__shape','_LinearVariable__sparsity','_LinearVariable__nativeidxs','_LinearVariable__name']
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_LinearVariable._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_LinearVariable._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinearVariable.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.LinearVariable: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4LinearVariable_2Lmosek_4fusion_4Model_2(v,m):
    o = LinearVariable.__new__(LinearVariable)
    o._ctor_init_Lmosek_4fusion_4LinearVariable_2Lmosek_4fusion_4Model_2(v,m)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4LinearVariable_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    v,m, = args
    return (__arg_match_Lmosek_4fusion_4LinearVariable_2__(v) and __arg_match_Lmosek_4fusion_4Model_2__(m))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4LinearVariable_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    v,m, = args
    return (__arg_alt_match_Lmosek_4fusion_4LinearVariable_2__(v) and __arg_alt_match_Lmosek_4fusion_4Model_2__(m))
  def _ctor_alt_init_Lmosek_4fusion_4LinearVariable_2Lmosek_4fusion_4Model_2(self,v,m):
    self._ctor_init_Lmosek_4fusion_4LinearVariable_2Lmosek_4fusion_4Model_2(v,m)
  def _ctor_init_Lmosek_4fusion_4LinearVariable_2Lmosek_4fusion_4Model_2(self,v,m):
   mosek_fusion_ModelVariable._ctor_init_Lmosek_4fusion_4ModelVariable_2Lmosek_4fusion_4Model_2(self,v,m)
   self.__nativeidxs = (v.__nativeidxs)
   self.__sparsity = (v.__sparsity)
   self.__shape = (v.__shape)
   self.__name = (v.__name)
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2SJ_3I_3J_3I(model,name,varid,shape,sparsity,nativeidxs):
    o = LinearVariable.__new__(LinearVariable)
    o._ctor_init_Lmosek_4fusion_4Model_2SJ_3I_3J_3I(model,name,varid,shape,sparsity,nativeidxs)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2SJ_3I_3J_3I(*args):
    if len(args) != 6: return False
    model,name,varid,shape,sparsity,nativeidxs, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(model) and __arg_match_S__(name) and __arg_match_J__(varid) and __arg_match__3I__(shape) and __arg_match__3J__(sparsity) and __arg_match__3I__(nativeidxs))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2SJ_3I_3J_3I(*args):
    if len(args) != 6: return False
    model,name,varid,shape,sparsity,nativeidxs, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(model) and __arg_alt_match_S__(name) and __arg_alt_match_J__(varid) and __arg_alt_match__3I__(shape) and __arg_alt_match__3J__(sparsity) and __arg_alt_match__3I__(nativeidxs))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2SJ_3I_3J_3I(self,model,name,varid,shape,sparsity,nativeidxs):
    self._ctor_init_Lmosek_4fusion_4Model_2SJ_3I_3J_3I(model,name,numpy.int64(varid),numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.array(sparsity,dtype=numpy.dtype(numpy.int64)),numpy.array(nativeidxs,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_Lmosek_4fusion_4Model_2SJ_3I_3J_3I(self,model,name,varid,shape,sparsity,nativeidxs):
   mosek_fusion_ModelVariable._ctor_init_Lmosek_4fusion_4Model_2S_3IJ_3J_3J(self,model,name,shape,varid,sparsity,mosek.fusion.LinearVariable.__globalNativeIndexes__3I(nativeidxs))
   (self.__name) = name
   (self.__nativeidxs) = nativeidxs
   (self.__sparsity) = sparsity
   (self.__shape) = shape
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   _0=mosek.fusion.Utils.StringBuffer()
   _0._a_S("LinearVariable((")
   if (int((self.__shape).shape[0]) > 0):
    _0._a_I(self.__shape[0])
    for _1 in range(1,int((self.__shape).shape[0])):
     _0._a_S(",")._a_I(self.__shape[_1])
   _0._a_S(")")
   if (self.__sparsity is not None):
    _0._a_S(",sparse")
   _0._a_S(")")
   return (_0._toString_())
  def _clone_alt_Lmosek_4fusion_4Model_2(self,_t__0):
    return self._clone_Lmosek_4fusion_4Model_2(_0)
  def _clone_Lmosek_4fusion_4Model_2(self,_0):
   return (mosek_fusion_LinearVariable._ctor_Lmosek_4fusion_4LinearVariable_2Lmosek_4fusion_4Model_2(self,_0))
  @staticmethod
  def __globalNativeIndexes_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_LinearVariable.__globalNativeIndexes__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __globalNativeIndexes__3I(_0):
   _1=numpy.zeros((int((_0).shape[0]),), dtype=numpy.dtype(numpy.int64))
   for _2 in range(0,int((_0).shape[0])):
    _1[_2] = _0[_2]
   return (_1)
 return LinearVariable
mosek_fusion_LinearVariable=__mk_mosek_fusion_LinearVariable()
del __mk_mosek_fusion_LinearVariable
def __mk_mosek_fusion_ConicVariable():
 class ConicVariable(mosek_fusion_ModelVariable):
  __slots__ = ['_ConicVariable__nativeidxs','_ConicVariable__shape','_ConicVariable__name','_ConicVariable__varid']
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ConicVariable._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ConicVariable._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ConicVariable.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ConicVariable: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4ConicVariable_2Lmosek_4fusion_4Model_2(v,m):
    o = ConicVariable.__new__(ConicVariable)
    o._ctor_init_Lmosek_4fusion_4ConicVariable_2Lmosek_4fusion_4Model_2(v,m)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4ConicVariable_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    v,m, = args
    return (__arg_match_Lmosek_4fusion_4ConicVariable_2__(v) and __arg_match_Lmosek_4fusion_4Model_2__(m))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4ConicVariable_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    v,m, = args
    return (__arg_alt_match_Lmosek_4fusion_4ConicVariable_2__(v) and __arg_alt_match_Lmosek_4fusion_4Model_2__(m))
  def _ctor_alt_init_Lmosek_4fusion_4ConicVariable_2Lmosek_4fusion_4Model_2(self,v,m):
    self._ctor_init_Lmosek_4fusion_4ConicVariable_2Lmosek_4fusion_4Model_2(v,m)
  def _ctor_init_Lmosek_4fusion_4ConicVariable_2Lmosek_4fusion_4Model_2(self,v,m):
   mosek_fusion_ModelVariable._ctor_init_Lmosek_4fusion_4ModelVariable_2Lmosek_4fusion_4Model_2(self,v,m)
   self.__shape = (v.__shape)
   self.__nativeidxs = (v.__nativeidxs)
   self.__shape = (v.__shape)
   self.__varid = (v.__varid)
   self.__name = (v.__name)
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2SI_3I_3I(model,name,varid,shape,nativeidxs):
    o = ConicVariable.__new__(ConicVariable)
    o._ctor_init_Lmosek_4fusion_4Model_2SI_3I_3I(model,name,varid,shape,nativeidxs)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2SI_3I_3I(*args):
    if len(args) != 5: return False
    model,name,varid,shape,nativeidxs, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(model) and __arg_match_S__(name) and __arg_match_I__(varid) and __arg_match__3I__(shape) and __arg_match__3I__(nativeidxs))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2SI_3I_3I(*args):
    if len(args) != 5: return False
    model,name,varid,shape,nativeidxs, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(model) and __arg_alt_match_S__(name) and __arg_alt_match_I__(varid) and __arg_alt_match__3I__(shape) and __arg_alt_match__3I__(nativeidxs))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2SI_3I_3I(self,model,name,varid,shape,nativeidxs):
    self._ctor_init_Lmosek_4fusion_4Model_2SI_3I_3I(model,name,numpy.int32(varid),numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.array(nativeidxs,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_Lmosek_4fusion_4Model_2SI_3I_3I(self,model,name,varid,shape,nativeidxs):
   mosek_fusion_ModelVariable._ctor_init_Lmosek_4fusion_4Model_2S_3IJ_3J_3J(self,model,name,shape,varid,None,mosek.fusion.ConicVariable.__globalNativeIndexes__3I(nativeidxs))
   (self.__name) = name
   (self.__varid) = varid
   (self.__shape) = shape
   (self.__nativeidxs) = nativeidxs
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   _0=mosek.fusion.Utils.StringBuffer()
   _0._a_S("ConicVariable( ")
   if (int(len(self.__name)) > 0):
    _0._a_S("'")._a_S(self.__name)._a_S("',")
   _0._a_S("(")
   _0._a_I(self.__shape[0])
   for _1 in range(1,int((self.__shape).shape[0])):
    _0._a_S(",")._a_I(self.__shape[_1])
   _0._a_S(") )")
   return (_0._toString_())
  def _clone_alt_Lmosek_4fusion_4Model_2(self,_t__0):
    return self._clone_Lmosek_4fusion_4Model_2(_0)
  def _clone_Lmosek_4fusion_4Model_2(self,_0):
   return (mosek_fusion_ConicVariable._ctor_Lmosek_4fusion_4ConicVariable_2Lmosek_4fusion_4Model_2(self,_0))
  @staticmethod
  def __globalNativeIndexes_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_ConicVariable.__globalNativeIndexes__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __globalNativeIndexes__3I(_0):
   _1=numpy.zeros((int((_0).shape[0]),), dtype=numpy.dtype(numpy.int64))
   for _2 in range(0,int((_0).shape[0])):
    _1[_2] = _0[_2]
   return (_1)
 return ConicVariable
mosek_fusion_ConicVariable=__mk_mosek_fusion_ConicVariable()
del __mk_mosek_fusion_ConicVariable
def __mk_mosek_fusion_NilVariable():
 class NilVariable(mosek_fusion_BaseVariable):
  __slots__ = ['_NilVariable__shape']
  def inst(self,*args):
    if False: pass
    elif mosek_fusion_NilVariable._match_inst_I_3J(*args): 
      return self._inst_I_3J(*args)
    elif mosek_fusion_NilVariable._match_alt_inst_I_3J(*args): 
      return self._inst_alt_I_3J(*args)
    elif mosek_fusion_NilVariable._match_inst_I_3J_3J(*args): 
      return self._inst_I_3J_3J(*args)
    elif mosek_fusion_NilVariable._match_alt_inst_I_3J_3J(*args): 
      return self._inst_alt_I_3J_3J(*args)
    elif mosek_fusion_NilVariable._match_inst_I_3JI_3J(*args): 
      return self._inst_I_3JI_3J(*args)
    elif mosek_fusion_NilVariable._match_alt_inst_I_3JI_3J(*args): 
      return self._inst_alt_I_3JI_3J(*args)
    else:
      raise ValueError('Invalid argument list inst('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.NilVariable.inst(int32,array(int64,ndim=1))\n\tmosek.fusion.NilVariable.inst(int32,array(int64,ndim=1),array(int64,ndim=1))\n\tmosek.fusion.NilVariable.inst(int32,array(int64,ndim=1),int32,array(int64,ndim=1))')
  def make_integer(self,*args):
    if False: pass
    elif mosek_fusion_NilVariable._match_make_1integer_(*args): 
      return self._make_1integer_(*args)
    elif mosek_fusion_NilVariable._match_alt_make_1integer_(*args): 
      return self._make_1integer_alt_(*args)
    else:
      raise ValueError('Invalid argument list make_integer('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.NilVariable.make_integer()')
  def slice(self,*args):
    if False: pass
    elif mosek_fusion_NilVariable._match_slice_II(*args): 
      return self._slice_II(*args)
    elif mosek_fusion_NilVariable._match_alt_slice_II(*args): 
      return self._slice_alt_II(*args)
    elif mosek_fusion_NilVariable._match_slice__3I_3I(*args): 
      return self._slice__3I_3I(*args)
    elif mosek_fusion_NilVariable._match_alt_slice__3I_3I(*args): 
      return self._slice_alt__3I_3I(*args)
    else:
      raise ValueError('Invalid argument list slice('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.NilVariable.slice(int32,int32)\n\tmosek.fusion.NilVariable.slice(array(int32,ndim=1),array(int32,ndim=1))')
  def index(self,*args):
    if False: pass
    elif mosek_fusion_NilVariable._match_index_I(*args): 
      return self._index_I(*args)
    elif mosek_fusion_NilVariable._match_alt_index_I(*args): 
      return self._index_alt_I(*args)
    elif mosek_fusion_NilVariable._match_index__3I(*args): 
      return self._index__3I(*args)
    elif mosek_fusion_NilVariable._match_alt_index__3I(*args): 
      return self._index_alt__3I(*args)
    elif mosek_fusion_NilVariable._match_index_II(*args): 
      return self._index_II(*args)
    elif mosek_fusion_NilVariable._match_alt_index_II(*args): 
      return self._index_alt_II(*args)
    elif mosek_fusion_NilVariable._match_index_III(*args): 
      return self._index_III(*args)
    elif mosek_fusion_NilVariable._match_alt_index_III(*args): 
      return self._index_alt_III(*args)
    else:
      raise ValueError('Invalid argument list index('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.NilVariable.index(int32)\n\tmosek.fusion.NilVariable.index(array(int32,ndim=1))\n\tmosek.fusion.NilVariable.index(int32,int32)\n\tmosek.fusion.NilVariable.index(int32,int32,int32)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_NilVariable._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_NilVariable._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.NilVariable.toString()')
  def values(self,*args):
    if False: pass
    elif mosek_fusion_NilVariable._match_values_I_3DZ(*args): 
      return self._values_I_3DZ(*args)
    elif mosek_fusion_NilVariable._match_alt_values_I_3DZ(*args): 
      return self._values_alt_I_3DZ(*args)
    else:
      raise ValueError('Invalid argument list values('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.NilVariable.values(int32,array(double,ndim=1),bool)')
  def make_continuous(self,*args):
    if False: pass
    elif mosek_fusion_NilVariable._match_make_1continuous_(*args): 
      return self._make_1continuous_(*args)
    elif mosek_fusion_NilVariable._match_alt_make_1continuous_(*args): 
      return self._make_1continuous_alt_(*args)
    else:
      raise ValueError('Invalid argument list make_continuous('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.NilVariable.make_continuous()')
  def elementName(self,*args):
    if False: pass
    elif mosek_fusion_NilVariable._match_elementName_JLmosek_4fusion_4Utils_4StringBuffer_2(*args): 
      return self._elementName_JLmosek_4fusion_4Utils_4StringBuffer_2(*args)
    elif mosek_fusion_NilVariable._match_alt_elementName_JLmosek_4fusion_4Utils_4StringBuffer_2(*args): 
      return self._elementName_alt_JLmosek_4fusion_4Utils_4StringBuffer_2(*args)
    else:
      raise ValueError('Invalid argument list elementName('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.NilVariable.elementName(int64,mosek.fusion.Utils.StringBuffer)')
  def set_values(self,*args):
    if False: pass
    elif mosek_fusion_NilVariable._match_set_1values__3DZ(*args): 
      return self._set_1values__3DZ(*args)
    elif mosek_fusion_NilVariable._match_alt_set_1values__3DZ(*args): 
      return self._set_1values_alt__3DZ(*args)
    else:
      raise ValueError('Invalid argument list set_values('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.NilVariable.set_values(array(double,ndim=1),bool)')
  def numInst(self,*args):
    if False: pass
    elif mosek_fusion_NilVariable._match_numInst_(*args): 
      return self._numInst_(*args)
    elif mosek_fusion_NilVariable._match_alt_numInst_(*args): 
      return self._numInst_alt_(*args)
    else:
      raise ValueError('Invalid argument list numInst('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.NilVariable.numInst()')
  def elementDesc(self,*args):
    if False: pass
    elif mosek_fusion_NilVariable._match_elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(*args): 
      return self._elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(*args)
    elif mosek_fusion_NilVariable._match_alt_elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(*args): 
      return self._elementDesc_alt_JLmosek_4fusion_4Utils_4StringBuffer_2(*args)
    else:
      raise ValueError('Invalid argument list elementDesc('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.NilVariable.elementDesc(int64,mosek.fusion.Utils.StringBuffer)')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.NilVariable: '+self._toString_()
  @staticmethod
  def _ctor__3I(shape):
    o = NilVariable.__new__(NilVariable)
    o._ctor_init__3I(shape)
    return o
  @staticmethod
  def __match_ctor__3I(*args):
    if len(args) != 1: return False
    shape, = args
    return (__arg_match__3I__(shape))
  @staticmethod
  def __match_alt_ctor__3I(*args):
    if len(args) != 1: return False
    shape, = args
    return (__arg_alt_match__3I__(shape))
  def _ctor_alt_init__3I(self,shape):
    self._ctor_init__3I(numpy.array(shape,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init__3I(self,shape):
   mosek_fusion_BaseVariable._ctor_init_Lmosek_4fusion_4Model_2_3I_3J_3J(self,None,mosek.fusion.Utils.Tools._arraycopy__3I(shape),numpy.zeros((0,), dtype=numpy.dtype(numpy.int64)),numpy.zeros((0,), dtype=numpy.dtype(numpy.int64)))
   (self.__shape) = numpy.array([shape[_0] for _0 in range(0,int((shape).shape[0]))], dtype=numpy.dtype(numpy.int32))
  @staticmethod
  def _ctor_():
    o = NilVariable.__new__(NilVariable)
    o._ctor_init_()
    return o
  @staticmethod
  def __match_ctor_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def __match_alt_ctor_(*args):
    if len(args) != 0: return False
    return True
  def _ctor_alt_init_(self,):
    self._ctor_init_()
  def _ctor_init_(self,):
   mosek_fusion_NilVariable._ctor_init__3I(self,numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)))
  @staticmethod
  def _match_elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_J__(_0) and __arg_match_Lmosek_4fusion_4Utils_4StringBuffer_2__(_1))
  @staticmethod
  def _match_alt_elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_J__(_0) and __arg_alt_match_Lmosek_4fusion_4Utils_4StringBuffer_2__(_1))
  def _elementDesc_alt_JLmosek_4fusion_4Utils_4StringBuffer_2(self,_t__0,_t__1):
    return self._elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(numpy.int64(__0),_1)
  def _elementDesc_JLmosek_4fusion_4Utils_4StringBuffer_2(self,_0,_1):
   return (_1)
  @staticmethod
  def _match_elementName_JLmosek_4fusion_4Utils_4StringBuffer_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_J__(_0) and __arg_match_Lmosek_4fusion_4Utils_4StringBuffer_2__(_1))
  @staticmethod
  def _match_alt_elementName_JLmosek_4fusion_4Utils_4StringBuffer_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_J__(_0) and __arg_alt_match_Lmosek_4fusion_4Utils_4StringBuffer_2__(_1))
  def _elementName_alt_JLmosek_4fusion_4Utils_4StringBuffer_2(self,_t__0,_t__1):
    return self._elementName_JLmosek_4fusion_4Utils_4StringBuffer_2(numpy.int64(__0),_1)
  def _elementName_JLmosek_4fusion_4Utils_4StringBuffer_2(self,_0,_1):
   pass
  @staticmethod
  def _match_numInst_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_numInst_(*args):
    if len(args) != 0: return False
    return True
  def _numInst_alt_(self,):
    return self._numInst_()
  def _numInst_(self,):
   return numpy.int32(0)
  @staticmethod
  def _match_inst_I_3J_3J(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match__3J__(_1) and __arg_match__3J__(_2))
  @staticmethod
  def _match_alt_inst_I_3J_3J(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match__3J__(_2))
  def _inst_alt_I_3J_3J(self,_t__0,_t__1,_t__2):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int64))
   _1_res = self._inst_I_3J_3J(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _inst_I_3J_3J(self,_0,_1,_2):
   return numpy.int32(0)
  @staticmethod
  def _match_inst_I_3J(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match__3J__(_1))
  @staticmethod
  def _match_alt_inst_I_3J(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3J__(_1))
  def _inst_alt_I_3J(self,_t__0,_t__1):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _1_res = self._inst_I_3J(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _inst_I_3J(self,_0,_1):
   pass
  @staticmethod
  def _match_set_1values__3DZ(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match_Z__(_1))
  @staticmethod
  def _match_alt_set_1values__3DZ(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match_Z__(_1))
  def _set_1values_alt__3DZ(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = self._set_1values__3DZ(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _set_1values__3DZ(self,_0,_1):
   pass
  @staticmethod
  def _match_values_I_3DZ(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match__3D__(_1) and __arg_match_Z__(_2))
  @staticmethod
  def _match_alt_values_I_3DZ(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3D__(_1) and __arg_alt_match_Z__(_2))
  def _values_alt_I_3DZ(self,_t__0,_t__1,_t__2):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _2=_t__2
   _1_res = self._values_I_3DZ(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _values_I_3DZ(self,_0,_1,_2):
   pass
  @staticmethod
  def _match_make_1continuous_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_make_1continuous_(*args):
    if len(args) != 0: return False
    return True
  def _make_1continuous_alt_(self,):
    return self._make_1continuous_()
  def _make_1continuous_(self,):
   pass
  @staticmethod
  def _match_make_1integer_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_make_1integer_(*args):
    if len(args) != 0: return False
    return True
  def _make_1integer_alt_(self,):
    return self._make_1integer_()
  def _make_1integer_(self,):
   pass
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return ("NilVariable")
  @staticmethod
  def _match_index__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_index__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _index_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._index__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _index__3I(self,_0):
   return (mosek_fusion_NilVariable._ctor__3I(numpy.array([1 for _1 in range(0,int((self.__shape).shape[0]))], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_index_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_index_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _index_alt_I(self,_t__0):
    return self._index_I(numpy.int32(__0))
  def _index_I(self,_0):
   return (mosek_fusion_NilVariable._ctor__3I(numpy.array([1 for _1 in range(0,int((self.__shape).shape[0]))], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  def _slice_alt__3I_3I(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self._slice__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _slice__3I_3I(self,_0,_1):
   if ((int((self.__shape).shape[0])!=int((_0).shape[0])) or (int((self.__shape).shape[0])!=int((_1).shape[0]))):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching slice shape")
   for _2 in range(0,int((_0).shape[0])):
    if ((_1[_2] > _0[_2]) or ((_0[_2] < 0) or (_1[_2] >= self.__shape[_2]))):
     raise mosek_fusion_SliceError._ctor_S("Slice is out of bounds")
   return (mosek_fusion_NilVariable._ctor__3I(numpy.array([(_1[_3] - _0[_3]) for _3 in range(0,int((self.__shape).shape[0]))], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _slice_alt_II(self,_t__0,_t__1):
    return self._slice_II(numpy.int32(__0),numpy.int32(__1))
  def _slice_II(self,_0,_1):
   if ((_1 > _0) or ((_0 < 0) or (_1 > self.__shape[0]))):
    raise mosek_fusion_SliceError._ctor_S("Slice is out of bounds")
   elif (int((self.__shape).shape[0])!=1): # bld/grindsted/final/default/src/fusion/BaseVariable.monty:1032:16-31
    raise mosek_fusion_DimensionError._ctor_S("Mismatching slice shape")
   else:
    return (mosek_fusion_NilVariable._ctor__3I(numpy.array([(_1 - _0)], dtype=numpy.dtype(numpy.int32))))
 return NilVariable
mosek_fusion_NilVariable=__mk_mosek_fusion_NilVariable()
del __mk_mosek_fusion_NilVariable
def __mk_mosek_fusion_Var():
 class Var(object):
  @staticmethod
  def empty(*args):
    if False: pass
    elif mosek_fusion_Var._match_empty__3I(*args): 
      return mosek_fusion_Var._empty__3I(*args)
    elif mosek_fusion_Var._match_alt_empty__3I(*args): 
      return mosek_fusion_Var._empty_alt__3I(*args)
    else:
      raise ValueError('Invalid argument list empty('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Var.empty(array(int32,ndim=1))')
  @staticmethod
  def hrepeat(*args):
    if False: pass
    elif mosek_fusion_Var._match_hrepeat_Lmosek_4fusion_4Variable_2I(*args): 
      return mosek_fusion_Var._hrepeat_Lmosek_4fusion_4Variable_2I(*args)
    elif mosek_fusion_Var._match_alt_hrepeat_Lmosek_4fusion_4Variable_2I(*args): 
      return mosek_fusion_Var._hrepeat_alt_Lmosek_4fusion_4Variable_2I(*args)
    else:
      raise ValueError('Invalid argument list hrepeat('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Var.hrepeat(mosek.fusion.Variable,int32)')
  @staticmethod
  def vrepeat(*args):
    if False: pass
    elif mosek_fusion_Var._match_vrepeat_Lmosek_4fusion_4Variable_2I(*args): 
      return mosek_fusion_Var._vrepeat_Lmosek_4fusion_4Variable_2I(*args)
    elif mosek_fusion_Var._match_alt_vrepeat_Lmosek_4fusion_4Variable_2I(*args): 
      return mosek_fusion_Var._vrepeat_alt_Lmosek_4fusion_4Variable_2I(*args)
    else:
      raise ValueError('Invalid argument list vrepeat('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Var.vrepeat(mosek.fusion.Variable,int32)')
  @staticmethod
  def reshape(*args):
    if False: pass
    elif mosek_fusion_Var._match_reshape_Lmosek_4fusion_4Variable_2_3I(*args): 
      return mosek_fusion_Var._reshape_Lmosek_4fusion_4Variable_2_3I(*args)
    elif mosek_fusion_Var._match_alt_reshape_Lmosek_4fusion_4Variable_2_3I(*args): 
      return mosek_fusion_Var._reshape_alt_Lmosek_4fusion_4Variable_2_3I(*args)
    elif mosek_fusion_Var._match_reshape_Lmosek_4fusion_4Variable_2I(*args): 
      return mosek_fusion_Var._reshape_Lmosek_4fusion_4Variable_2I(*args)
    elif mosek_fusion_Var._match_alt_reshape_Lmosek_4fusion_4Variable_2I(*args): 
      return mosek_fusion_Var._reshape_alt_Lmosek_4fusion_4Variable_2I(*args)
    elif mosek_fusion_Var._match_reshape_Lmosek_4fusion_4Variable_2II(*args): 
      return mosek_fusion_Var._reshape_Lmosek_4fusion_4Variable_2II(*args)
    elif mosek_fusion_Var._match_alt_reshape_Lmosek_4fusion_4Variable_2II(*args): 
      return mosek_fusion_Var._reshape_alt_Lmosek_4fusion_4Variable_2II(*args)
    else:
      raise ValueError('Invalid argument list reshape('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Var.reshape(mosek.fusion.Variable,array(int32,ndim=1))\n\tmosek.fusion.Var.reshape(mosek.fusion.Variable,int32)\n\tmosek.fusion.Var.reshape(mosek.fusion.Variable,int32,int32)')
  @staticmethod
  def promote(*args):
    if False: pass
    elif mosek_fusion_Var._match_promote_Lmosek_4fusion_4Variable_2I(*args): 
      return mosek_fusion_Var._promote_Lmosek_4fusion_4Variable_2I(*args)
    elif mosek_fusion_Var._match_alt_promote_Lmosek_4fusion_4Variable_2I(*args): 
      return mosek_fusion_Var._promote_alt_Lmosek_4fusion_4Variable_2I(*args)
    else:
      raise ValueError('Invalid argument list promote('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Var.promote(mosek.fusion.Variable,int32)')
  @staticmethod
  def flatten(*args):
    if False: pass
    elif mosek_fusion_Var._match_flatten_Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._flatten_Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_alt_flatten_Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._flatten_alt_Lmosek_4fusion_4Variable_2(*args)
    else:
      raise ValueError('Invalid argument list flatten('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Var.flatten(mosek.fusion.Variable)')
  @staticmethod
  def repeat(*args):
    if False: pass
    elif mosek_fusion_Var._match_repeat_Lmosek_4fusion_4Variable_2I(*args): 
      return mosek_fusion_Var._repeat_Lmosek_4fusion_4Variable_2I(*args)
    elif mosek_fusion_Var._match_alt_repeat_Lmosek_4fusion_4Variable_2I(*args): 
      return mosek_fusion_Var._repeat_alt_Lmosek_4fusion_4Variable_2I(*args)
    elif mosek_fusion_Var._match_repeat_Lmosek_4fusion_4Variable_2II(*args): 
      return mosek_fusion_Var._repeat_Lmosek_4fusion_4Variable_2II(*args)
    elif mosek_fusion_Var._match_alt_repeat_Lmosek_4fusion_4Variable_2II(*args): 
      return mosek_fusion_Var._repeat_alt_Lmosek_4fusion_4Variable_2II(*args)
    else:
      raise ValueError('Invalid argument list repeat('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Var.repeat(mosek.fusion.Variable,int32)\n\tmosek.fusion.Var.repeat(mosek.fusion.Variable,int32,int32)')
  @staticmethod
  def stack(*args):
    if False: pass
    elif mosek_fusion_Var._match_stack__3_3Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._stack__3_3Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_alt_stack__3_3Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._stack_alt__3_3Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_stack__3Lmosek_4fusion_4Variable_2I(*args): 
      return mosek_fusion_Var._stack__3Lmosek_4fusion_4Variable_2I(*args)
    elif mosek_fusion_Var._match_alt_stack__3Lmosek_4fusion_4Variable_2I(*args): 
      return mosek_fusion_Var._stack_alt__3Lmosek_4fusion_4Variable_2I(*args)
    elif mosek_fusion_Var._match_stack_I_3Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._stack_I_3Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_alt_stack_I_3Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._stack_alt_I_3Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_stack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(*args): 
      return mosek_fusion_Var._stack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(*args)
    elif mosek_fusion_Var._match_alt_stack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(*args): 
      return mosek_fusion_Var._stack_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(*args)
    elif mosek_fusion_Var._match_stack_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._stack_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_alt_stack_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._stack_alt_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_stack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(*args): 
      return mosek_fusion_Var._stack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(*args)
    elif mosek_fusion_Var._match_alt_stack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(*args): 
      return mosek_fusion_Var._stack_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(*args)
    elif mosek_fusion_Var._match_stack_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._stack_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_alt_stack_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._stack_alt_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args)
    else:
      raise ValueError('Invalid argument list stack('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Var.stack(array(array(mosek.fusion.Variable,ndim=1),ndim=1))\n\tmosek.fusion.Var.stack(array(mosek.fusion.Variable,ndim=1),int32)\n\tmosek.fusion.Var.stack(int32,array(mosek.fusion.Variable,ndim=1))\n\tmosek.fusion.Var.stack(mosek.fusion.Variable,mosek.fusion.Variable,int32)\n\tmosek.fusion.Var.stack(int32,mosek.fusion.Variable,mosek.fusion.Variable)\n\tmosek.fusion.Var.stack(mosek.fusion.Variable,mosek.fusion.Variable,mosek.fusion.Variable,int32)\n\tmosek.fusion.Var.stack(int32,mosek.fusion.Variable,mosek.fusion.Variable,mosek.fusion.Variable)')
  @staticmethod
  def compress(*args):
    if False: pass
    elif mosek_fusion_Var._match_compress_Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._compress_Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_alt_compress_Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._compress_alt_Lmosek_4fusion_4Variable_2(*args)
    else:
      raise ValueError('Invalid argument list compress('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Var.compress(mosek.fusion.Variable)')
  @staticmethod
  def hstack(*args):
    if False: pass
    elif mosek_fusion_Var._match_hstack__3Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._hstack__3Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_alt_hstack__3Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._hstack_alt__3Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_hstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._hstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_alt_hstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._hstack_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_hstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._hstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_alt_hstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._hstack_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args)
    else:
      raise ValueError('Invalid argument list hstack('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Var.hstack(array(mosek.fusion.Variable,ndim=1))\n\tmosek.fusion.Var.hstack(mosek.fusion.Variable,mosek.fusion.Variable)\n\tmosek.fusion.Var.hstack(mosek.fusion.Variable,mosek.fusion.Variable,mosek.fusion.Variable)')
  @staticmethod
  def vstack(*args):
    if False: pass
    elif mosek_fusion_Var._match_vstack__3Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._vstack__3Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_alt_vstack__3Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._vstack_alt__3Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_vstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._vstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_alt_vstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._vstack_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_vstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._vstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Var._match_alt_vstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Var._vstack_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args)
    else:
      raise ValueError('Invalid argument list vstack('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Var.vstack(array(mosek.fusion.Variable,ndim=1))\n\tmosek.fusion.Var.vstack(mosek.fusion.Variable,mosek.fusion.Variable)\n\tmosek.fusion.Var.vstack(mosek.fusion.Variable,mosek.fusion.Variable,mosek.fusion.Variable)')
  def __repr__(self): return 'mosek.fusion.Var'
  @staticmethod
  def _match_empty__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_empty__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  @staticmethod
  def _empty_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Var._empty__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _empty__3I(_0):
   for _1 in range(0,int((_0).shape[0])):
    if (_0[_1] < 0):
     raise mosek_fusion_DimensionError._ctor_S("Invalid shape")
   return (mosek_fusion_NilVariable._ctor__3I(_0))
  @staticmethod
  def _match_compress_Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0))
  @staticmethod
  def _match_alt_compress_Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0))
  @staticmethod
  def _compress_alt_Lmosek_4fusion_4Variable_2(_t__0):
    return mosek_fusion_Var._compress_Lmosek_4fusion_4Variable_2(_0)
  @staticmethod
  def _compress_Lmosek_4fusion_4Variable_2(_0):
   _1=_0.getShape()
   _2=int((_1).shape[0])
   _3=0
   for _4 in range(0,_2):
    if (_1[_4]!=1):
     _3 += 1
   _5=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
   _6=0
   for _7 in range(0,_2):
    if (_1[_7]!=1):
     _5[_6] = _1[_7]
     _6 += 1
   return (mosek.fusion.Var._reshape_Lmosek_4fusion_4Variable_2_3I(_0,_5))
  @staticmethod
  def _match_reshape_Lmosek_4fusion_4Variable_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_reshape_Lmosek_4fusion_4Variable_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _reshape_alt_Lmosek_4fusion_4Variable_2I(_t__0,_t__1):
    return mosek_fusion_Var._reshape_Lmosek_4fusion_4Variable_2I(_0,numpy.int32(__1))
  @staticmethod
  def _reshape_Lmosek_4fusion_4Variable_2I(_0,_1):
   return (mosek.fusion.Var._reshape_Lmosek_4fusion_4Variable_2_3I(_0,numpy.array([_1], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_reshape_Lmosek_4fusion_4Variable_2II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_reshape_Lmosek_4fusion_4Variable_2II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  @staticmethod
  def _reshape_alt_Lmosek_4fusion_4Variable_2II(_t__0,_t__1,_t__2):
    return mosek_fusion_Var._reshape_Lmosek_4fusion_4Variable_2II(_0,numpy.int32(__1),numpy.int32(__2))
  @staticmethod
  def _reshape_Lmosek_4fusion_4Variable_2II(_0,_1,_2):
   return (mosek.fusion.Var._reshape_Lmosek_4fusion_4Variable_2_3I(_0,numpy.array([_1,_2], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_flatten_Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0))
  @staticmethod
  def _match_alt_flatten_Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0))
  @staticmethod
  def _flatten_alt_Lmosek_4fusion_4Variable_2(_t__0):
    return mosek_fusion_Var._flatten_Lmosek_4fusion_4Variable_2(_0)
  @staticmethod
  def _flatten_Lmosek_4fusion_4Variable_2(_0):
   return (mosek.fusion.Var._reshape_Lmosek_4fusion_4Variable_2_3I(_0,numpy.array([numpy.int32(mosek.fusion.Set._size__3I(_0.getShape()))], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_reshape_Lmosek_4fusion_4Variable_2_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_reshape_Lmosek_4fusion_4Variable_2_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _reshape_alt_Lmosek_4fusion_4Variable_2_3I(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Var._reshape_Lmosek_4fusion_4Variable_2_3I(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _reshape_Lmosek_4fusion_4Variable_2_3I(_0,_1):
   return (_0.reshape(_1))
  @staticmethod
  def _index_1permute_1_alt_Lmosek_4fusion_4Variable_2_3I(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Var._index_1permute_1_Lmosek_4fusion_4Variable_2_3I(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _index_1permute_1_Lmosek_4fusion_4Variable_2_3I(_0,_1):
   _4=_0.getShape()
   _5=int((_4).shape[0])
   _6=1
   for _7 in range(0,_5):
    _6 *= _4[_7]
   _8=_0.numInst()
   _9=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int64))
   _9[(_5 - 1)] = 1
   for _10 in range(1,_5):
    _9[((_5 - _10) - 1)] = (_9[(_5 - _10)] * _4[_1[(_5 - _10)]])
   if (_8 < _6):
    _2 = numpy.zeros((_8,), dtype=numpy.dtype(numpy.int64))
    _3 = numpy.zeros((_8,), dtype=numpy.dtype(numpy.int64))
    _0.inst(0,_2,0,_3)
   else:
    _2 = None
    _3 = numpy.zeros((_8,), dtype=numpy.dtype(numpy.int64))
    _0.inst(0,_3)
   if (_2 is None):
    _11=numpy.zeros((_8,), dtype=numpy.dtype(numpy.int64))
    _12=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int32))
    for _13 in range(0,_8):
     _14=_13
     for _15 in range(0,_5):
      _12[((_5 - _13) - 1)] = (_14 % _4[((_5 - _13) - 1)])
      _14 /= _4[((_5 - _13) - 1)]
     _16=0
     for _17 in range(0,_5):
      _16 += numpy.int32((_12[_1[_17]] * _9[_17]))
     _11[_16] = _3[_13]
    _3 = _11
   else:
    _18=numpy.zeros((_8,), dtype=numpy.dtype(numpy.int64))
    _19=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int32))
    for _20 in range(0,_8):
     _21=_20
     for _22 in range(0,_5):
      _19[((_5 - _20) - 1)] = (_21 % _4[((_5 - _20) - 1)])
      _21 /= _4[((_5 - _20) - 1)]
     _23=0
     for _24 in range(0,_5):
      _23 += numpy.int32((_19[_1[_24]] * _9[_24]))
     _18[_20] = _23
    _25=numpy.array([_26 for _26 in range(0,_8)], dtype=numpy.dtype(numpy.int64))
    mosek.fusion.CommonTools._argQsort__3J_3J_3JJJ(_25,_18,None,0,_8)
    _2 = numpy.array([_2[_25[_27]] for _27 in range(0,_8)], dtype=numpy.dtype(numpy.int64))
    _3 = numpy.array([_3[_25[_28]] for _28 in range(0,_8)], dtype=numpy.dtype(numpy.int64))
   return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(_0.getModel(),numpy.array([_4[_1[_29]] for _29 in range(0,_5)], dtype=numpy.dtype(numpy.int32)),_2,_3))
  @staticmethod
  def _match_hrepeat_Lmosek_4fusion_4Variable_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_hrepeat_Lmosek_4fusion_4Variable_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _hrepeat_alt_Lmosek_4fusion_4Variable_2I(_t__0,_t__1):
    return mosek_fusion_Var._hrepeat_Lmosek_4fusion_4Variable_2I(_0,numpy.int32(__1))
  @staticmethod
  def _hrepeat_Lmosek_4fusion_4Variable_2I(_0,_1):
   return (mosek.fusion.Var.__drepeat_Lmosek_4fusion_4Variable_2II(_0,1,_1))
  @staticmethod
  def _match_vrepeat_Lmosek_4fusion_4Variable_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_vrepeat_Lmosek_4fusion_4Variable_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _vrepeat_alt_Lmosek_4fusion_4Variable_2I(_t__0,_t__1):
    return mosek_fusion_Var._vrepeat_Lmosek_4fusion_4Variable_2I(_0,numpy.int32(__1))
  @staticmethod
  def _vrepeat_Lmosek_4fusion_4Variable_2I(_0,_1):
   return (mosek.fusion.Var.__drepeat_Lmosek_4fusion_4Variable_2II(_0,0,_1))
  @staticmethod
  def _match_repeat_Lmosek_4fusion_4Variable_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_repeat_Lmosek_4fusion_4Variable_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _repeat_alt_Lmosek_4fusion_4Variable_2I(_t__0,_t__1):
    return mosek_fusion_Var._repeat_Lmosek_4fusion_4Variable_2I(_0,numpy.int32(__1))
  @staticmethod
  def _repeat_Lmosek_4fusion_4Variable_2I(_0,_1):
   return (mosek.fusion.Var.__drepeat_Lmosek_4fusion_4Variable_2II(_0,0,_1))
  @staticmethod
  def _match_repeat_Lmosek_4fusion_4Variable_2II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_repeat_Lmosek_4fusion_4Variable_2II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  @staticmethod
  def _repeat_alt_Lmosek_4fusion_4Variable_2II(_t__0,_t__1,_t__2):
    return mosek_fusion_Var._repeat_Lmosek_4fusion_4Variable_2II(_0,numpy.int32(__1),numpy.int32(__2))
  @staticmethod
  def _repeat_Lmosek_4fusion_4Variable_2II(_0,_1,_2):
   return (mosek.fusion.Var.__drepeat_Lmosek_4fusion_4Variable_2II(_0,_2,_1))
  @staticmethod
  def __drepeat_alt_Lmosek_4fusion_4Variable_2II(_t__0,_t__1,_t__2):
    return mosek_fusion_Var.__drepeat_Lmosek_4fusion_4Variable_2II(_0,numpy.int32(__1),numpy.int32(__2))
  @staticmethod
  def __drepeat_Lmosek_4fusion_4Variable_2II(_0,_1,_2):
   if (_2 < 0):
    raise mosek_fusion_LengthError._ctor_S("Cannot repeat less than 0 times")
   elif (_2==0): # bld/grindsted/final/default/src/fusion/Var.monty:479:16-22
    _3=_0.getShape()
    _4=_3
    if (int((_3).shape[0])==_1):
     _4 = numpy.zeros(((_1 + 1),), dtype=numpy.dtype(numpy.int32))
     for _5 in range(0,_1):
      _4[_5] = _3[_5]
    _4[_1] = 0
    mosek.fusion.Debug._o_()._p_S("drepeat dim=")._p_I(_1)._p_S(", n=")._p_I(_2)._p_S(", shape=")._p__3I(_0.getShape())._p_S(" -> ")._p__3I(_4)._lf_()
    return (mosek_fusion_NilVariable._ctor__3I(_4))
   elif (_2==1): # bld/grindsted/final/default/src/fusion/Var.monty:490:16-22
    _6=_0.getShape()
    _7=_6
    if (int((_6).shape[0])==_1):
     _7 = numpy.zeros(((_1 + 1),), dtype=numpy.dtype(numpy.int32))
     for _8 in range(0,_1):
      _7[_8] = _6[_8]
     _7[_1] = 1
    mosek.fusion.Debug._o_()._p_S("drepeat dim=")._p_I(_1)._p_S(", n=")._p_I(_2)._p_S(", shape=")._p__3I(_0.getShape())._p_S(" -> ")._p__3I(_7)._lf_()
    return (_0)
   else:
    _9=_0.getModel()
    _10=_0.getShape()
    _11=int((_10).shape[0])
    if ((_1 < 0) or (_1 > _11)):
     raise mosek_fusion_DimensionError._ctor_S("Invalid stacking dimension")
    _12=mosek.fusion.Set._size__3I(_10)
    _13=_0.numInst()
    _14=(_13 * _2)
    _15=1
    for _16 in range(0,_1):
     _15 *= _10[_16]
    _17=(_10[_1] if ((_1 < _11) ) else 1)
    _18=(_17 * _2)
    _19=1
    for _20 in range((_1 + 1),_11):
     _19 *= _10[_20]
    _21=(_11 if ((_1 < _11) ) else (_1 + 1))
    _22=numpy.zeros((_21,), dtype=numpy.dtype(numpy.int32))
    for _23 in range(0,_11):
     _22[_23] = _10[_23]
    for _24 in range(_11,_21):
     _22[_24] = 1
    _22[_1] = _18
    if (_13 < _12):
     _25=numpy.zeros((_13,), dtype=numpy.dtype(numpy.int64))
     _26=numpy.zeros((_13,), dtype=numpy.dtype(numpy.int64))
     _27=numpy.zeros((_14,), dtype=numpy.dtype(numpy.int64))
     _28=numpy.zeros((_14,), dtype=numpy.dtype(numpy.int64))
     _0.inst(0,_26,0,_25)
     _29=(_18 * _19)
     _30=(_17 * _19)
     _31=_19
     if (_1==0):
      _32=0
      for _33 in range(0,_2):
       for _34 in range(0,_13):
        _28[_32] = (_26[_34] + (_33 * _12))
        _27[_32] = _25[_34]
        _32 += 1
      return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(_9,_22,_28,_27))
     elif (_1 >= _11): # bld/grindsted/final/default/src/fusion/Var.monty:547:22-31
      _35=0
      for _36 in range(0,_13):
       for _37 in range(0,_2):
        _28[_35] = ((_26[_36] * _2) + _37)
        _27[_35] = _25[_36]
        _35 += 1
      return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(_9,_22,_28,_27))
     else:
      _38=0
      for _39 in range(0,_13):
       _40=(_26[_39] // _30)
       _41=((_26[_39] // _31) % _17)
       _42=(_26[_39] % _19)
       for _43 in range(0,_2):
        _28[_38] = (((_40 * _29) + ((_41 + (_17 * _43)) * _19)) + _42)
        _27[_38] = _25[_39]
        _38 += 1
      _44=1
      for _45 in range(0,_21):
       if (_44 < _22[_45]):
        _44 = _22[_45]
      _46=numpy.zeros((_14,), dtype=numpy.dtype(numpy.int32))
      _47=numpy.zeros((_14,), dtype=numpy.dtype(numpy.int32))
      _48=numpy.zeros(((_44 + 1),), dtype=numpy.dtype(numpy.int32))
      _49=numpy.zeros((_21,), dtype=numpy.dtype(numpy.int64))
      _49[(_21 - 1)] = 1
      for _50 in range(1,_21):
       _49[((_21 - _50) - 1)] = (_49[(_21 - _50)] * _22[(_21 - _50)])
      for _51 in range(0,_14):
       _46[_51] = _51
      for _52 in range(0,_21):
       _53=((_21 - _52) - 1)
       for _54 in range(0,(_22[_53] + 1)):
        _48[_54] = 0
       for _55 in range(0,_14):
        _48[(((_28[_55] // _49[_53]) % _22[_53]) + 1)] += 1
       for _56 in range(0,_22[_53]):
        _48[(_56 + 1)] += _48[_56]
       for _57 in range(0,_14):
        _58=_46[_57]
        _59=((_28[_58] // _49[_53]) % _22[_53])
        _47[_48[_59]] = _58
        _48[_59] += 1
       _60=_46
       _46 = _47
       _47 = _60
      return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(_9,_22,numpy.array([_28[_46[_61]] for _61 in range(0,_14)], dtype=numpy.dtype(numpy.int64)),numpy.array([_27[_46[_62]] for _62 in range(0,_14)], dtype=numpy.dtype(numpy.int64))))
    else:
     _63=numpy.zeros((_13,), dtype=numpy.dtype(numpy.int64))
     _64=numpy.zeros(((_13 * _2),), dtype=numpy.dtype(numpy.int64))
     _0.inst(0,_63)
     _65=(_18 * _19)
     _66=_19
     _67=0
     for _68 in range(0,_15):
      for _69 in range(0,_17):
       for _70 in range(0,_19):
        for _71 in range(0,_2):
         _64[(((_68 * _65) + ((_69 + (_71 * _17)) * _66)) + _70)] = _63[_67]
        _67 += 1
     return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(_9,_22,None,_64))
  @staticmethod
  def _match_stack__3_3Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_3Lmosek_4fusion_4Variable_2__(_0))
  @staticmethod
  def _match_alt_stack__3_3Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_3Lmosek_4fusion_4Variable_2__(_0))
  @staticmethod
  def _stack_alt__3_3Lmosek_4fusion_4Variable_2(_t__0):
   _0=_monty.makeJaggedArray(_t__0,(1,1),numpy.dtype(object))
   _1_res = mosek_fusion_Var._stack__3_3Lmosek_4fusion_4Variable_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _stack__3_3Lmosek_4fusion_4Variable_2(_0):
   return (mosek.fusion.Var._dstack__3Lmosek_4fusion_4Variable_2I(numpy.array([mosek.fusion.Var._dstack__3Lmosek_4fusion_4Variable_2I(_0[_1],1) for _1 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _match_vstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_Lmosek_4fusion_4Variable_2__(_1) and __arg_match_Lmosek_4fusion_4Variable_2__(_2))
  @staticmethod
  def _match_alt_vstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_2))
  @staticmethod
  def _vstack_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Var._vstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(_0,_1,_2)
  @staticmethod
  def _vstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(_0,_1,_2):
   return (mosek.fusion.Var._dstack__3Lmosek_4fusion_4Variable_2I(numpy.array([_0,_1,_2], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _match_vstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _match_alt_vstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _vstack_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(_t__0,_t__1):
    return mosek_fusion_Var._vstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(_0,_1)
  @staticmethod
  def _vstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(_0,_1):
   return (mosek.fusion.Var._dstack__3Lmosek_4fusion_4Variable_2I(numpy.array([_0,_1], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _match_vstack__3Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3Lmosek_4fusion_4Variable_2__(_0))
  @staticmethod
  def _match_alt_vstack__3Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Variable_2__(_0))
  @staticmethod
  def _vstack_alt__3Lmosek_4fusion_4Variable_2(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Var._vstack__3Lmosek_4fusion_4Variable_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _vstack__3Lmosek_4fusion_4Variable_2(_0):
   return (mosek.fusion.Var._dstack__3Lmosek_4fusion_4Variable_2I(_0,0))
  @staticmethod
  def _match_hstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_Lmosek_4fusion_4Variable_2__(_1) and __arg_match_Lmosek_4fusion_4Variable_2__(_2))
  @staticmethod
  def _match_alt_hstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_2))
  @staticmethod
  def _hstack_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Var._hstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(_0,_1,_2)
  @staticmethod
  def _hstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(_0,_1,_2):
   return (mosek.fusion.Var._dstack__3Lmosek_4fusion_4Variable_2I(numpy.array([_0,_1,_2], dtype=numpy.dtype(object)),1))
  @staticmethod
  def _match_hstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _match_alt_hstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _hstack_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(_t__0,_t__1):
    return mosek_fusion_Var._hstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(_0,_1)
  @staticmethod
  def _hstack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(_0,_1):
   return (mosek.fusion.Var._dstack__3Lmosek_4fusion_4Variable_2I(numpy.array([_0,_1], dtype=numpy.dtype(object)),1))
  @staticmethod
  def _match_hstack__3Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3Lmosek_4fusion_4Variable_2__(_0))
  @staticmethod
  def _match_alt_hstack__3Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Variable_2__(_0))
  @staticmethod
  def _hstack_alt__3Lmosek_4fusion_4Variable_2(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Var._hstack__3Lmosek_4fusion_4Variable_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _hstack__3Lmosek_4fusion_4Variable_2(_0):
   return (mosek.fusion.Var._dstack__3Lmosek_4fusion_4Variable_2I(_0,1))
  @staticmethod
  def _match_stack__3Lmosek_4fusion_4Variable_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3Lmosek_4fusion_4Variable_2__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_stack__3Lmosek_4fusion_4Variable_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _stack_alt__3Lmosek_4fusion_4Variable_2I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1=numpy.int32(_t__1)
   _1_res = mosek_fusion_Var._stack__3Lmosek_4fusion_4Variable_2I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _stack__3Lmosek_4fusion_4Variable_2I(_0,_1):
   return (mosek.fusion.Var._stack_I_3Lmosek_4fusion_4Variable_2(_1,_0))
  @staticmethod
  def _match_stack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_Lmosek_4fusion_4Variable_2__(_1) and __arg_match_Lmosek_4fusion_4Variable_2__(_2) and __arg_match_I__(_3))
  @staticmethod
  def _match_alt_stack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_2) and __arg_alt_match_I__(_3))
  @staticmethod
  def _stack_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(_t__0,_t__1,_t__2,_t__3):
    return mosek_fusion_Var._stack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(_0,_1,_2,numpy.int32(__3))
  @staticmethod
  def _stack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(_0,_1,_2,_3):
   return (mosek.fusion.Var._stack_I_3Lmosek_4fusion_4Variable_2(_3,numpy.array([_0,_1,_2], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_stack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_Lmosek_4fusion_4Variable_2__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_stack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_1) and __arg_alt_match_I__(_2))
  @staticmethod
  def _stack_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(_t__0,_t__1,_t__2):
    return mosek_fusion_Var._stack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(_0,_1,numpy.int32(__2))
  @staticmethod
  def _stack_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2I(_0,_1,_2):
   return (mosek.fusion.Var._stack_I_3Lmosek_4fusion_4Variable_2(_2,numpy.array([_0,_1], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_stack_I_3Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match__3Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _match_alt_stack_I_3Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _stack_alt_I_3Lmosek_4fusion_4Variable_2(_t__0,_t__1):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Var._stack_I_3Lmosek_4fusion_4Variable_2(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _stack_I_3Lmosek_4fusion_4Variable_2(_0,_1):
   _2=_0
   for _3 in range(0,int((_1).shape[0])):
    if (_2 < _1[_3].getND()):
     _2 = _1[_3].getND()
   return (mosek.fusion.Var._dstack__3Lmosek_4fusion_4Variable_2I(_1,_0))
  @staticmethod
  def _match_stack_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_I__(_0) and __arg_match_Lmosek_4fusion_4Variable_2__(_1) and __arg_match_Lmosek_4fusion_4Variable_2__(_2) and __arg_match_Lmosek_4fusion_4Variable_2__(_3))
  @staticmethod
  def _match_alt_stack_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_2) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_3))
  @staticmethod
  def _stack_alt_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(_t__0,_t__1,_t__2,_t__3):
    return mosek_fusion_Var._stack_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(numpy.int32(__0),_1,_2,_3)
  @staticmethod
  def _stack_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(_0,_1,_2,_3):
   return (mosek.fusion.Var._dstack__3Lmosek_4fusion_4Variable_2I(numpy.array([_1,_2,_3], dtype=numpy.dtype(object)),_0))
  @staticmethod
  def _match_stack_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_Lmosek_4fusion_4Variable_2__(_1) and __arg_match_Lmosek_4fusion_4Variable_2__(_2))
  @staticmethod
  def _match_alt_stack_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_2))
  @staticmethod
  def _stack_alt_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Var._stack_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(numpy.int32(__0),_1,_2)
  @staticmethod
  def _stack_ILmosek_4fusion_4Variable_2Lmosek_4fusion_4Variable_2(_0,_1,_2):
   return (mosek.fusion.Var._dstack__3Lmosek_4fusion_4Variable_2I(numpy.array([_1,_2], dtype=numpy.dtype(object)),_0))
  @staticmethod
  def _match_promote_Lmosek_4fusion_4Variable_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_promote_Lmosek_4fusion_4Variable_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _promote_alt_Lmosek_4fusion_4Variable_2I(_t__0,_t__1):
    return mosek_fusion_Var._promote_Lmosek_4fusion_4Variable_2I(_0,numpy.int32(__1))
  @staticmethod
  def _promote_Lmosek_4fusion_4Variable_2I(_0,_1):
   if (_1 > _0.getND()):
    _2=numpy.zeros((_1,), dtype=numpy.dtype(numpy.int32))
    _3=_0.getShape()
    for _4 in range(0,int((_3).shape[0])):
     _2[_4] = _3[_4]
    for _5 in range(int((_3).shape[0]),_1):
     _2[_5] = 1
    return (_0.reshape(_2))
   else:
    return (_0)
  @staticmethod
  def _dstack_alt__3Lmosek_4fusion_4Variable_2I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1=numpy.int32(_t__1)
   _1_res = mosek_fusion_Var._dstack__3Lmosek_4fusion_4Variable_2I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _dstack__3Lmosek_4fusion_4Variable_2I(_0,_1):
   if (_1 < 0):
    raise mosek_fusion_DimensionError._ctor_S("Invalid stacking dimension")
   _2=None
   for _3 in range(0,int((_0).shape[0])):
    if (_2 is None):
     _2 = _0[_3].getModel()
    elif ((_0[_3].getModel() is not None) and (_0[_3].getModel() is not _2)): # bld/grindsted/final/default/src/fusion/Var.monty:162:20-69
     _4=mosek.fusion.Utils.StringBuffer()
     _5=(_2._getName_() if ((int(len(_2._getName_())) > 0) ) else "?")
     _6=(_0[_3].getModel()._getName_() if ((int(len(_0[_3].getModel()._getName_())) > 0) ) else "?")
     _4._a_S("Variables belong to different models: '")._a_S(_5)._a_S("' and '")._a_S(_6)._a_S("'")
     raise mosek_fusion_ModelError._ctor_S(_4._toString_())
   if (int((_0).shape[0])==0):
    return (mosek_fusion_NilVariable._ctor_())
   elif (int((_0).shape[0])==1): # bld/grindsted/final/default/src/fusion/Var.monty:174:16-27
    return (_0[0])
   else:
    _7=int((_0).shape[0])
    _8=numpy.array([_0[_9].numInst() for _9 in range(0,_7)], dtype=numpy.dtype(numpy.int32))
    _10=_monty.initJaggedArray([_0[_11].getShape() for _11 in range(0,_7)], 1)
    _12=numpy.array([int((_10[_13]).shape[0]) for _13 in range(0,_7)], dtype=numpy.dtype(numpy.int32))
    _14=_10[0]
    _15=_12[0]
    _16=0
    for _17 in range(0,_7):
     _16 += _8[_17]
    _18=(_1 + 1)
    for _19 in range(0,_7):
     if (_18 < _12[_19]):
      _18 = _12[_19]
    _20=numpy.zeros((_18,), dtype=numpy.dtype(numpy.int32))
    for _21 in range(0,_15):
     _20[_21] = _14[_21]
    for _22 in range(_15,_18):
     _20[_22] = 1
    _20[_1] = 0
    for _23 in range(0,_7):
     _20[_1] += (_10[_23][_1] if ((int((_10[_23]).shape[0]) > _1) ) else 1)
    for _24 in range(0,_7):
     for _25 in range(0,int((_10[_24]).shape[0])):
      if ((_25!=_1) and (_10[_24][_25]!=_20[_25])):
       raise mosek_fusion_DimensionError._ctor_S("Variable dimensions do not match")
     for _26 in range(int((_10[_24]).shape[0]),_18):
      if ((_26!=_1) and (1!=_20[_26])):
       raise mosek_fusion_DimensionError._ctor_S("Variable dimensions do not match")
    _27=numpy.zeros((_16,), dtype=numpy.dtype(numpy.int64))
    _28=numpy.zeros((_16,), dtype=numpy.dtype(numpy.int64))
    _29=numpy.array([(_10[_30][_1] if ((_1 < int((_10[_30]).shape[0])) ) else 1) for _30 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int32))
    _31=1
    for _32 in range(0,_1):
     _31 *= (_14[_32] if ((_32 < int((_14).shape[0])) ) else 1)
    _33=0
    for _34 in range(0,_7):
     _33 += _29[_34]
    _35=1
    for _36 in range((_1 + 1),int((_14).shape[0])):
     _35 *= _14[_36]
    if (_31==1):
     _37=0
     _38=0
     for _39 in range(0,_7):
      _0[_39].inst(_37,_28,_37,_27)
      for _40 in range(0,_8[_39]):
       _28[_37] += _38
       _37 += 1
      _38 += mosek.fusion.Set._size__3I(_10[_39])
     return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(_2,_20,(_28 if ((_16 < ((_31 * _33) * _35)) ) else None),_27))
    else:
     _41=0
     for _42 in range(0,_7):
      _41 += _0[_42].inst(_41,_28,_41,_27)
     _43=numpy.zeros((_16,), dtype=numpy.dtype(numpy.int32))
     _44=numpy.zeros((_16,), dtype=numpy.dtype(numpy.int32))
     _45=numpy.zeros((_7,), dtype=numpy.dtype(numpy.int32))
     for _46 in range(0,(_7 - 1)):
      _45[(_46 + 1)] = (_45[_46] + _29[_46])
     for _47 in range(0,_16):
      _43[_47] = _47
     _48=0
     for _49 in range(0,_7):
      for _50 in range(0,_8[_49]):
       _51=(_28[_48] // (_29[_49] * _35))
       _52=((_28[_48] // _35) % _29[_49])
       _53=(_28[_48] % _35)
       _28[_48] = (((((_51 * _33) + _52) + _45[_49]) * _35) + _53)
       _48 += 1
     _54=1
     for _55 in range(0,_18):
      _54 = (_20[_55] if ((_54 < _20[_55]) ) else _54)
     _56=numpy.zeros((_18,), dtype=numpy.dtype(numpy.int64))
     _56[(_18 - 1)] = 1
     for _57 in range(1,_18):
      _56[((_18 - _57) - 1)] = (_56[(_18 - _57)] * _20[(_18 - _57)])
     _58=numpy.zeros(((_54 + 1),), dtype=numpy.dtype(numpy.int32))
     for _59 in range(0,_18):
      _60=((_18 - _59) - 1)
      for _61 in range(0,(_20[_60] + 1)):
       _58[_61] = 0
      for _62 in range(0,_16):
       _58[(((_28[_62] // _56[_60]) % _20[_60]) + 1)] += 1
      for _63 in range(0,_20[_60]):
       _58[(_63 + 1)] += _58[_63]
      for _64 in range(0,_16):
       _65=_43[_64]
       _66=((_28[_65] // _56[_60]) % _20[_60])
       _44[_58[_66]] = _65
       _58[_66] += 1
      _67=_43
      _43 = _44
      _44 = _67
     return (mosek_fusion_SliceVariable._ctor_Lmosek_4fusion_4Model_2_3I_3J_3J(_2,_20,(numpy.array([_28[_43[_68]] for _68 in range(0,_16)], dtype=numpy.dtype(numpy.int64)) if ((_16 < ((_31 * _33) * _35)) ) else None),numpy.array([_27[_43[_69]] for _69 in range(0,_16)], dtype=numpy.dtype(numpy.int64))))
 return Var
mosek_fusion_Var=__mk_mosek_fusion_Var()
del __mk_mosek_fusion_Var
def __mk_mosek_fusion_Constraint():
 class Constraint(object):
  __slots__ = ['_Constraint__con_nativeidxs','_Constraint__shape','_Constraint__model']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Model_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Model_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Model_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Model_2(*args)
    elif self.__match_ctor_Lmosek_4fusion_4Model_2_3I_3I(*args): 
      self._ctor_init_Lmosek_4fusion_4Model_2_3I_3I(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Model_2_3I_3I(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Model_2_3I_3I(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.Constraint.ctor(mosek.fusion.Constraint,mosek.fusion.Model)\n\tmosek.fusion.Constraint.ctor(mosek.fusion.Model,array(int32,ndim=1),array(int32,ndim=1))')
  def getND(self,*args):
    if False: pass
    elif mosek_fusion_Constraint._match_getND_(*args): 
      return self._getND_(*args)
    elif mosek_fusion_Constraint._match_alt_getND_(*args): 
      return self._getND_alt_(*args)
    else:
      raise ValueError('Invalid argument list getND('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Constraint.getND()')
  def get_model(self,*args):
    if False: pass
    elif mosek_fusion_Constraint._match_get_1model_(*args): 
      return self._get_1model_(*args)
    elif mosek_fusion_Constraint._match_alt_get_1model_(*args): 
      return self._get_1model_alt_(*args)
    else:
      raise ValueError('Invalid argument list get_model('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Constraint.get_model()')
  def slice(self,*args):
    if False: pass
    elif mosek_fusion_Constraint._match_slice_II(*args): 
      return self._slice_II(*args)
    elif mosek_fusion_Constraint._match_alt_slice_II(*args): 
      return self._slice_alt_II(*args)
    elif mosek_fusion_Constraint._match_slice__3I_3I(*args): 
      return self._slice__3I_3I(*args)
    elif mosek_fusion_Constraint._match_alt_slice__3I_3I(*args): 
      return self._slice_alt__3I_3I(*args)
    else:
      raise ValueError('Invalid argument list slice('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Constraint.slice(int32,int32)\n\tmosek.fusion.Constraint.slice(array(int32,ndim=1),array(int32,ndim=1))')
  @staticmethod
  def vstack(*args):
    if False: pass
    elif mosek_fusion_Constraint._match_vstack__3Lmosek_4fusion_4Constraint_2(*args): 
      return mosek_fusion_Constraint._vstack__3Lmosek_4fusion_4Constraint_2(*args)
    elif mosek_fusion_Constraint._match_alt_vstack__3Lmosek_4fusion_4Constraint_2(*args): 
      return mosek_fusion_Constraint._vstack_alt__3Lmosek_4fusion_4Constraint_2(*args)
    elif mosek_fusion_Constraint._match_vstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args): 
      return mosek_fusion_Constraint._vstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args)
    elif mosek_fusion_Constraint._match_alt_vstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args): 
      return mosek_fusion_Constraint._vstack_alt_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args)
    elif mosek_fusion_Constraint._match_vstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args): 
      return mosek_fusion_Constraint._vstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args)
    elif mosek_fusion_Constraint._match_alt_vstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args): 
      return mosek_fusion_Constraint._vstack_alt_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args)
    else:
      raise ValueError('Invalid argument list vstack('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Constraint.vstack(array(mosek.fusion.Constraint,ndim=1))\n\tmosek.fusion.Constraint.vstack(mosek.fusion.Constraint,mosek.fusion.Constraint)\n\tmosek.fusion.Constraint.vstack(mosek.fusion.Constraint,mosek.fusion.Constraint,mosek.fusion.Constraint)')
  def getSize(self,*args):
    if False: pass
    elif mosek_fusion_Constraint._match_getSize_(*args): 
      return self._getSize_(*args)
    elif mosek_fusion_Constraint._match_alt_getSize_(*args): 
      return self._getSize_alt_(*args)
    else:
      raise ValueError('Invalid argument list getSize('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Constraint.getSize()')
  def get_nd(self,*args):
    if False: pass
    elif mosek_fusion_Constraint._match_get_1nd_(*args): 
      return self._get_1nd_(*args)
    elif mosek_fusion_Constraint._match_alt_get_1nd_(*args): 
      return self._get_1nd_alt_(*args)
    else:
      raise ValueError('Invalid argument list get_nd('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Constraint.get_nd()')
  def dual(self,*args):
    if False: pass
    elif mosek_fusion_Constraint._match_dual_(*args): 
      return self._dual_(*args)
    elif mosek_fusion_Constraint._match_alt_dual_(*args): 
      return self._dual_alt_(*args)
    else:
      raise ValueError('Invalid argument list dual('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Constraint.dual()')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_Constraint._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_Constraint._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Constraint.toString()')
  def getShape(self,*args):
    if False: pass
    elif mosek_fusion_Constraint._match_getShape_(*args): 
      return self._getShape_(*args)
    elif mosek_fusion_Constraint._match_alt_getShape_(*args): 
      return self._getShape_alt_(*args)
    else:
      raise ValueError('Invalid argument list getShape('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Constraint.getShape()')
  @staticmethod
  def hstack(*args):
    if False: pass
    elif mosek_fusion_Constraint._match_hstack__3Lmosek_4fusion_4Constraint_2(*args): 
      return mosek_fusion_Constraint._hstack__3Lmosek_4fusion_4Constraint_2(*args)
    elif mosek_fusion_Constraint._match_alt_hstack__3Lmosek_4fusion_4Constraint_2(*args): 
      return mosek_fusion_Constraint._hstack_alt__3Lmosek_4fusion_4Constraint_2(*args)
    elif mosek_fusion_Constraint._match_hstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args): 
      return mosek_fusion_Constraint._hstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args)
    elif mosek_fusion_Constraint._match_alt_hstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args): 
      return mosek_fusion_Constraint._hstack_alt_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args)
    elif mosek_fusion_Constraint._match_hstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args): 
      return mosek_fusion_Constraint._hstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args)
    elif mosek_fusion_Constraint._match_alt_hstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args): 
      return mosek_fusion_Constraint._hstack_alt_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args)
    else:
      raise ValueError('Invalid argument list hstack('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Constraint.hstack(array(mosek.fusion.Constraint,ndim=1))\n\tmosek.fusion.Constraint.hstack(mosek.fusion.Constraint,mosek.fusion.Constraint)\n\tmosek.fusion.Constraint.hstack(mosek.fusion.Constraint,mosek.fusion.Constraint,mosek.fusion.Constraint)')
  def getModel(self,*args):
    if False: pass
    elif mosek_fusion_Constraint._match_getModel_(*args): 
      return self._getModel_(*args)
    elif mosek_fusion_Constraint._match_alt_getModel_(*args): 
      return self._getModel_alt_(*args)
    else:
      raise ValueError('Invalid argument list getModel('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Constraint.getModel()')
  def level(self,*args):
    if False: pass
    elif mosek_fusion_Constraint._match_level_(*args): 
      return self._level_(*args)
    elif mosek_fusion_Constraint._match_alt_level_(*args): 
      return self._level_alt_(*args)
    else:
      raise ValueError('Invalid argument list level('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Constraint.level()')
  @staticmethod
  def stack(*args):
    if False: pass
    elif mosek_fusion_Constraint._match_stack__3Lmosek_4fusion_4Constraint_2I(*args): 
      return mosek_fusion_Constraint._stack__3Lmosek_4fusion_4Constraint_2I(*args)
    elif mosek_fusion_Constraint._match_alt_stack__3Lmosek_4fusion_4Constraint_2I(*args): 
      return mosek_fusion_Constraint._stack_alt__3Lmosek_4fusion_4Constraint_2I(*args)
    elif mosek_fusion_Constraint._match_stack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(*args): 
      return mosek_fusion_Constraint._stack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(*args)
    elif mosek_fusion_Constraint._match_alt_stack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(*args): 
      return mosek_fusion_Constraint._stack_alt_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(*args)
    elif mosek_fusion_Constraint._match_stack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(*args): 
      return mosek_fusion_Constraint._stack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(*args)
    elif mosek_fusion_Constraint._match_alt_stack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(*args): 
      return mosek_fusion_Constraint._stack_alt_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(*args)
    else:
      raise ValueError('Invalid argument list stack('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Constraint.stack(array(mosek.fusion.Constraint,ndim=1),int32)\n\tmosek.fusion.Constraint.stack(mosek.fusion.Constraint,mosek.fusion.Constraint,int32)\n\tmosek.fusion.Constraint.stack(mosek.fusion.Constraint,mosek.fusion.Constraint,mosek.fusion.Constraint,int32)')
  def size(self,*args):
    if False: pass
    elif mosek_fusion_Constraint._match_size_(*args): 
      return self._size_(*args)
    elif mosek_fusion_Constraint._match_alt_size_(*args): 
      return self._size_alt_(*args)
    else:
      raise ValueError('Invalid argument list size('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Constraint.size()')
  def index(self,*args):
    if False: pass
    elif mosek_fusion_Constraint._match_index_I(*args): 
      return self._index_I(*args)
    elif mosek_fusion_Constraint._match_alt_index_I(*args): 
      return self._index_alt_I(*args)
    elif mosek_fusion_Constraint._match_index__3I(*args): 
      return self._index__3I(*args)
    elif mosek_fusion_Constraint._match_alt_index__3I(*args): 
      return self._index_alt__3I(*args)
    else:
      raise ValueError('Invalid argument list index('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Constraint.index(int32)\n\tmosek.fusion.Constraint.index(array(int32,ndim=1))')
  def update(self,*args):
    if False: pass
    elif mosek_fusion_Constraint._match_update_Lmosek_4fusion_4Expression_2(*args): 
      return self._update_Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Constraint._match_alt_update_Lmosek_4fusion_4Expression_2(*args): 
      return self._update_alt_Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Constraint._match_update__3D(*args): 
      return self._update__3D(*args)
    elif mosek_fusion_Constraint._match_alt_update__3D(*args): 
      return self._update_alt__3D(*args)
    elif mosek_fusion_Constraint._match_update_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(*args): 
      return self._update_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Constraint._match_alt_update_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(*args): 
      return self._update_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Constraint._match_update_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2Z(*args): 
      return self._update_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2Z(*args)
    elif mosek_fusion_Constraint._match_alt_update_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2Z(*args): 
      return self._update_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2Z(*args)
    else:
      raise ValueError('Invalid argument list update('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Constraint.update(mosek.fusion.Expression)\n\tmosek.fusion.Constraint.update(array(double,ndim=1))\n\tmosek.fusion.Constraint.update(mosek.fusion.Expression,mosek.fusion.Variable)\n\tmosek.fusion.Constraint.update(mosek.fusion.Expression,mosek.fusion.Variable,bool)')
  def remove(self,*args):
    if False: pass
    elif mosek_fusion_Constraint._match_remove_(*args): 
      return self._remove_(*args)
    elif mosek_fusion_Constraint._match_alt_remove_(*args): 
      return self._remove_alt_(*args)
    else:
      raise ValueError('Invalid argument list remove('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Constraint.remove()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.Constraint: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Model_2(c,m):
    o = Constraint.__new__(Constraint)
    o._ctor_init_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Model_2(c,m)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    c,m, = args
    return (__arg_match_Lmosek_4fusion_4Constraint_2__(c) and __arg_match_Lmosek_4fusion_4Model_2__(m))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    c,m, = args
    return (__arg_alt_match_Lmosek_4fusion_4Constraint_2__(c) and __arg_alt_match_Lmosek_4fusion_4Model_2__(m))
  def _ctor_alt_init_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Model_2(self,c,m):
    self._ctor_init_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Model_2(c,m)
  def _ctor_init_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Model_2(self,c,m):
   self.__model = m
   self.__shape = (c.__shape)
   self.__con_nativeidxs = (c.__con_nativeidxs)
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2_3I_3I(model,shape,con_nativeidxs):
    o = Constraint.__new__(Constraint)
    o._ctor_init_Lmosek_4fusion_4Model_2_3I_3I(model,shape,con_nativeidxs)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2_3I_3I(*args):
    if len(args) != 3: return False
    model,shape,con_nativeidxs, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(model) and __arg_match__3I__(shape) and __arg_match__3I__(con_nativeidxs))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2_3I_3I(*args):
    if len(args) != 3: return False
    model,shape,con_nativeidxs, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(model) and __arg_alt_match__3I__(shape) and __arg_alt_match__3I__(con_nativeidxs))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2_3I_3I(self,model,shape,con_nativeidxs):
    self._ctor_init_Lmosek_4fusion_4Model_2_3I_3I(model,numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.array(con_nativeidxs,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_Lmosek_4fusion_4Model_2_3I_3I(self,model,shape,con_nativeidxs):
   (self.__model) = model
   (self.__shape) = shape
   (self.__con_nativeidxs) = con_nativeidxs
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   raise mosek_fusion_UnimplementedError._ctor_S("Constraint.toString")
  def _toStringArray_alt__3JJ_3S(self,_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.int64(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(object))
   _1_res = self._toStringArray__3JJ_3S(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _toStringArray__3JJ_3S(self,_0,_1,_2):
   pass
  def _dual_1lu_alt_I_3DZ(self,_t__0,_t__1,_t__2):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _2=_t__2
   _1_res = self._dual_1lu_I_3DZ(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _dual_1lu_I_3DZ(self,_0,_1,_2):
   self.__model.getConstraintDuals(_2,self.__con_nativeidxs,_1,_0)
  @staticmethod
  def _match_dual_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_dual_(*args):
    if len(args) != 0: return False
    return True
  def _dual_alt_(self,):
    return self._dual_()
  def _dual_(self,):
   _0=numpy.zeros((int((self.__con_nativeidxs).shape[0]),), dtype=numpy.dtype(numpy.float64))
   self.__values_ZI_3D(False,0,_0)
   return (_0)
  @staticmethod
  def _match_level_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_level_(*args):
    if len(args) != 0: return False
    return True
  def _level_alt_(self,):
    return self._level_()
  def _level_(self,):
   _0=numpy.zeros((int((self.__con_nativeidxs).shape[0]),), dtype=numpy.dtype(numpy.float64))
   self.__values_ZI_3D(True,0,_0)
   return (_0)
  def __values_alt_ZI_3D(self,_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.int32(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _1_res = self.__values_ZI_3D(_0,_1,_2)
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __values_ZI_3D(self,_0,_1,_2):
   self.__model.getConstraintValues(_0,self.__con_nativeidxs,_2,_1)
  @staticmethod
  def _match_remove_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_remove_(*args):
    if len(args) != 0: return False
    return True
  def _remove_alt_(self,):
    return self._remove_()
  def _remove_(self,):
   raise mosek_fusion_DeletionError._ctor_S("Only original constraints can be removed")
  @staticmethod
  def _match_update__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_update__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  def _update_alt__3D(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = self._update__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _update__3D(self,_0):
   self.update(mosek.fusion.Expr._reshape_Lmosek_4fusion_4Expression_2_3I(mosek.fusion.Expr._constTerm__3D(_0),self.getShape()),mosek_fusion_NilVariable._ctor_(),True)
  @staticmethod
  def _match_update_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _match_alt_update_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0))
  def _update_alt_Lmosek_4fusion_4Expression_2(self,_t__0):
    return self._update_Lmosek_4fusion_4Expression_2(_0)
  def _update_Lmosek_4fusion_4Expression_2(self,_0):
   _1=_0.getShape()
   if (int((self.__shape).shape[0]) < int((_1).shape[0])):
    raise mosek_fusion_DimensionError._ctor_S("Expression shape does not match constraint")
   for _2 in range(0,int((_1).shape[0])):
    if (_1[_2]!=self.__shape[_2]):
     raise mosek_fusion_DimensionError._ctor_S("Expression shape does not match constraint")
   for _3 in range(int((_1).shape[0]),int((self.__shape).shape[0])):
    if (self.__shape[_3]!=1):
     raise mosek_fusion_DimensionError._ctor_S("Expression shape does not match constraint")
   self.__model._update__3ILmosek_4fusion_4Expression_2(self.__con_nativeidxs,_0)
  @staticmethod
  def _match_update_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2Z(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Variable_2__(_1) and __arg_match_Z__(_2))
  @staticmethod
  def _match_alt_update_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2Z(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_1) and __arg_alt_match_Z__(_2))
  def _update_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2Z(self,_t__0,_t__1,_t__2):
    return self._update_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2Z(_0,_1,_2)
  def _update_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2Z(self,_0,_1,_2):
   _3=self.getND()
   _4=_0.getShape()
   if (_3 < int((_4).shape[0])):
    raise mosek_fusion_DimensionError._ctor_S("Expression shape does not match constraint")
   for _5 in range(0,int((_4).shape[0])):
    if (_4[_5]!=self.__shape[_5]):
     raise mosek_fusion_DimensionError._ctor_S("Expression shape does not match constraint")
   for _6 in range(int((_4).shape[0]),int((self.__shape).shape[0])):
    if (self.__shape[_6]!=1):
     raise mosek_fusion_DimensionError._ctor_S("Expression shape does not match constraint")
   _7=_1.numInst()
   _8=numpy.zeros((_7,), dtype=numpy.dtype(numpy.int64))
   if (_7 < _1.getSize()):
    _9=numpy.zeros((_7,), dtype=numpy.dtype(numpy.int64))
    _1.inst(0,_9,0,_8)
   else:
    _1.inst(0,_8)
   for _10 in range(0,_7):
    if (_8[_10] < 0):
     raise mosek_fusion_UpdateError._ctor_S("Semidefinite terms cannot be updated")
   _12=True
   for _13 in range(0,(_7 - 1)):
    _12 = (_12 and (_8[_13] < _8[(_13 + 1)]))
   if _12:
    if (not _2):
     _11 = numpy.array([numpy.int32(_8[_14]) for _14 in range(0,_7)], dtype=numpy.dtype(numpy.int32))
    else:
     _11 = numpy.zeros(((_7 + 1),), dtype=numpy.dtype(numpy.int32))
     _11[0] = 0
     for _15 in range(0,_7):
      _11[(1 + _15)] = numpy.int32(_8[_15])
   else:
    _16=numpy.array([_17 for _17 in range(0,_7)], dtype=numpy.dtype(numpy.int64))
    mosek.fusion.CommonTools._argQsort__3J_3J_3JJJ(_16,_8,None,0,_7)
    _18=1
    for _19 in range(1,_7):
     if (_8[_16[(_19 - 1)]] < _8[_16[_19]]):
      _18 += 1
    if _2:
     _18 += 1
    _11 = numpy.zeros((_18,), dtype=numpy.dtype(numpy.int32))
    _20=0
    if _2:
     _11[0] = 0
     _20 += 1
    _11[_20] = numpy.int32(_8[_16[0]])
    for _21 in range(1,_7):
     if (_8[(_21 - 1)] < _8[_21]):
      _11[_20] = numpy.int32(_8[_16[_21]])
      _20 += 1
   self.__model._update__3ILmosek_4fusion_4Expression_2_3I(self.__con_nativeidxs,_0,_11)
  @staticmethod
  def _match_update_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _match_alt_update_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_1))
  def _update_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(self,_t__0,_t__1):
    return self._update_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(_0,_1)
  def _update_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Variable_2(self,_0,_1):
   self.update(_0,_1,False)
  @staticmethod
  def _match_get_1model_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_get_1model_(*args):
    if len(args) != 0: return False
    return True
  def _get_1model_alt_(self,):
    return self._get_1model_()
  def _get_1model_(self,):
   return (self.__model)
  @staticmethod
  def _match_get_1nd_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_get_1nd_(*args):
    if len(args) != 0: return False
    return True
  def _get_1nd_alt_(self,):
    return self._get_1nd_()
  def _get_1nd_(self,):
   return numpy.int32(int((self.__shape).shape[0]))
  @staticmethod
  def _match_size_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_size_(*args):
    if len(args) != 0: return False
    return True
  def _size_alt_(self,):
    return self._size_()
  def _size_(self,):
   _0=1
   for _1 in range(0,int((self.__shape).shape[0])):
    _0 *= self.__shape[_1]
   return numpy.int64(_0)
  @staticmethod
  def _match_stack__3Lmosek_4fusion_4Constraint_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3Lmosek_4fusion_4Constraint_2__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_stack__3Lmosek_4fusion_4Constraint_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Constraint_2__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _stack_alt__3Lmosek_4fusion_4Constraint_2I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1=numpy.int32(_t__1)
   _1_res = mosek_fusion_Constraint._stack__3Lmosek_4fusion_4Constraint_2I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _stack__3Lmosek_4fusion_4Constraint_2I(_0,_1):
   return (mosek.fusion.Constraint._dstack__3Lmosek_4fusion_4Constraint_2I(_0,_1))
  @staticmethod
  def _match_stack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4Constraint_2__(_0) and __arg_match_Lmosek_4fusion_4Constraint_2__(_1) and __arg_match_Lmosek_4fusion_4Constraint_2__(_2) and __arg_match_I__(_3))
  @staticmethod
  def _match_alt_stack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4Constraint_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Constraint_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Constraint_2__(_2) and __arg_alt_match_I__(_3))
  @staticmethod
  def _stack_alt_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(_t__0,_t__1,_t__2,_t__3):
    return mosek_fusion_Constraint._stack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(_0,_1,_2,numpy.int32(__3))
  @staticmethod
  def _stack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(_0,_1,_2,_3):
   return (mosek.fusion.Constraint._dstack__3Lmosek_4fusion_4Constraint_2I(numpy.array([_0,_1,_2], dtype=numpy.dtype(object)),_3))
  @staticmethod
  def _match_stack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Constraint_2__(_0) and __arg_match_Lmosek_4fusion_4Constraint_2__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_stack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Constraint_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Constraint_2__(_1) and __arg_alt_match_I__(_2))
  @staticmethod
  def _stack_alt_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(_t__0,_t__1,_t__2):
    return mosek_fusion_Constraint._stack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(_0,_1,numpy.int32(__2))
  @staticmethod
  def _stack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2I(_0,_1,_2):
   return (mosek.fusion.Constraint._dstack__3Lmosek_4fusion_4Constraint_2I(numpy.array([_0,_1], dtype=numpy.dtype(object)),_2))
  @staticmethod
  def _match_hstack__3Lmosek_4fusion_4Constraint_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3Lmosek_4fusion_4Constraint_2__(_0))
  @staticmethod
  def _match_alt_hstack__3Lmosek_4fusion_4Constraint_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Constraint_2__(_0))
  @staticmethod
  def _hstack_alt__3Lmosek_4fusion_4Constraint_2(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Constraint._hstack__3Lmosek_4fusion_4Constraint_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _hstack__3Lmosek_4fusion_4Constraint_2(_0):
   return (mosek.fusion.Constraint._dstack__3Lmosek_4fusion_4Constraint_2I(_0,1))
  @staticmethod
  def _match_vstack__3Lmosek_4fusion_4Constraint_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3Lmosek_4fusion_4Constraint_2__(_0))
  @staticmethod
  def _match_alt_vstack__3Lmosek_4fusion_4Constraint_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Constraint_2__(_0))
  @staticmethod
  def _vstack_alt__3Lmosek_4fusion_4Constraint_2(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Constraint._vstack__3Lmosek_4fusion_4Constraint_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _vstack__3Lmosek_4fusion_4Constraint_2(_0):
   return (mosek.fusion.Constraint._dstack__3Lmosek_4fusion_4Constraint_2I(_0,0))
  @staticmethod
  def _match_hstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Constraint_2__(_0) and __arg_match_Lmosek_4fusion_4Constraint_2__(_1) and __arg_match_Lmosek_4fusion_4Constraint_2__(_2))
  @staticmethod
  def _match_alt_hstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Constraint_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Constraint_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Constraint_2__(_2))
  @staticmethod
  def _hstack_alt_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Constraint._hstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(_0,_1,_2)
  @staticmethod
  def _hstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(_0,_1,_2):
   return (mosek.fusion.Constraint._dstack__3Lmosek_4fusion_4Constraint_2I(numpy.array([_0,_1,_2], dtype=numpy.dtype(object)),1))
  @staticmethod
  def _match_vstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Constraint_2__(_0) and __arg_match_Lmosek_4fusion_4Constraint_2__(_1) and __arg_match_Lmosek_4fusion_4Constraint_2__(_2))
  @staticmethod
  def _match_alt_vstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Constraint_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Constraint_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Constraint_2__(_2))
  @staticmethod
  def _vstack_alt_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Constraint._vstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(_0,_1,_2)
  @staticmethod
  def _vstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(_0,_1,_2):
   return (mosek.fusion.Constraint._dstack__3Lmosek_4fusion_4Constraint_2I(numpy.array([_0,_1,_2], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _match_hstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Constraint_2__(_0) and __arg_match_Lmosek_4fusion_4Constraint_2__(_1))
  @staticmethod
  def _match_alt_hstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Constraint_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Constraint_2__(_1))
  @staticmethod
  def _hstack_alt_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(_t__0,_t__1):
    return mosek_fusion_Constraint._hstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(_0,_1)
  @staticmethod
  def _hstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(_0,_1):
   return (mosek.fusion.Constraint._dstack__3Lmosek_4fusion_4Constraint_2I(numpy.array([_0,_1], dtype=numpy.dtype(object)),1))
  @staticmethod
  def _match_vstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Constraint_2__(_0) and __arg_match_Lmosek_4fusion_4Constraint_2__(_1))
  @staticmethod
  def _match_alt_vstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Constraint_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Constraint_2__(_1))
  @staticmethod
  def _vstack_alt_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(_t__0,_t__1):
    return mosek_fusion_Constraint._vstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(_0,_1)
  @staticmethod
  def _vstack_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Constraint_2(_0,_1):
   return (mosek.fusion.Constraint._dstack__3Lmosek_4fusion_4Constraint_2I(numpy.array([_0,_1], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _dstack_alt__3Lmosek_4fusion_4Constraint_2I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1=numpy.int32(_t__1)
   _1_res = mosek_fusion_Constraint._dstack__3Lmosek_4fusion_4Constraint_2I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _dstack__3Lmosek_4fusion_4Constraint_2I(_0,_1):
   _2=None
   for _3 in range(0,int((_0).shape[0])):
    if (_2 is None):
     _2 = _0[_3].getModel()
    elif (((_0[_3].__model) is not None) and ((_0[_3].__model) is not _2)): # bld/grindsted/final/default/src/fusion/Constraint.mbi:285:20-59
     _4=mosek.fusion.Utils.StringBuffer()
     _5=(_2._getName_() if ((int(len(_2._getName_())) > 0) ) else "?")
     _6=(_0[_3].getModel()._getName_() if ((int(len(_0[_3].getModel()._getName_())) > 0) ) else "?")
     _4._a_S("Constraints belong to different models: '")._a_S(_5)._a_S("' and '")._a_S(_6)._a_S("'")
     raise mosek_fusion_ModelError._ctor_S(_4._toString_())
   if (int((_0).shape[0])==0):
    return (mosek_fusion_SliceConstraint._ctor_Lmosek_4fusion_4Model_2_3I_3I(None,numpy.array([0], dtype=numpy.dtype(numpy.int32)),numpy.zeros((0,), dtype=numpy.dtype(numpy.int32))))
   elif (int((_0).shape[0])==1): # bld/grindsted/final/default/src/fusion/Constraint.mbi:297:16-27
    return (_0[1])
   else:
    _7=int((_0).shape[0])
    _8=1
    for _9 in range(0,_7):
     _8 = (_0[_9].getND() if ((_0[_9].getND() > _8) ) else _8)
    if (_1==_8):
     _8 += 1
    _10=numpy.zeros((_7,_8,), dtype=numpy.dtype(numpy.int32))
    for _11 in range(0,_7):
     for _12 in range(0,_8):
      _10[_11,_12] = 1
    _13=numpy.array([_0[_14].getSize() for _14 in range(0,_7)], dtype=numpy.dtype(numpy.int32))
    _15=0
    for _16 in range(0,_7):
     _15 += _13[_16]
    for _17 in range(0,_7):
     _18=_0[_17].getShape()
     for _19 in range(0,int((_18).shape[0])):
      _10[_17,_19] = _18[_19]
    if ((_1 < 0) or (_1 > _8)):
     raise mosek_fusion_DimensionError._ctor_S("Invalid stacking dimension")
    for _20 in range(0,_1):
     for _21 in range(1,_7):
      if (_10[0,_20]!=_10[_21,_20]):
       raise mosek_fusion_DimensionError._ctor_S("Constraint dimensions do not match")
    for _22 in range((_1 + 1),_8):
     for _23 in range(1,_7):
      if (_10[0,_22]!=_10[_23,_22]):
       raise mosek_fusion_DimensionError._ctor_S("Constraint dimensions do not match")
    _24=numpy.zeros((_15,), dtype=numpy.dtype(numpy.int32))
    _25=numpy.array([_10[0,_26] for _26 in range(0,_8)], dtype=numpy.dtype(numpy.int32))
    for _27 in range(1,_7):
     _25[_1] += _10[_27,_1]
    _28=int((_25).shape[0])
    _29=numpy.zeros(((int((_0).shape[0]) + 1),), dtype=numpy.dtype(numpy.int64))
    for _30 in range(0,int((_0).shape[0])):
     _29[(_30 + 1)] = (_29[_30] + _10[_30,_1])
    if (_1==0):
     _31=0
     for _32 in range(0,_7):
      _33=int(((_0[_32].__con_nativeidxs)).shape[0])
      mosek.fusion.Utils.Tools._arraycopy__3II_3III((_0[_32].__con_nativeidxs),0,_24,_31,_33)
      _31 += _33
    else:
     _34=_monty.initJaggedArray([(_0[_35].__con_nativeidxs) for _35 in range(0,_7)], 1)
     if (_1 < _8):
      _36=1
      for _37 in range(0,_1):
       _36 *= _25[_37]
      _38=1
      for _39 in range((_1 + 1),_8):
       _38 *= _25[_39]
      _40=0
      for _41 in range(0,_36):
       for _42 in range(0,_7):
        _43=0
        _44=_10[_42,_1]
        for _45 in range(0,_44):
         for _46 in range(0,_38):
          _24[_40] = (_0[_7].__con_nativeidxs)[(((_41 * _38) * _44) + _43)]
          _40 += 1
          _43 += 1
     else:
      _47=1
      for _48 in range(0,_8):
       _47 *= _25[_48]
      _49=0
      for _50 in range(0,_47):
       for _51 in range(0,_7):
        _24[_49] = _34[_51][_50]
        _49 += 1
    return (mosek_fusion_SliceConstraint._ctor_Lmosek_4fusion_4Model_2_3I_3I(_2,_25,_24))
  @staticmethod
  def _match_index__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_index__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _index_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._index__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _index__3I(self,_0):
   if (int((_0).shape[0])!=int((self.__shape).shape[0])):
    raise mosek_fusion_DimensionError._ctor_S("variable shape and slice do not match")
   else:
    for _1 in range(0,int((self.__shape).shape[0])):
     if ((_0[_1] < 0) or (_0[_1] > self.__shape[_1])):
      raise mosek_fusion_IndexError._ctor_S("index is out of bounds")
    _2=int((self.__shape).shape[0])
    _3=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int64))
    _3[(_2 - 1)] = 1
    for _4 in range(1,_2):
     _3[((_2 - _4) - 1)] = (_3[(_2 - _4)] * self.__shape[(_2 - _4)])
    _5=0
    for _6 in range(0,_2):
     _5 += numpy.int32((_3[_6] * _0[_6]))
    return (mosek_fusion_SliceConstraint._ctor_Lmosek_4fusion_4Model_2_3I_3I(self.__model,numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)),numpy.array([self.__con_nativeidxs[_5]], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_index_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_index_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _index_alt_I(self,_t__0):
    return self._index_I(numpy.int32(__0))
  def _index_I(self,_0):
   if ((int((self.__shape).shape[0])==0) and (_0==0)):
    return (self)
   elif (int((self.__shape).shape[0])!=1): # bld/grindsted/final/default/src/fusion/Constraint.mbi:240:16-31
    raise mosek_fusion_DimensionError._ctor_S("Variable shape and slice do not match")
   elif ((_0 < 0) or (_0 > self.__shape[0])): # bld/grindsted/final/default/src/fusion/Constraint.mbi:242:16-41
    raise mosek_fusion_IndexError._ctor_S("Index is out of bounds")
   else:
    return (mosek_fusion_SliceConstraint._ctor_Lmosek_4fusion_4Model_2_3I_3I(self.__model,numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)),numpy.array([self.__con_nativeidxs[_0]], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  def _slice_alt__3I_3I(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self._slice__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _slice__3I_3I(self,_0,_1):
   if (int((_0).shape[0])!=int((_1).shape[0])):
    raise mosek_fusion_SliceError._ctor_S("invalid slice")
   elif (int((_0).shape[0])!=int((self.__shape).shape[0])): # bld/grindsted/final/default/src/fusion/Constraint.mbi:182:16-41
    raise mosek_fusion_DimensionError._ctor_S("variable shape and slice do not match")
   else:
    for _2 in range(0,int((self.__shape).shape[0])):
     if ((_0[_2] < 0) or (_1[_2] > self.__shape[_2])):
      raise mosek_fusion_IndexError._ctor_S("slice is out of bounds")
     elif (_0[_2] > _1[_2]): # bld/grindsted/final/default/src/fusion/Constraint.mbi:188:20-40
      raise mosek_fusion_SliceError._ctor_S("invalid slice")
    _3=int((self.__shape).shape[0])
    _4=numpy.array([(_1[_5] - _0[_5]) for _5 in range(0,_3)], dtype=numpy.dtype(numpy.int32))
    _6=1
    for _7 in range(0,_3):
     _6 *= (_1[_7] - _0[_7])
    if (_6==0):
     return (mosek_fusion_SliceConstraint._ctor_Lmosek_4fusion_4Model_2_3I_3I(self.__model,_4,numpy.zeros((0,), dtype=numpy.dtype(numpy.int32))))
    else:
     _8=numpy.zeros((_6,), dtype=numpy.dtype(numpy.int32))
     _9=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
     _9[(_3 - 1)] = 1
     for _10 in range(1,_3):
      _9[((_3 - _10) - 1)] = (_9[(_3 - _10)] * self.__shape[(_3 - _10)])
     _11=0
     for _12 in range(0,_3):
      _11 += (_0[_12] * _9[_12])
     _13=numpy.array([_11 for _14 in range(0,_3)], dtype=numpy.dtype(numpy.int32))
     _15=numpy.array([_0[_16] for _16 in range(0,_3)], dtype=numpy.dtype(numpy.int32))
     for _17 in range(0,_6):
      _8[_17] = self.__con_nativeidxs[_13[(_3 - 1)]]
      _15[(_3 - 1)] += 1
      _13[(_3 - 1)] += _9[(_3 - 1)]
      if (_15[(_3 - 1)] >= _1[(_3 - 1)]):
       _18=(_3 - 1)
       while ((_18 > 0) and (_15[_18] >= _1[_18])):
        _15[_18] = _0[_18]
        _15[(_18 - 1)] += 1
        _13[(_18 - 1)] += _9[(_18 - 1)]
        _18 -= 1
       for _19 in range((_18 + 1),_3):
        _13[_19] = _13[_18]
     return (mosek_fusion_SliceConstraint._ctor_Lmosek_4fusion_4Model_2_3I_3I(self.getModel(),_4,_8))
  @staticmethod
  def _match_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _slice_alt_II(self,_t__0,_t__1):
    return self._slice_II(numpy.int32(__0),numpy.int32(__1))
  def _slice_II(self,_0,_1):
   if (int((self.__shape).shape[0])!=1):
    raise mosek_fusion_DimensionError._ctor_S("Variable shape and slice do not match")
   if ((_0==0) and (_1==self.__shape[0])):
    return (self)
   elif ((_0 < 0) or (_1 > self.__shape[0])): # bld/grindsted/final/default/src/fusion/Constraint.mbi:171:16-44
    raise mosek_fusion_IndexError._ctor_S("Slice is out of bounds")
   elif (_0 > _1): # bld/grindsted/final/default/src/fusion/Constraint.mbi:173:16-28
    raise mosek_fusion_SliceError._ctor_S("Invalid slice")
   else:
    return (mosek_fusion_SliceConstraint._ctor_Lmosek_4fusion_4Model_2_3I_3I(self.__model,numpy.array([(_1 - _0)], dtype=numpy.dtype(numpy.int32)),numpy.array([self.__con_nativeidxs[_2] for _2 in range(_0,_1)], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_getND_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getND_(*args):
    if len(args) != 0: return False
    return True
  def _getND_alt_(self,):
    return self._getND_()
  def _getND_(self,):
   return numpy.int32(int((self.__shape).shape[0]))
  @staticmethod
  def _match_getSize_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getSize_(*args):
    if len(args) != 0: return False
    return True
  def _getSize_alt_(self,):
    return self._getSize_()
  def _getSize_(self,):
   _0=1
   for _1 in range(0,int((self.__shape).shape[0])):
    _0 *= self.__shape[_1]
   return numpy.int32(_0)
  @staticmethod
  def _match_getModel_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getModel_(*args):
    if len(args) != 0: return False
    return True
  def _getModel_alt_(self,):
    return self._getModel_()
  def _getModel_(self,):
   return (self.__model)
  @staticmethod
  def _match_getShape_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getShape_(*args):
    if len(args) != 0: return False
    return True
  def _getShape_alt_(self,):
    return self._getShape_()
  def _getShape_(self,):
   return (numpy.array([self.__shape[_0] for _0 in range(0,int((self.__shape).shape[0]))], dtype=numpy.dtype(numpy.int32)))
  def _getNativeidxs_alt_(self,):
    return self._getNativeidxs_()
  def _getNativeidxs_(self,):
   return (self.__con_nativeidxs)
 return Constraint
mosek_fusion_Constraint=__mk_mosek_fusion_Constraint()
del __mk_mosek_fusion_Constraint
def __mk_mosek_fusion_SliceConstraint():
 class SliceConstraint(mosek_fusion_Constraint):
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_SliceConstraint._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_SliceConstraint._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SliceConstraint.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.SliceConstraint: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4SliceConstraint_2(c):
    o = SliceConstraint.__new__(SliceConstraint)
    o._ctor_init_Lmosek_4fusion_4SliceConstraint_2(c)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4SliceConstraint_2(*args):
    if len(args) != 1: return False
    c, = args
    return (__arg_match_Lmosek_4fusion_4SliceConstraint_2__(c))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4SliceConstraint_2(*args):
    if len(args) != 1: return False
    c, = args
    return (__arg_alt_match_Lmosek_4fusion_4SliceConstraint_2__(c))
  def _ctor_alt_init_Lmosek_4fusion_4SliceConstraint_2(self,c):
    self._ctor_init_Lmosek_4fusion_4SliceConstraint_2(c)
  def _ctor_init_Lmosek_4fusion_4SliceConstraint_2(self,c):
   mosek_fusion_Constraint._ctor_init_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Model_2(self,c,c.getModel())
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2_3I_3I(model,shape,nativeidxs):
    o = SliceConstraint.__new__(SliceConstraint)
    o._ctor_init_Lmosek_4fusion_4Model_2_3I_3I(model,shape,nativeidxs)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2_3I_3I(*args):
    if len(args) != 3: return False
    model,shape,nativeidxs, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(model) and __arg_match__3I__(shape) and __arg_match__3I__(nativeidxs))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2_3I_3I(*args):
    if len(args) != 3: return False
    model,shape,nativeidxs, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(model) and __arg_alt_match__3I__(shape) and __arg_alt_match__3I__(nativeidxs))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2_3I_3I(self,model,shape,nativeidxs):
    self._ctor_init_Lmosek_4fusion_4Model_2_3I_3I(model,numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.array(nativeidxs,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_Lmosek_4fusion_4Model_2_3I_3I(self,model,shape,nativeidxs):
   mosek_fusion_Constraint._ctor_init_Lmosek_4fusion_4Model_2_3I_3I(self,model,shape,nativeidxs)
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   _0=mosek.fusion.Utils.StringBuffer()
   _0._a_S("SliceConstraint()")
   return (_0._toString_())
 return SliceConstraint
mosek_fusion_SliceConstraint=__mk_mosek_fusion_SliceConstraint()
del __mk_mosek_fusion_SliceConstraint
def __mk_mosek_fusion_BoundInterfaceConstraint():
 class BoundInterfaceConstraint(mosek_fusion_SliceConstraint):
  __slots__ = ['_BoundInterfaceConstraint__islower']
  def dual(self,*args):
    if False: pass
    elif mosek_fusion_BoundInterfaceConstraint._match_dual_(*args): 
      return self._dual_(*args)
    elif mosek_fusion_BoundInterfaceConstraint._match_alt_dual_(*args): 
      return self._dual_alt_(*args)
    else:
      raise ValueError('Invalid argument list dual('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BoundInterfaceConstraint.dual()')
  def slice(self,*args):
    if False: pass
    elif mosek_fusion_BoundInterfaceConstraint._match_slice_II(*args): 
      return self._slice_II(*args)
    elif mosek_fusion_BoundInterfaceConstraint._match_alt_slice_II(*args): 
      return self._slice_alt_II(*args)
    elif mosek_fusion_BoundInterfaceConstraint._match_slice__3I_3I(*args): 
      return self._slice__3I_3I(*args)
    elif mosek_fusion_BoundInterfaceConstraint._match_alt_slice__3I_3I(*args): 
      return self._slice_alt__3I_3I(*args)
    else:
      raise ValueError('Invalid argument list slice('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BoundInterfaceConstraint.slice(int32,int32)\n\tmosek.fusion.BoundInterfaceConstraint.slice(array(int32,ndim=1),array(int32,ndim=1))')
  def index(self,*args):
    if False: pass
    elif mosek_fusion_BoundInterfaceConstraint._match_index_I(*args): 
      return self._index_I(*args)
    elif mosek_fusion_BoundInterfaceConstraint._match_alt_index_I(*args): 
      return self._index_alt_I(*args)
    elif mosek_fusion_BoundInterfaceConstraint._match_index__3I(*args): 
      return self._index__3I(*args)
    elif mosek_fusion_BoundInterfaceConstraint._match_alt_index__3I(*args): 
      return self._index_alt__3I(*args)
    else:
      raise ValueError('Invalid argument list index('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BoundInterfaceConstraint.index(int32)\n\tmosek.fusion.BoundInterfaceConstraint.index(array(int32,ndim=1))')
  def __repr__(self): return 'mosek.fusion.BoundInterfaceConstraint'
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2_3I_3IZ(m,shape,nativeidxs,islower):
    o = BoundInterfaceConstraint.__new__(BoundInterfaceConstraint)
    o._ctor_init_Lmosek_4fusion_4Model_2_3I_3IZ(m,shape,nativeidxs,islower)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2_3I_3IZ(*args):
    if len(args) != 4: return False
    m,shape,nativeidxs,islower, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(m) and __arg_match__3I__(shape) and __arg_match__3I__(nativeidxs) and __arg_match_Z__(islower))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2_3I_3IZ(*args):
    if len(args) != 4: return False
    m,shape,nativeidxs,islower, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(m) and __arg_alt_match__3I__(shape) and __arg_alt_match__3I__(nativeidxs) and __arg_alt_match_Z__(islower))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2_3I_3IZ(self,m,shape,nativeidxs,islower):
    self._ctor_init_Lmosek_4fusion_4Model_2_3I_3IZ(m,numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.array(nativeidxs,dtype=numpy.dtype(numpy.int32)),islower)
  def _ctor_init_Lmosek_4fusion_4Model_2_3I_3IZ(self,m,shape,nativeidxs,islower):
   mosek_fusion_SliceConstraint._ctor_init_Lmosek_4fusion_4Model_2_3I_3I(self,m,shape,nativeidxs)
   (self.__islower) = islower
  @staticmethod
  def _ctor_Lmosek_4fusion_4SliceConstraint_2Z(c,islower):
    o = BoundInterfaceConstraint.__new__(BoundInterfaceConstraint)
    o._ctor_init_Lmosek_4fusion_4SliceConstraint_2Z(c,islower)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4SliceConstraint_2Z(*args):
    if len(args) != 2: return False
    c,islower, = args
    return (__arg_match_Lmosek_4fusion_4SliceConstraint_2__(c) and __arg_match_Z__(islower))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4SliceConstraint_2Z(*args):
    if len(args) != 2: return False
    c,islower, = args
    return (__arg_alt_match_Lmosek_4fusion_4SliceConstraint_2__(c) and __arg_alt_match_Z__(islower))
  def _ctor_alt_init_Lmosek_4fusion_4SliceConstraint_2Z(self,c,islower):
    self._ctor_init_Lmosek_4fusion_4SliceConstraint_2Z(c,islower)
  def _ctor_init_Lmosek_4fusion_4SliceConstraint_2Z(self,c,islower):
   mosek_fusion_SliceConstraint._ctor_init_Lmosek_4fusion_4SliceConstraint_2(self,c)
   (self.__islower) = islower
  @staticmethod
  def _match_dual_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_dual_(*args):
    if len(args) != 0: return False
    return True
  def _dual_alt_(self,):
    return self._dual_()
  def _dual_(self,):
   _0=numpy.zeros((self.getSize(),), dtype=numpy.dtype(numpy.float64))
   self._dual_1lu_I_3DZ(0,_0,self.__islower)
   return (_0)
  @staticmethod
  def _match_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  def _slice_alt__3I_3I(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self._slice__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _slice__3I_3I(self,_0,_1):
   _2=mosek_fusion_Constraint._slice__3I_3I(self,_0,_1)
   return (self.__from_1_Lmosek_4fusion_4Constraint_2(_2))
  @staticmethod
  def _match_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _slice_alt_II(self,_t__0,_t__1):
    return self._slice_II(numpy.int32(__0),numpy.int32(__1))
  def _slice_II(self,_0,_1):
   _2=mosek_fusion_Constraint._slice_II(self,_0,_1)
   return (self.__from_1_Lmosek_4fusion_4Constraint_2(_2))
  @staticmethod
  def _match_index__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_index__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _index_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._index__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _index__3I(self,_0):
   _1=mosek_fusion_Constraint._index__3I(self,_0)
   return (self.__from_1_Lmosek_4fusion_4Constraint_2(_1))
  @staticmethod
  def _match_index_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_index_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _index_alt_I(self,_t__0):
    return self._index_I(numpy.int32(__0))
  def _index_I(self,_0):
   _1=mosek_fusion_Constraint._index_I(self,_0)
   return (self.__from_1_Lmosek_4fusion_4Constraint_2(_1))
  def __from_1_alt_Lmosek_4fusion_4Constraint_2(self,_t__0):
    return self.__from_1_Lmosek_4fusion_4Constraint_2(_0)
  def __from_1_Lmosek_4fusion_4Constraint_2(self,_0):
   _2=_0
   if   isinstance(_2,mosek_fusion_SliceConstraint):
    cc=_2
    return (mosek_fusion_BoundInterfaceConstraint._ctor_Lmosek_4fusion_4SliceConstraint_2Z(cc,self.__islower))
   else:
    cc=_2
    return (None)
 return BoundInterfaceConstraint
mosek_fusion_BoundInterfaceConstraint=__mk_mosek_fusion_BoundInterfaceConstraint()
del __mk_mosek_fusion_BoundInterfaceConstraint
def __mk_mosek_fusion_ModelConstraint():
 class ModelConstraint(mosek_fusion_Constraint):
  __slots__ = ['_ModelConstraint__conid','_ModelConstraint__shape','_ModelConstraint__modelcon_nativeidxs','_ModelConstraint__name']
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ModelConstraint._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ModelConstraint._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ModelConstraint.toString()')
  def remove(self,*args):
    if False: pass
    elif mosek_fusion_ModelConstraint._match_remove_(*args): 
      return self._remove_(*args)
    elif mosek_fusion_ModelConstraint._match_alt_remove_(*args): 
      return self._remove_alt_(*args)
    else:
      raise ValueError('Invalid argument list remove('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ModelConstraint.remove()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ModelConstraint: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4ModelConstraint_2Lmosek_4fusion_4Model_2(c,m):
    o = ModelConstraint.__new__(ModelConstraint)
    o._ctor_init_Lmosek_4fusion_4ModelConstraint_2Lmosek_4fusion_4Model_2(c,m)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4ModelConstraint_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    c,m, = args
    return (__arg_match_Lmosek_4fusion_4ModelConstraint_2__(c) and __arg_match_Lmosek_4fusion_4Model_2__(m))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4ModelConstraint_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    c,m, = args
    return (__arg_alt_match_Lmosek_4fusion_4ModelConstraint_2__(c) and __arg_alt_match_Lmosek_4fusion_4Model_2__(m))
  def _ctor_alt_init_Lmosek_4fusion_4ModelConstraint_2Lmosek_4fusion_4Model_2(self,c,m):
    self._ctor_init_Lmosek_4fusion_4ModelConstraint_2Lmosek_4fusion_4Model_2(c,m)
  def _ctor_init_Lmosek_4fusion_4ModelConstraint_2Lmosek_4fusion_4Model_2(self,c,m):
   mosek_fusion_Constraint._ctor_init_Lmosek_4fusion_4Constraint_2Lmosek_4fusion_4Model_2(self,c,m)
   (self.__conid) = (c.__conid)
   self.__name = (c.__name)
   self.__modelcon_nativeidxs = (c.__modelcon_nativeidxs)
   self.__shape = (c.__shape)
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2S_3I_3II(model,name,shape,nidxs,conid):
    o = ModelConstraint.__new__(ModelConstraint)
    o._ctor_init_Lmosek_4fusion_4Model_2S_3I_3II(model,name,shape,nidxs,conid)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2S_3I_3II(*args):
    if len(args) != 5: return False
    model,name,shape,nidxs,conid, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(model) and __arg_match_S__(name) and __arg_match__3I__(shape) and __arg_match__3I__(nidxs) and __arg_match_I__(conid))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2S_3I_3II(*args):
    if len(args) != 5: return False
    model,name,shape,nidxs,conid, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(model) and __arg_alt_match_S__(name) and __arg_alt_match__3I__(shape) and __arg_alt_match__3I__(nidxs) and __arg_alt_match_I__(conid))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2S_3I_3II(self,model,name,shape,nidxs,conid):
    self._ctor_init_Lmosek_4fusion_4Model_2S_3I_3II(model,name,numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.array(nidxs,dtype=numpy.dtype(numpy.int32)),numpy.int32(conid))
  def _ctor_init_Lmosek_4fusion_4Model_2S_3I_3II(self,model,name,shape,nidxs,conid):
   mosek_fusion_Constraint._ctor_init_Lmosek_4fusion_4Model_2_3I_3I(self,model,shape,nidxs)
   (self.__name) = name
   (self.__modelcon_nativeidxs) = nidxs
   (self.__shape) = shape
   (self.__conid) = conid
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   _0=mosek.fusion.Utils.StringBuffer()
   _0._a_S("Constraint('")._a_S(self.__name)._a_S("')")
   return (_0._toString_())
  def _clone_alt_Lmosek_4fusion_4Model_2(self,_t__0):
    return self._clone_Lmosek_4fusion_4Model_2(_0)
  def _clone_Lmosek_4fusion_4Model_2(self,_0):
   pass
  @staticmethod
  def _match_remove_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_remove_(*args):
    if len(args) != 0: return False
    return True
  def _remove_alt_(self,):
    return self._remove_()
  def _remove_(self,):
   self.getModel()._removeConstraintBlock_I(self.__conid)
 return ModelConstraint
mosek_fusion_ModelConstraint=__mk_mosek_fusion_ModelConstraint()
del __mk_mosek_fusion_ModelConstraint
def __mk_mosek_fusion_LinearPSDConstraint():
 class LinearPSDConstraint(mosek_fusion_ModelConstraint):
  __slots__ = ['_LinearPSDConstraint__conedim','_LinearPSDConstraint__shape','_LinearPSDConstraint__conid','_LinearPSDConstraint__slackidxs','_LinearPSDConstraint__nativeidxs']
  def __repr__(self): return 'mosek.fusion.LinearPSDConstraint'
  @staticmethod
  def _ctor_Lmosek_4fusion_4LinearPSDConstraint_2Lmosek_4fusion_4Model_2(c,m):
    o = LinearPSDConstraint.__new__(LinearPSDConstraint)
    o._ctor_init_Lmosek_4fusion_4LinearPSDConstraint_2Lmosek_4fusion_4Model_2(c,m)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4LinearPSDConstraint_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    c,m, = args
    return (__arg_match_Lmosek_4fusion_4LinearPSDConstraint_2__(c) and __arg_match_Lmosek_4fusion_4Model_2__(m))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4LinearPSDConstraint_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    c,m, = args
    return (__arg_alt_match_Lmosek_4fusion_4LinearPSDConstraint_2__(c) and __arg_alt_match_Lmosek_4fusion_4Model_2__(m))
  def _ctor_alt_init_Lmosek_4fusion_4LinearPSDConstraint_2Lmosek_4fusion_4Model_2(self,c,m):
    self._ctor_init_Lmosek_4fusion_4LinearPSDConstraint_2Lmosek_4fusion_4Model_2(c,m)
  def _ctor_init_Lmosek_4fusion_4LinearPSDConstraint_2Lmosek_4fusion_4Model_2(self,c,m):
   mosek_fusion_ModelConstraint._ctor_init_Lmosek_4fusion_4ModelConstraint_2Lmosek_4fusion_4Model_2(self,c,m)
   self.__conid = (c.__conid)
   self.__slackidxs = (c.__slackidxs)
   self.__nativeidxs = (c.__nativeidxs)
   self.__conedim = (c.__conedim)
   self.__shape = (c.__shape)
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2SI_3II_3I_3J(model,name,conid,shape,conedim,nativeidxs,slackidxs):
    o = LinearPSDConstraint.__new__(LinearPSDConstraint)
    o._ctor_init_Lmosek_4fusion_4Model_2SI_3II_3I_3J(model,name,conid,shape,conedim,nativeidxs,slackidxs)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2SI_3II_3I_3J(*args):
    if len(args) != 7: return False
    model,name,conid,shape,conedim,nativeidxs,slackidxs, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(model) and __arg_match_S__(name) and __arg_match_I__(conid) and __arg_match__3I__(shape) and __arg_match_I__(conedim) and __arg_match__3I__(nativeidxs) and __arg_match__3J__(slackidxs))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2SI_3II_3I_3J(*args):
    if len(args) != 7: return False
    model,name,conid,shape,conedim,nativeidxs,slackidxs, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(model) and __arg_alt_match_S__(name) and __arg_alt_match_I__(conid) and __arg_alt_match__3I__(shape) and __arg_alt_match_I__(conedim) and __arg_alt_match__3I__(nativeidxs) and __arg_alt_match__3J__(slackidxs))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2SI_3II_3I_3J(self,model,name,conid,shape,conedim,nativeidxs,slackidxs):
    self._ctor_init_Lmosek_4fusion_4Model_2SI_3II_3I_3J(model,name,numpy.int32(conid),numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.int32(conedim),numpy.array(nativeidxs,dtype=numpy.dtype(numpy.int32)),numpy.array(slackidxs,dtype=numpy.dtype(numpy.int64)))
  def _ctor_init_Lmosek_4fusion_4Model_2SI_3II_3I_3J(self,model,name,conid,shape,conedim,nativeidxs,slackidxs):
   mosek_fusion_ModelConstraint._ctor_init_Lmosek_4fusion_4Model_2S_3I_3II(self,model,name,shape,nativeidxs,conid)
   (self.__conid) = conid
   (self.__slackidxs) = slackidxs
   (self.__nativeidxs) = nativeidxs
   (self.__conedim) = conedim
   (self.__shape) = shape
  def _domainToString_alt_JLmosek_4fusion_4Utils_4StringBuffer_2(self,_t__0,_t__1):
    return self._domainToString_JLmosek_4fusion_4Utils_4StringBuffer_2(numpy.int64(__0),_1)
  def _domainToString_JLmosek_4fusion_4Utils_4StringBuffer_2(self,_0,_1):
   _2=mosek.fusion.Set._idxtokey__3IJ(self.__shape,_0)
   _1._a_S(" : element (")._a_I(_2[0])
   for _3 in range(1,int((_2).shape[0])):
    _1._a_S(",")._a_I(_2[_3])
   _1._a_S(") in a positive semi-definite cone of size (")._a_I(self.__shape[0])
   for _4 in range(1,int((_2).shape[0])):
    _1._a_S(",")._a_I(self.__shape[_4])
   _1._a_S(")")
  def _clone_alt_Lmosek_4fusion_4Model_2(self,_t__0):
    return self._clone_Lmosek_4fusion_4Model_2(_0)
  def _clone_Lmosek_4fusion_4Model_2(self,_0):
   return (mosek_fusion_LinearPSDConstraint._ctor_Lmosek_4fusion_4LinearPSDConstraint_2Lmosek_4fusion_4Model_2(self,_0))
 return LinearPSDConstraint
mosek_fusion_LinearPSDConstraint=__mk_mosek_fusion_LinearPSDConstraint()
del __mk_mosek_fusion_LinearPSDConstraint
def __mk_mosek_fusion_PSDConstraint():
 class PSDConstraint(mosek_fusion_ModelConstraint):
  __slots__ = ['_PSDConstraint__conedim1','_PSDConstraint__conedim0','_PSDConstraint__shape','_PSDConstraint__name','_PSDConstraint__slackidxs','_PSDConstraint__nativeidxs','_PSDConstraint__conid']
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_PSDConstraint._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_PSDConstraint._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.PSDConstraint.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.PSDConstraint: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4PSDConstraint_2Lmosek_4fusion_4Model_2(c,m):
    o = PSDConstraint.__new__(PSDConstraint)
    o._ctor_init_Lmosek_4fusion_4PSDConstraint_2Lmosek_4fusion_4Model_2(c,m)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4PSDConstraint_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    c,m, = args
    return (__arg_match_Lmosek_4fusion_4PSDConstraint_2__(c) and __arg_match_Lmosek_4fusion_4Model_2__(m))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4PSDConstraint_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    c,m, = args
    return (__arg_alt_match_Lmosek_4fusion_4PSDConstraint_2__(c) and __arg_alt_match_Lmosek_4fusion_4Model_2__(m))
  def _ctor_alt_init_Lmosek_4fusion_4PSDConstraint_2Lmosek_4fusion_4Model_2(self,c,m):
    self._ctor_init_Lmosek_4fusion_4PSDConstraint_2Lmosek_4fusion_4Model_2(c,m)
  def _ctor_init_Lmosek_4fusion_4PSDConstraint_2Lmosek_4fusion_4Model_2(self,c,m):
   mosek_fusion_ModelConstraint._ctor_init_Lmosek_4fusion_4ModelConstraint_2Lmosek_4fusion_4Model_2(self,c,m)
   self.__conid = (c.__conid)
   self.__name = (c.__name)
   self.__shape = (c.__shape)
   self.__slackidxs = (c.__slackidxs)
   self.__nativeidxs = (c.__nativeidxs)
   self.__conedim0 = (c.__conedim0)
   self.__conedim1 = (c.__conedim1)
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2SI_3III_3J_3I(model,name,conid,shape,conedim0,conedim1,slackidxs,nativeidxs):
    o = PSDConstraint.__new__(PSDConstraint)
    o._ctor_init_Lmosek_4fusion_4Model_2SI_3III_3J_3I(model,name,conid,shape,conedim0,conedim1,slackidxs,nativeidxs)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2SI_3III_3J_3I(*args):
    if len(args) != 8: return False
    model,name,conid,shape,conedim0,conedim1,slackidxs,nativeidxs, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(model) and __arg_match_S__(name) and __arg_match_I__(conid) and __arg_match__3I__(shape) and __arg_match_I__(conedim0) and __arg_match_I__(conedim1) and __arg_match__3J__(slackidxs) and __arg_match__3I__(nativeidxs))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2SI_3III_3J_3I(*args):
    if len(args) != 8: return False
    model,name,conid,shape,conedim0,conedim1,slackidxs,nativeidxs, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(model) and __arg_alt_match_S__(name) and __arg_alt_match_I__(conid) and __arg_alt_match__3I__(shape) and __arg_alt_match_I__(conedim0) and __arg_alt_match_I__(conedim1) and __arg_alt_match__3J__(slackidxs) and __arg_alt_match__3I__(nativeidxs))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2SI_3III_3J_3I(self,model,name,conid,shape,conedim0,conedim1,slackidxs,nativeidxs):
    self._ctor_init_Lmosek_4fusion_4Model_2SI_3III_3J_3I(model,name,numpy.int32(conid),numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.int32(conedim0),numpy.int32(conedim1),numpy.array(slackidxs,dtype=numpy.dtype(numpy.int64)),numpy.array(nativeidxs,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_Lmosek_4fusion_4Model_2SI_3III_3J_3I(self,model,name,conid,shape,conedim0,conedim1,slackidxs,nativeidxs):
   mosek_fusion_ModelConstraint._ctor_init_Lmosek_4fusion_4Model_2S_3I_3II(self,model,name,shape,mosek.fusion.PSDConstraint.__computenidxs__3III_3I(shape,conedim0,conedim1,nativeidxs),conid)
   (self.__conid) = conid
   (self.__nativeidxs) = nativeidxs
   (self.__slackidxs) = slackidxs
   (self.__name) = name
   (self.__shape) = shape
   (self.__conedim0) = conedim0
   (self.__conedim1) = conedim1
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   raise mosek_fusion_UnimplementedError._ctor_S("PSDConstraint.toString not implemented")
  def _clone_alt_Lmosek_4fusion_4Model_2(self,_t__0):
    return self._clone_Lmosek_4fusion_4Model_2(_0)
  def _clone_Lmosek_4fusion_4Model_2(self,_0):
   return (mosek_fusion_PSDConstraint._ctor_Lmosek_4fusion_4PSDConstraint_2Lmosek_4fusion_4Model_2(self,_0))
  @staticmethod
  def __computenidxs_alt__3III_3I(_t__0,_t__1,_t__2,_t__3):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.int32(_t__1)
   _2=numpy.int32(_t__2)
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_PSDConstraint.__computenidxs__3III_3I(_0,_1,_2,_3)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __computenidxs__3III_3I(_0,_1,_2,_3):
   _4=int((_0).shape[0])
   _5=(_1 < _2)
   _6=(_1 if (_5 ) else _2)
   _7=(_2 if (_5 ) else _1)
   _8=numpy.array([1,1,1,1,1], dtype=numpy.dtype(numpy.int32))
   _9=numpy.zeros((5,), dtype=numpy.dtype(numpy.int32))
   _10=1
   for _11 in range(0,int((_0).shape[0])):
    _10 *= _0[_11]
   for _12 in range(0,_6):
    _8[0] *= _0[_12]
   _8[1] = _0[_6]
   for _13 in range((_6 + 1),_7):
    _8[2] *= _0[_13]
   _8[3] = _0[_7]
   for _14 in range((_7 + 1),_4):
    _8[4] *= _0[_14]
   _9[4] = 1
   for _15 in range(1,5):
    _9[((5 - _15) - 1)] = (_9[(5 - _15)] * _8[(5 - _15)])
   _16=numpy.zeros((_10,), dtype=numpy.dtype(numpy.int32))
   _17=0
   if _5:
    for _18 in range(0,_8[0]):
     for _19 in range(0,_8[1]):
      for _20 in range(0,_8[2]):
       for _21 in range(_19,_8[1]):
        for _22 in range(0,_8[4]):
         _16[(((((_18 * _9[0]) + (_19 * _9[1])) + (_20 * _9[2])) + (_21 * _9[3])) + (_22 * _9[4]))] = _3[_17]
         _16[(((((_18 * _9[0]) + (_21 * _9[1])) + (_20 * _9[2])) + (_19 * _9[3])) + (_22 * _9[4]))] = _3[_17]
         _17 += 1
   else:
    for _23 in range(0,_8[0]):
     for _24 in range(0,_8[1]):
      for _25 in range(0,_8[2]):
       for _26 in range(0,(_24 + 1)):
        for _27 in range(0,_8[4]):
         _16[(((((_23 * _9[0]) + (_24 * _9[1])) + (_25 * _9[2])) + (_26 * _9[3])) + (_27 * _9[4]))] = _3[_17]
         _16[(((((_23 * _9[0]) + (_26 * _9[1])) + (_25 * _9[2])) + (_24 * _9[3])) + (_27 * _9[4]))] = _3[_17]
         _17 += 1
   return (_16)
 return PSDConstraint
mosek_fusion_PSDConstraint=__mk_mosek_fusion_PSDConstraint()
del __mk_mosek_fusion_PSDConstraint
def __mk_mosek_fusion_RangedConstraint():
 class RangedConstraint(mosek_fusion_ModelConstraint):
  __slots__ = ['_RangedConstraint__nativeidxs','_RangedConstraint__shape']
  def upperBoundCon(self,*args):
    if False: pass
    elif mosek_fusion_RangedConstraint._match_upperBoundCon_(*args): 
      return self._upperBoundCon_(*args)
    elif mosek_fusion_RangedConstraint._match_alt_upperBoundCon_(*args): 
      return self._upperBoundCon_alt_(*args)
    else:
      raise ValueError('Invalid argument list upperBoundCon('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RangedConstraint.upperBoundCon()')
  def lowerBoundCon(self,*args):
    if False: pass
    elif mosek_fusion_RangedConstraint._match_lowerBoundCon_(*args): 
      return self._lowerBoundCon_(*args)
    elif mosek_fusion_RangedConstraint._match_alt_lowerBoundCon_(*args): 
      return self._lowerBoundCon_alt_(*args)
    else:
      raise ValueError('Invalid argument list lowerBoundCon('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RangedConstraint.lowerBoundCon()')
  def __repr__(self): return 'mosek.fusion.RangedConstraint'
  @staticmethod
  def _ctor_Lmosek_4fusion_4RangedConstraint_2Lmosek_4fusion_4Model_2(c,m):
    o = RangedConstraint.__new__(RangedConstraint)
    o._ctor_init_Lmosek_4fusion_4RangedConstraint_2Lmosek_4fusion_4Model_2(c,m)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4RangedConstraint_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    c,m, = args
    return (__arg_match_Lmosek_4fusion_4RangedConstraint_2__(c) and __arg_match_Lmosek_4fusion_4Model_2__(m))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4RangedConstraint_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    c,m, = args
    return (__arg_alt_match_Lmosek_4fusion_4RangedConstraint_2__(c) and __arg_alt_match_Lmosek_4fusion_4Model_2__(m))
  def _ctor_alt_init_Lmosek_4fusion_4RangedConstraint_2Lmosek_4fusion_4Model_2(self,c,m):
    self._ctor_init_Lmosek_4fusion_4RangedConstraint_2Lmosek_4fusion_4Model_2(c,m)
  def _ctor_init_Lmosek_4fusion_4RangedConstraint_2Lmosek_4fusion_4Model_2(self,c,m):
   mosek_fusion_ModelConstraint._ctor_init_Lmosek_4fusion_4ModelConstraint_2Lmosek_4fusion_4Model_2(self,c,m)
   self.__shape = (c.__shape)
   self.__nativeidxs = (c.__nativeidxs)
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2S_3I_3II(model,name,shape,nativeidxs,conid):
    o = RangedConstraint.__new__(RangedConstraint)
    o._ctor_init_Lmosek_4fusion_4Model_2S_3I_3II(model,name,shape,nativeidxs,conid)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2S_3I_3II(*args):
    if len(args) != 5: return False
    model,name,shape,nativeidxs,conid, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(model) and __arg_match_S__(name) and __arg_match__3I__(shape) and __arg_match__3I__(nativeidxs) and __arg_match_I__(conid))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2S_3I_3II(*args):
    if len(args) != 5: return False
    model,name,shape,nativeidxs,conid, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(model) and __arg_alt_match_S__(name) and __arg_alt_match__3I__(shape) and __arg_alt_match__3I__(nativeidxs) and __arg_alt_match_I__(conid))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2S_3I_3II(self,model,name,shape,nativeidxs,conid):
    self._ctor_init_Lmosek_4fusion_4Model_2S_3I_3II(model,name,numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.array(nativeidxs,dtype=numpy.dtype(numpy.int32)),numpy.int32(conid))
  def _ctor_init_Lmosek_4fusion_4Model_2S_3I_3II(self,model,name,shape,nativeidxs,conid):
   mosek_fusion_ModelConstraint._ctor_init_Lmosek_4fusion_4Model_2S_3I_3II(self,model,name,shape,nativeidxs,conid)
   (self.__shape) = shape
   (self.__nativeidxs) = nativeidxs
  @staticmethod
  def _match_upperBoundCon_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_upperBoundCon_(*args):
    if len(args) != 0: return False
    return True
  def _upperBoundCon_alt_(self,):
    return self._upperBoundCon_()
  def _upperBoundCon_(self,):
   return (mosek_fusion_BoundInterfaceConstraint._ctor_Lmosek_4fusion_4Model_2_3I_3IZ(self.getModel(),self.__shape,self.__nativeidxs,False))
  @staticmethod
  def _match_lowerBoundCon_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_lowerBoundCon_(*args):
    if len(args) != 0: return False
    return True
  def _lowerBoundCon_alt_(self,):
    return self._lowerBoundCon_()
  def _lowerBoundCon_(self,):
   return (mosek_fusion_BoundInterfaceConstraint._ctor_Lmosek_4fusion_4Model_2_3I_3IZ(self.getModel(),self.__shape,self.__nativeidxs,True))
  def _clone_alt_Lmosek_4fusion_4Model_2(self,_t__0):
    return self._clone_Lmosek_4fusion_4Model_2(_0)
  def _clone_Lmosek_4fusion_4Model_2(self,_0):
   return (mosek_fusion_RangedConstraint._ctor_Lmosek_4fusion_4RangedConstraint_2Lmosek_4fusion_4Model_2(self,_0))
 return RangedConstraint
mosek_fusion_RangedConstraint=__mk_mosek_fusion_RangedConstraint()
del __mk_mosek_fusion_RangedConstraint
def __mk_mosek_fusion_ConicConstraint():
 class ConicConstraint(mosek_fusion_ModelConstraint):
  __slots__ = ['_ConicConstraint__indexnames','_ConicConstraint__nativeidxs','_ConicConstraint__names_flushed','_ConicConstraint__name','_ConicConstraint__shape','_ConicConstraint__dom','_ConicConstraint__conid']
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ConicConstraint._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ConicConstraint._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ConicConstraint.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ConicConstraint: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4ConicConstraint_2Lmosek_4fusion_4Model_2(c,m):
    o = ConicConstraint.__new__(ConicConstraint)
    o._ctor_init_Lmosek_4fusion_4ConicConstraint_2Lmosek_4fusion_4Model_2(c,m)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4ConicConstraint_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    c,m, = args
    return (__arg_match_Lmosek_4fusion_4ConicConstraint_2__(c) and __arg_match_Lmosek_4fusion_4Model_2__(m))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4ConicConstraint_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    c,m, = args
    return (__arg_alt_match_Lmosek_4fusion_4ConicConstraint_2__(c) and __arg_alt_match_Lmosek_4fusion_4Model_2__(m))
  def _ctor_alt_init_Lmosek_4fusion_4ConicConstraint_2Lmosek_4fusion_4Model_2(self,c,m):
    self._ctor_init_Lmosek_4fusion_4ConicConstraint_2Lmosek_4fusion_4Model_2(c,m)
  def _ctor_init_Lmosek_4fusion_4ConicConstraint_2Lmosek_4fusion_4Model_2(self,c,m):
   mosek_fusion_ModelConstraint._ctor_init_Lmosek_4fusion_4ModelConstraint_2Lmosek_4fusion_4Model_2(self,c,m)
   self.__dom = (c.__dom)
   self.__conid = (c.__conid)
   self.__shape = (c.__shape)
   self.__name = (c.__name)
   self.__nativeidxs = (c.__nativeidxs)
   self.__names_flushed = (c.__names_flushed)
   self.__indexnames = (c.__indexnames)
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2SLmosek_4fusion_4ConeDomain_2_3II_3I_3_3S(model,name,dom,shape,conid,nativeidxs,indexnames):
    o = ConicConstraint.__new__(ConicConstraint)
    o._ctor_init_Lmosek_4fusion_4Model_2SLmosek_4fusion_4ConeDomain_2_3II_3I_3_3S(model,name,dom,shape,conid,nativeidxs,indexnames)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2SLmosek_4fusion_4ConeDomain_2_3II_3I_3_3S(*args):
    if len(args) != 7: return False
    model,name,dom,shape,conid,nativeidxs,indexnames, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(model) and __arg_match_S__(name) and __arg_match_Lmosek_4fusion_4ConeDomain_2__(dom) and __arg_match__3I__(shape) and __arg_match_I__(conid) and __arg_match__3I__(nativeidxs) and __arg_match__3_3S__(indexnames))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2SLmosek_4fusion_4ConeDomain_2_3II_3I_3_3S(*args):
    if len(args) != 7: return False
    model,name,dom,shape,conid,nativeidxs,indexnames, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(model) and __arg_alt_match_S__(name) and __arg_alt_match_Lmosek_4fusion_4ConeDomain_2__(dom) and __arg_alt_match__3I__(shape) and __arg_alt_match_I__(conid) and __arg_alt_match__3I__(nativeidxs) and __arg_alt_match__3_3S__(indexnames))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2SLmosek_4fusion_4ConeDomain_2_3II_3I_3_3S(self,model,name,dom,shape,conid,nativeidxs,indexnames):
    self._ctor_init_Lmosek_4fusion_4Model_2SLmosek_4fusion_4ConeDomain_2_3II_3I_3_3S(model,name,dom,numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.int32(conid),numpy.array(nativeidxs,dtype=numpy.dtype(numpy.int32)),numpy.array(indexnames,dtype=numpy.dtype(object)))
  def _ctor_init_Lmosek_4fusion_4Model_2SLmosek_4fusion_4ConeDomain_2_3II_3I_3_3S(self,model,name,dom,shape,conid,nativeidxs,indexnames):
   mosek_fusion_ModelConstraint._ctor_init_Lmosek_4fusion_4Model_2S_3I_3II(self,model,name,shape,numpy.array([(- (1 + nativeidxs[_0])) for _0 in range(0,int((nativeidxs).shape[0]))], dtype=numpy.dtype(numpy.int32)),(- (1 + conid)))
   (self.__dom) = dom
   (self.__shape) = shape
   (self.__name) = name
   (self.__nativeidxs) = nativeidxs
   (self.__indexnames) = indexnames
   (self.__conid) = conid
   self.__names_flushed = False
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   _0=mosek.fusion.Utils.StringBuffer()
   _0._a_S("ConicConstraint('")._a_S(self.__name)._a_S("')")
   return (_0._toString_())
  def _domainToString_alt_JLmosek_4fusion_4Utils_4StringBuffer_2(self,_t__0,_t__1):
    return self._domainToString_JLmosek_4fusion_4Utils_4StringBuffer_2(numpy.int64(__0),_1)
  def _domainToString_JLmosek_4fusion_4Utils_4StringBuffer_2(self,_0,_1):
   raise mosek_fusion_UnimplementedError._ctor_S("ConicConstraint.domainToString")
  def _clone_alt_Lmosek_4fusion_4Model_2(self,_t__0):
    return self._clone_Lmosek_4fusion_4Model_2(_0)
  def _clone_Lmosek_4fusion_4Model_2(self,_0):
   return (mosek_fusion_ConicConstraint._ctor_Lmosek_4fusion_4ConicConstraint_2Lmosek_4fusion_4Model_2(self,_0))
 return ConicConstraint
mosek_fusion_ConicConstraint=__mk_mosek_fusion_ConicConstraint()
del __mk_mosek_fusion_ConicConstraint
def __mk_mosek_fusion_LinearConstraint():
 class LinearConstraint(mosek_fusion_ModelConstraint):
  __slots__ = ['_LinearConstraint__indexnames','_LinearConstraint__nidxs','_LinearConstraint__name','_LinearConstraint__conid']
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_LinearConstraint._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_LinearConstraint._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinearConstraint.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.LinearConstraint: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4LinearConstraint_2Lmosek_4fusion_4Model_2(c,m):
    o = LinearConstraint.__new__(LinearConstraint)
    o._ctor_init_Lmosek_4fusion_4LinearConstraint_2Lmosek_4fusion_4Model_2(c,m)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4LinearConstraint_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    c,m, = args
    return (__arg_match_Lmosek_4fusion_4LinearConstraint_2__(c) and __arg_match_Lmosek_4fusion_4Model_2__(m))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4LinearConstraint_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    c,m, = args
    return (__arg_alt_match_Lmosek_4fusion_4LinearConstraint_2__(c) and __arg_alt_match_Lmosek_4fusion_4Model_2__(m))
  def _ctor_alt_init_Lmosek_4fusion_4LinearConstraint_2Lmosek_4fusion_4Model_2(self,c,m):
    self._ctor_init_Lmosek_4fusion_4LinearConstraint_2Lmosek_4fusion_4Model_2(c,m)
  def _ctor_init_Lmosek_4fusion_4LinearConstraint_2Lmosek_4fusion_4Model_2(self,c,m):
   mosek_fusion_ModelConstraint._ctor_init_Lmosek_4fusion_4ModelConstraint_2Lmosek_4fusion_4Model_2(self,c,m)
   self.__conid = (c.__conid)
   self.__name = (c.__name)
   self.__nidxs = mosek.fusion.Utils.Tools._arraycopy__3I((c.__nidxs))
   self.__indexnames = (c.__indexnames)
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2SI_3I_3I_3_3S(model,name,conid,shape,nidxs,indexnames):
    o = LinearConstraint.__new__(LinearConstraint)
    o._ctor_init_Lmosek_4fusion_4Model_2SI_3I_3I_3_3S(model,name,conid,shape,nidxs,indexnames)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2SI_3I_3I_3_3S(*args):
    if len(args) != 6: return False
    model,name,conid,shape,nidxs,indexnames, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(model) and __arg_match_S__(name) and __arg_match_I__(conid) and __arg_match__3I__(shape) and __arg_match__3I__(nidxs) and __arg_match__3_3S__(indexnames))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2SI_3I_3I_3_3S(*args):
    if len(args) != 6: return False
    model,name,conid,shape,nidxs,indexnames, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(model) and __arg_alt_match_S__(name) and __arg_alt_match_I__(conid) and __arg_alt_match__3I__(shape) and __arg_alt_match__3I__(nidxs) and __arg_alt_match__3_3S__(indexnames))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2SI_3I_3I_3_3S(self,model,name,conid,shape,nidxs,indexnames):
    self._ctor_init_Lmosek_4fusion_4Model_2SI_3I_3I_3_3S(model,name,numpy.int32(conid),numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.array(nidxs,dtype=numpy.dtype(numpy.int32)),numpy.array(indexnames,dtype=numpy.dtype(object)))
  def _ctor_init_Lmosek_4fusion_4Model_2SI_3I_3I_3_3S(self,model,name,conid,shape,nidxs,indexnames):
   mosek_fusion_ModelConstraint._ctor_init_Lmosek_4fusion_4Model_2S_3I_3II(self,model,name,shape,nidxs,conid)
   (self.__nidxs) = nidxs
   (self.__conid) = conid
   (self.__name) = name
   (self.__indexnames) = indexnames
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   _0=mosek.fusion.Utils.StringBuffer()
   _0._a_S("LinearConstraint('")._a_S(self.__name)._a_S("')")
   return (_0._toString_())
  def _domainToString_alt_JLmosek_4fusion_4Utils_4StringBuffer_2(self,_t__0,_t__1):
    return self._domainToString_JLmosek_4fusion_4Utils_4StringBuffer_2(numpy.int64(__0),_1)
  def _domainToString_JLmosek_4fusion_4Utils_4StringBuffer_2(self,_0,_1):
   pass
  def _clone_alt_Lmosek_4fusion_4Model_2(self,_t__0):
    return self._clone_Lmosek_4fusion_4Model_2(_0)
  def _clone_Lmosek_4fusion_4Model_2(self,_0):
   return (mosek_fusion_LinearConstraint._ctor_Lmosek_4fusion_4LinearConstraint_2Lmosek_4fusion_4Model_2(self,_0))
 return LinearConstraint
mosek_fusion_LinearConstraint=__mk_mosek_fusion_LinearConstraint()
del __mk_mosek_fusion_LinearConstraint
def __mk_mosek_fusion_Set():
 class Set(object):
  @staticmethod
  def linearidx(*args):
    if False: pass
    elif mosek_fusion_Set._match_linearidx__3I_3I(*args): 
      return mosek_fusion_Set._linearidx__3I_3I(*args)
    elif mosek_fusion_Set._match_alt_linearidx__3I_3I(*args): 
      return mosek_fusion_Set._linearidx_alt__3I_3I(*args)
    else:
      raise ValueError('Invalid argument list linearidx('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Set.linearidx(array(int32,ndim=1),array(int32,ndim=1))')
  @staticmethod
  def match(*args):
    if False: pass
    elif mosek_fusion_Set._match_match__3I_3I(*args): 
      return mosek_fusion_Set._match__3I_3I(*args)
    elif mosek_fusion_Set._match_alt_match__3I_3I(*args): 
      return mosek_fusion_Set._match_alt__3I_3I(*args)
    else:
      raise ValueError('Invalid argument list match('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Set.match(array(int32,ndim=1),array(int32,ndim=1))')
  @staticmethod
  def scalar(*args):
    if False: pass
    elif mosek_fusion_Set._match_scalar_(*args): 
      return mosek_fusion_Set._scalar_(*args)
    elif mosek_fusion_Set._match_alt_scalar_(*args): 
      return mosek_fusion_Set._scalar_alt_(*args)
    else:
      raise ValueError('Invalid argument list scalar('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Set.scalar()')
  @staticmethod
  def strides(*args):
    if False: pass
    elif mosek_fusion_Set._match_strides__3I(*args): 
      return mosek_fusion_Set._strides__3I(*args)
    elif mosek_fusion_Set._match_alt_strides__3I(*args): 
      return mosek_fusion_Set._strides_alt__3I(*args)
    else:
      raise ValueError('Invalid argument list strides('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Set.strides(array(int32,ndim=1))')
  @staticmethod
  def make(*args):
    if False: pass
    elif mosek_fusion_Set._match_make__3S(*args): 
      return mosek_fusion_Set._make__3S(*args)
    elif mosek_fusion_Set._match_alt_make__3S(*args): 
      return mosek_fusion_Set._make_alt__3S(*args)
    elif mosek_fusion_Set._match_make_I(*args): 
      return mosek_fusion_Set._make_I(*args)
    elif mosek_fusion_Set._match_alt_make_I(*args): 
      return mosek_fusion_Set._make_alt_I(*args)
    elif mosek_fusion_Set._match_make__3I(*args): 
      return mosek_fusion_Set._make__3I(*args)
    elif mosek_fusion_Set._match_alt_make__3I(*args): 
      return mosek_fusion_Set._make_alt__3I(*args)
    elif mosek_fusion_Set._match_make__3I_3I(*args): 
      return mosek_fusion_Set._make__3I_3I(*args)
    elif mosek_fusion_Set._match_alt_make__3I_3I(*args): 
      return mosek_fusion_Set._make_alt__3I_3I(*args)
    elif mosek_fusion_Set._match_make_II(*args): 
      return mosek_fusion_Set._make_II(*args)
    elif mosek_fusion_Set._match_alt_make_II(*args): 
      return mosek_fusion_Set._make_alt_II(*args)
    elif mosek_fusion_Set._match_make_III(*args): 
      return mosek_fusion_Set._make_III(*args)
    elif mosek_fusion_Set._match_alt_make_III(*args): 
      return mosek_fusion_Set._make_alt_III(*args)
    else:
      raise ValueError('Invalid argument list make('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Set.make(array(string,ndim=1))\n\tmosek.fusion.Set.make(int32)\n\tmosek.fusion.Set.make(array(int32,ndim=1))\n\tmosek.fusion.Set.make(array(int32,ndim=1),array(int32,ndim=1))\n\tmosek.fusion.Set.make(int32,int32)\n\tmosek.fusion.Set.make(int32,int32,int32)')
  @staticmethod
  def keyToString(*args):
    if False: pass
    elif mosek_fusion_Set._match_keyToString__3I(*args): 
      return mosek_fusion_Set._keyToString__3I(*args)
    elif mosek_fusion_Set._match_alt_keyToString__3I(*args): 
      return mosek_fusion_Set._keyToString_alt__3I(*args)
    else:
      raise ValueError('Invalid argument list keyToString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Set.keyToString(array(int32,ndim=1))')
  @staticmethod
  def indexToKey(*args):
    if False: pass
    elif mosek_fusion_Set._match_indexToKey__3IJ_3I(*args): 
      return mosek_fusion_Set._indexToKey__3IJ_3I(*args)
    elif mosek_fusion_Set._match_alt_indexToKey__3IJ_3I(*args): 
      return mosek_fusion_Set._indexToKey_alt__3IJ_3I(*args)
    else:
      raise ValueError('Invalid argument list indexToKey('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Set.indexToKey(array(int32,ndim=1),int64,array(int32,ndim=1))')
  @staticmethod
  def indexToString(*args):
    if False: pass
    elif mosek_fusion_Set._match_indexToString__3IJ(*args): 
      return mosek_fusion_Set._indexToString__3IJ(*args)
    elif mosek_fusion_Set._match_alt_indexToString__3IJ(*args): 
      return mosek_fusion_Set._indexToString_alt__3IJ(*args)
    else:
      raise ValueError('Invalid argument list indexToString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Set.indexToString(array(int32,ndim=1),int64)')
  @staticmethod
  def size(*args):
    if False: pass
    elif mosek_fusion_Set._match_size__3I(*args): 
      return mosek_fusion_Set._size__3I(*args)
    elif mosek_fusion_Set._match_alt_size__3I(*args): 
      return mosek_fusion_Set._size_alt__3I(*args)
    else:
      raise ValueError('Invalid argument list size('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Set.size(array(int32,ndim=1))')
  @staticmethod
  def idxtokey(*args):
    if False: pass
    elif mosek_fusion_Set._match_idxtokey__3IJ(*args): 
      return mosek_fusion_Set._idxtokey__3IJ(*args)
    elif mosek_fusion_Set._match_alt_idxtokey__3IJ(*args): 
      return mosek_fusion_Set._idxtokey_alt__3IJ(*args)
    elif mosek_fusion_Set._match_idxtokey__3IJ_3I(*args): 
      return mosek_fusion_Set._idxtokey__3IJ_3I(*args)
    elif mosek_fusion_Set._match_alt_idxtokey__3IJ_3I(*args): 
      return mosek_fusion_Set._idxtokey_alt__3IJ_3I(*args)
    else:
      raise ValueError('Invalid argument list idxtokey('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Set.idxtokey(array(int32,ndim=1),int64)\n\tmosek.fusion.Set.idxtokey(array(int32,ndim=1),int64,array(int32,ndim=1))')
  def __repr__(self): return 'mosek.fusion.Set'
  @staticmethod
  def _match_size__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_size__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  @staticmethod
  def _size_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Set._size__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _size__3I(_0):
   _1=1
   for _2 in range(0,int((_0).shape[0])):
    _1 *= _0[_2]
   return numpy.int64(_1)
  @staticmethod
  def _match_match__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_match__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _match_alt__3I_3I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Set._match__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _match__3I_3I(_0,_1):
   if (int((_0).shape[0])!=int((_1).shape[0])):
    return (False)
   for _2 in range(0,int((_0).shape[0])):
    if (_0[_2]!=_1[_2]):
     return (False)
   return (True)
  @staticmethod
  def _match_linearidx__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_linearidx__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _linearidx_alt__3I_3I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Set._linearidx__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _linearidx__3I_3I(_0,_1):
   _2=_1[0]
   for _3 in range(1,int((_1).shape[0])):
    _2 = ((_2 * _0[_3]) + _1[_3])
   return numpy.int64(_2)
  @staticmethod
  def _match_idxtokey__3IJ(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match_J__(_1))
  @staticmethod
  def _match_alt_idxtokey__3IJ(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match_J__(_1))
  @staticmethod
  def _idxtokey_alt__3IJ(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.int64(_t__1)
   _1_res = mosek_fusion_Set._idxtokey__3IJ(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _idxtokey__3IJ(_0,_1):
   _2=numpy.zeros((int((_0).shape[0]),), dtype=numpy.dtype(numpy.int32))
   mosek.fusion.Set._idxtokey__3IJ_3I(_0,_1,_2)
   return (_2)
  @staticmethod
  def _match_idxtokey__3IJ_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3I__(_0) and __arg_match_J__(_1) and __arg_match__3I__(_2))
  @staticmethod
  def _match_alt_idxtokey__3IJ_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match_J__(_1) and __arg_alt_match__3I__(_2))
  @staticmethod
  def _idxtokey_alt__3IJ_3I(_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.int64(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Set._idxtokey__3IJ_3I(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _idxtokey__3IJ_3I(_0,_1,_2):
   _3=int((_0).shape[0])
   if (_3 > 0):
    _4=_1
    for _5 in range(0,(_3 - 1)):
     _2[((_3 - _5) - 1)] = numpy.int32((_4 % _0[((_3 - _5) - 1)]))
     _4 /= _0[((_3 - _5) - 1)]
    _2[0] = numpy.int32(_4)
  @staticmethod
  def _match_indexToString__3IJ(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match_J__(_1))
  @staticmethod
  def _match_alt_indexToString__3IJ(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match_J__(_1))
  @staticmethod
  def _indexToString_alt__3IJ(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.int64(_t__1)
   _1_res = mosek_fusion_Set._indexToString__3IJ(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _indexToString__3IJ(_0,_1):
   _2=int((_0).shape[0])
   _3=mosek.fusion.Utils.StringBuffer()
   if (_2==0):
    return ("0")
   elif (_2==1): # bld/grindsted/final/default/src/fusion/Set.mbi:130:16-23
    return (_3._a_J(_1)._toString_())
   else:
    _4=_1
    _5=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int32))
    for _6 in range(1,_2):
     _5[(_2 - _6)] = numpy.int32((_4 % _0[(_2 - _6)]))
     _4 /= _0[(_2 - _6)]
    _5[0] = numpy.int32(_4)
    _3._a_I(_5[0])
    for _7 in range(1,_2):
     _3._a_S(",")._a_I(_5[_7])
    return (_3._toString_())
  @staticmethod
  def _match_keyToString__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_keyToString__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  @staticmethod
  def _keyToString_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Set._keyToString__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _keyToString__3I(_0):
   _1=mosek.fusion.Utils.StringBuffer()
   _1._a_I(_0[0])
   for _2 in range(1,int((_0).shape[0])):
    _1._a_S(",")._a_I(_0[_2])
   return (_1._toString_())
  @staticmethod
  def _match_indexToKey__3IJ_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3I__(_0) and __arg_match_J__(_1) and __arg_match__3I__(_2))
  @staticmethod
  def _match_alt_indexToKey__3IJ_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match_J__(_1) and __arg_alt_match__3I__(_2))
  @staticmethod
  def _indexToKey_alt__3IJ_3I(_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.int64(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Set._indexToKey__3IJ_3I(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _indexToKey__3IJ_3I(_0,_1,_2):
   _3=int((_0).shape[0])
   if (_3==1):
    _2[0] = numpy.int32(_1)
   else:
    _4=_1
    for _5 in range(1,_3):
     _2[(_3 - _5)] = numpy.int32((_4 % _0[(_3 - _5)]))
     _4 /= _0[(_3 - _5)]
    _2[0] = numpy.int32(_4)
  @staticmethod
  def _match_strides__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_strides__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  @staticmethod
  def _strides_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Set._strides__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _strides__3I(_0):
   _1=int((_0).shape[0])
   _2=numpy.zeros((_1,), dtype=numpy.dtype(numpy.int64))
   _2[(_1 - 1)] = 1
   for _3 in range(1,_1):
    _2[((_1 - _3) - 1)] = (_2[(_1 - _3)] * _0[(_1 - _3)])
   return (_2)
  @staticmethod
  def _match_make__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_make__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _make_alt__3I_3I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Set._make__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _make__3I_3I(_0,_1):
   _2=numpy.zeros(((int((_0).shape[0]) + int((_1).shape[0])),), dtype=numpy.dtype(numpy.int32))
   for _3 in range(0,int((_0).shape[0])):
    _2[_3] = _0[_3]
   for _4 in range(0,int((_1).shape[0])):
    _2[(int((_0).shape[0]) + _4)] = _1[_4]
   return (_2)
  @staticmethod
  def _match_make__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_make__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  @staticmethod
  def _make_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Set._make__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _make__3I(_0):
   return (numpy.array([_0[_1] for _1 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int32)))
  @staticmethod
  def _match_make_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_make_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  @staticmethod
  def _make_alt_III(_t__0,_t__1,_t__2):
    return mosek_fusion_Set._make_III(numpy.int32(__0),numpy.int32(__1),numpy.int32(__2))
  @staticmethod
  def _make_III(_0,_1,_2):
   return (numpy.array([_0,_1,_2], dtype=numpy.dtype(numpy.int32)))
  @staticmethod
  def _match_make_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_make_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _make_alt_II(_t__0,_t__1):
    return mosek_fusion_Set._make_II(numpy.int32(__0),numpy.int32(__1))
  @staticmethod
  def _make_II(_0,_1):
   return (numpy.array([_0,_1], dtype=numpy.dtype(numpy.int32)))
  @staticmethod
  def _match_make_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_make_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  @staticmethod
  def _make_alt_I(_t__0):
    return mosek_fusion_Set._make_I(numpy.int32(__0))
  @staticmethod
  def _make_I(_0):
   return (numpy.array([_0], dtype=numpy.dtype(numpy.int32)))
  @staticmethod
  def _match_scalar_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_scalar_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _scalar_alt_():
    return mosek_fusion_Set._scalar_()
  @staticmethod
  def _scalar_():
   return (numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)))
  @staticmethod
  def _match_make__3S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3S__(_0))
  @staticmethod
  def _match_alt_make__3S(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3S__(_0))
  @staticmethod
  def _make_alt__3S(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Set._make__3S(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _make__3S(_0):
   return (numpy.array([int((_0).shape[0])], dtype=numpy.dtype(numpy.int32)))
 return Set
mosek_fusion_Set=__mk_mosek_fusion_Set()
del __mk_mosek_fusion_Set
def __mk_mosek_fusion_ConeDomain():
 class ConeDomain(object):
  __slots__ = ['_indexnames','_domsize','_domofs','_alpha','_shape','_int_flag','_axisset','_axisidx','_key']
  def axis(self,*args):
    if False: pass
    elif mosek_fusion_ConeDomain._match_axis_I(*args): 
      return self._axis_I(*args)
    elif mosek_fusion_ConeDomain._match_alt_axis_I(*args): 
      return self._axis_alt_I(*args)
    else:
      raise ValueError('Invalid argument list axis('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ConeDomain.axis(int32)')
  def getAxis(self,*args):
    if False: pass
    elif mosek_fusion_ConeDomain._match_getAxis_(*args): 
      return self._getAxis_(*args)
    elif mosek_fusion_ConeDomain._match_alt_getAxis_(*args): 
      return self._getAxis_alt_(*args)
    else:
      raise ValueError('Invalid argument list getAxis('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ConeDomain.getAxis()')
  def integral(self,*args):
    if False: pass
    elif mosek_fusion_ConeDomain._match_integral_(*args): 
      return self._integral_(*args)
    elif mosek_fusion_ConeDomain._match_alt_integral_(*args): 
      return self._integral_alt_(*args)
    else:
      raise ValueError('Invalid argument list integral('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ConeDomain.integral()')
  def withShape(self,*args):
    if False: pass
    elif mosek_fusion_ConeDomain._match_withShape__3I(*args): 
      return self._withShape__3I(*args)
    elif mosek_fusion_ConeDomain._match_alt_withShape__3I(*args): 
      return self._withShape_alt__3I(*args)
    elif mosek_fusion_ConeDomain._match_withShape_I(*args): 
      return self._withShape_I(*args)
    elif mosek_fusion_ConeDomain._match_alt_withShape_I(*args): 
      return self._withShape_alt_I(*args)
    elif mosek_fusion_ConeDomain._match_withShape_II(*args): 
      return self._withShape_II(*args)
    elif mosek_fusion_ConeDomain._match_alt_withShape_II(*args): 
      return self._withShape_alt_II(*args)
    elif mosek_fusion_ConeDomain._match_withShape_III(*args): 
      return self._withShape_III(*args)
    elif mosek_fusion_ConeDomain._match_alt_withShape_III(*args): 
      return self._withShape_alt_III(*args)
    else:
      raise ValueError('Invalid argument list withShape('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ConeDomain.withShape(array(int32,ndim=1))\n\tmosek.fusion.ConeDomain.withShape(int32)\n\tmosek.fusion.ConeDomain.withShape(int32,int32)\n\tmosek.fusion.ConeDomain.withShape(int32,int32,int32)')
  def axisIsSet(self,*args):
    if False: pass
    elif mosek_fusion_ConeDomain._match_axisIsSet_(*args): 
      return self._axisIsSet_(*args)
    elif mosek_fusion_ConeDomain._match_alt_axisIsSet_(*args): 
      return self._axisIsSet_alt_(*args)
    else:
      raise ValueError('Invalid argument list axisIsSet('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ConeDomain.axisIsSet()')
  def withNamesOnAxis(self,*args):
    if False: pass
    elif mosek_fusion_ConeDomain._match_withNamesOnAxis__3SI(*args): 
      return self._withNamesOnAxis__3SI(*args)
    elif mosek_fusion_ConeDomain._match_alt_withNamesOnAxis__3SI(*args): 
      return self._withNamesOnAxis_alt__3SI(*args)
    else:
      raise ValueError('Invalid argument list withNamesOnAxis('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ConeDomain.withNamesOnAxis(array(string,ndim=1),int32)')
  def __repr__(self): return 'mosek.fusion.ConeDomain'
  @staticmethod
  def _ctor_Emosek_4fusion_4QConeKey_2_3D_3I(k,alpha,d):
    o = ConeDomain.__new__(ConeDomain)
    o._ctor_init_Emosek_4fusion_4QConeKey_2_3D_3I(k,alpha,d)
    return o
  @staticmethod
  def __match_ctor_Emosek_4fusion_4QConeKey_2_3D_3I(*args):
    if len(args) != 3: return False
    k,alpha,d, = args
    return (__arg_match_Emosek_4fusion_4QConeKey_2__(k) and __arg_match__3D__(alpha) and __arg_match__3I__(d))
  @staticmethod
  def __match_alt_ctor_Emosek_4fusion_4QConeKey_2_3D_3I(*args):
    if len(args) != 3: return False
    k,alpha,d, = args
    return (__arg_alt_match_Emosek_4fusion_4QConeKey_2__(k) and __arg_alt_match__3D__(alpha) and __arg_alt_match__3I__(d))
  def _ctor_alt_init_Emosek_4fusion_4QConeKey_2_3D_3I(self,k,alpha,d):
    self._ctor_init_Emosek_4fusion_4QConeKey_2_3D_3I(k,numpy.array(alpha,dtype=numpy.dtype(numpy.float64)),numpy.array(d,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_Emosek_4fusion_4QConeKey_2_3D_3I(self,k,alpha,d):
   self._shape = (mosek.fusion.Utils.Tools._arraycopy__3I(d) if ((d is not None) ) else None)
   self._domsize = 0
   (self._alpha) = alpha
   self._key = k
   self._axisidx = 0
   self._axisset = False
   self._int_flag = False
   self._domofs = None
   self._indexnames = None
  @staticmethod
  def _ctor_Emosek_4fusion_4QConeKey_2_3I(k,d):
    o = ConeDomain.__new__(ConeDomain)
    o._ctor_init_Emosek_4fusion_4QConeKey_2_3I(k,d)
    return o
  @staticmethod
  def __match_ctor_Emosek_4fusion_4QConeKey_2_3I(*args):
    if len(args) != 2: return False
    k,d, = args
    return (__arg_match_Emosek_4fusion_4QConeKey_2__(k) and __arg_match__3I__(d))
  @staticmethod
  def __match_alt_ctor_Emosek_4fusion_4QConeKey_2_3I(*args):
    if len(args) != 2: return False
    k,d, = args
    return (__arg_alt_match_Emosek_4fusion_4QConeKey_2__(k) and __arg_alt_match__3I__(d))
  def _ctor_alt_init_Emosek_4fusion_4QConeKey_2_3I(self,k,d):
    self._ctor_init_Emosek_4fusion_4QConeKey_2_3I(k,numpy.array(d,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_Emosek_4fusion_4QConeKey_2_3I(self,k,d):
   mosek_fusion_ConeDomain._ctor_init_Emosek_4fusion_4QConeKey_2_3D_3I(self,k,None,d)
  @staticmethod
  def _ctor_Lmosek_4fusion_4ConeDomain_2(other):
    o = ConeDomain.__new__(ConeDomain)
    o._ctor_init_Lmosek_4fusion_4ConeDomain_2(other)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 1: return False
    other, = args
    return (__arg_match_Lmosek_4fusion_4ConeDomain_2__(other))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 1: return False
    other, = args
    return (__arg_alt_match_Lmosek_4fusion_4ConeDomain_2__(other))
  def _ctor_alt_init_Lmosek_4fusion_4ConeDomain_2(self,other):
    self._ctor_init_Lmosek_4fusion_4ConeDomain_2(other)
  def _ctor_init_Lmosek_4fusion_4ConeDomain_2(self,other):
   self._key = (other._key)
   self._axisidx = (other._axisidx)
   self._axisset = (other._axisset)
   self._int_flag = (other._int_flag)
   self._shape = (other._shape)
   self._alpha = (other._alpha)
   self._domofs = (other._domofs)
   self._domsize = (other._domsize)
   self._indexnames = (other._indexnames)
  def _match_1shape_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._match_1shape__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _match_1shape__3I(self,_0):
   return (((self._shape is None) or mosek.fusion.Set._match__3I_3I(_0,self._shape)))
  @staticmethod
  def _match_integral_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_integral_(*args):
    if len(args) != 0: return False
    return True
  def _integral_alt_(self,):
    return self._integral_()
  def _integral_(self,):
   self._int_flag = True
   return (self)
  @staticmethod
  def _match_axisIsSet_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_axisIsSet_(*args):
    if len(args) != 0: return False
    return True
  def _axisIsSet_alt_(self,):
    return self._axisIsSet_()
  def _axisIsSet_(self,):
   return (self._axisset)
  @staticmethod
  def _match_getAxis_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getAxis_(*args):
    if len(args) != 0: return False
    return True
  def _getAxis_alt_(self,):
    return self._getAxis_()
  def _getAxis_(self,):
   return numpy.int32(self._axisidx)
  @staticmethod
  def _match_axis_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_axis_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _axis_alt_I(self,_t__0):
    return self._axis_I(numpy.int32(__0))
  def _axis_I(self,_0):
   self._axisidx = _0
   self._axisset = True
   return (self)
  @staticmethod
  def _match_withShape_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_withShape_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  def _withShape_alt_III(self,_t__0,_t__1,_t__2):
    return self._withShape_III(numpy.int32(__0),numpy.int32(__1),numpy.int32(__2))
  def _withShape_III(self,_0,_1,_2):
   return (self.__withShape_1__3I(numpy.array([_0,_1,_2], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_withShape_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_withShape_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _withShape_alt_II(self,_t__0,_t__1):
    return self._withShape_II(numpy.int32(__0),numpy.int32(__1))
  def _withShape_II(self,_0,_1):
   return (self.__withShape_1__3I(numpy.array([_0,_1], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_withShape_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_withShape_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _withShape_alt_I(self,_t__0):
    return self._withShape_I(numpy.int32(__0))
  def _withShape_I(self,_0):
   return (self.__withShape_1__3I(numpy.array([_0], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_withShape__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_withShape__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _withShape_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._withShape__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _withShape__3I(self,_0):
   return (self.__withShape_1__3I(mosek.fusion.Utils.Tools._arraycopy__3I(_0)))
  def __withShape_1_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self.__withShape_1__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __withShape_1__3I(self,_0):
   self._shape = _0
   return (self)
  @staticmethod
  def _match_withNamesOnAxis__3SI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3S__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_withNamesOnAxis__3SI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3S__(_0) and __arg_alt_match_I__(_1))
  def _withNamesOnAxis_alt__3SI(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1=numpy.int32(_t__1)
   _1_res = self._withNamesOnAxis__3SI(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _withNamesOnAxis__3SI(self,_0,_1):
   if (self._indexnames is None):
    self._indexnames = _monty.initJaggedArray([None for _2 in range(0,(_1 + 1))], 1)
    self._indexnames[_1] = numpy.array([_0[_3] for _3 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(object))
   if (int((self._indexnames).shape[0]) < (_1 + 1)):
    _4=_monty.initJaggedArray([None for _5 in range(0,(_1 + 1))], 1)
    for _6 in range(0,int((self._indexnames).shape[0])):
     _4[_6] = self._indexnames[_6]
    self._indexnames = _4
   self._indexnames[_1] = numpy.array([_0[_7] for _7 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(object))
   return (self)
  def __finalize_1and_1validate_1inplace_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self.__finalize_1and_1validate_1inplace__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __finalize_1and_1validate_1inplace__3I(self,_0):
   self._domsize = 1
   if (self._shape is None):
    if (_0 is not None):
     self._shape = _0
    else:
     raise mosek_fusion_DimensionError._ctor_S("Missing domain shape")
   elif (_0 is not None): # bld/grindsted/final/default/src/fusion/domain.mbi:1652:16-27
    if (int((_0).shape[0])!=int((self._shape).shape[0])):
     raise mosek_fusion_DimensionError._ctor_S("Conflicting shape definitions")
    for _1 in range(0,int((_0).shape[0])):
     if (_0[_1]!=self._shape[_1]):
      raise mosek_fusion_DimensionError._ctor_S("Conflicting shape definitions")
   for _2 in range(0,int((self._shape).shape[0])):
    self._domsize *= self._shape[_2]
   if (self._indexnames is not None):
    if (int((self._indexnames).shape[0])!=int((self._shape).shape[0])):
     raise mosek_fusion_DimensionError._ctor_S("Index names do not match shape")
    for _3 in range(0,int((self._shape).shape[0])):
     if ((self._indexnames[_3] is not None) and (int((self._indexnames[_3]).shape[0])!=self._shape[_3])):
      raise mosek_fusion_DimensionError._ctor_S("Index names do not match shape")
   if (not self._axisset):
    self._axisset = True
    self._axisidx = (int((self._shape).shape[0]) - 1)
   elif ((self._axisidx < 0) or (self._axisidx >= int((self._shape).shape[0]))): # bld/grindsted/final/default/src/fusion/domain.mbi:1673:16-52
    raise mosek_fusion_DimensionError._ctor_S("Cone axis is invalid")
   if ((self._domofs is not None) and (int((self._domofs).shape[0])!=self._domsize)):
    raise mosek_fusion_DimensionError._ctor_S("Domain offset does not match shape")
  def _finalize_1and_1validate_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._finalize_1and_1validate__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _finalize_1and_1validate__3I(self,_0):
   _1=mosek_fusion_ConeDomain._ctor_Lmosek_4fusion_4ConeDomain_2(self)
   _1.__finalize_1and_1validate_1inplace__3I(_0)
   return (_1)
 return ConeDomain
mosek_fusion_ConeDomain=__mk_mosek_fusion_ConeDomain()
del __mk_mosek_fusion_ConeDomain
def __mk_mosek_fusion_PSDDomain():
 class PSDDomain(object):
  __slots__ = ['_indexnames','_axisIsSet','_conedim2','_conedim1','_key','_shape']
  def axis(self,*args):
    if False: pass
    elif mosek_fusion_PSDDomain._match_axis_II(*args): 
      return self._axis_II(*args)
    elif mosek_fusion_PSDDomain._match_alt_axis_II(*args): 
      return self._axis_alt_II(*args)
    else:
      raise ValueError('Invalid argument list axis('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.PSDDomain.axis(int32,int32)')
  def withNamesOnAxis(self,*args):
    if False: pass
    elif mosek_fusion_PSDDomain._match_withNamesOnAxis__3SI(*args): 
      return self._withNamesOnAxis__3SI(*args)
    elif mosek_fusion_PSDDomain._match_alt_withNamesOnAxis__3SI(*args): 
      return self._withNamesOnAxis_alt__3SI(*args)
    else:
      raise ValueError('Invalid argument list withNamesOnAxis('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.PSDDomain.withNamesOnAxis(array(string,ndim=1),int32)')
  def __repr__(self): return 'mosek.fusion.PSDDomain'
  @staticmethod
  def _ctor_Emosek_4fusion_4PSDKey_2_3III(k,shp,conedim1,conedim2):
    o = PSDDomain.__new__(PSDDomain)
    o._ctor_init_Emosek_4fusion_4PSDKey_2_3III(k,shp,conedim1,conedim2)
    return o
  @staticmethod
  def __match_ctor_Emosek_4fusion_4PSDKey_2_3III(*args):
    if len(args) != 4: return False
    k,shp,conedim1,conedim2, = args
    return (__arg_match_Emosek_4fusion_4PSDKey_2__(k) and __arg_match__3I__(shp) and __arg_match_I__(conedim1) and __arg_match_I__(conedim2))
  @staticmethod
  def __match_alt_ctor_Emosek_4fusion_4PSDKey_2_3III(*args):
    if len(args) != 4: return False
    k,shp,conedim1,conedim2, = args
    return (__arg_alt_match_Emosek_4fusion_4PSDKey_2__(k) and __arg_alt_match__3I__(shp) and __arg_alt_match_I__(conedim1) and __arg_alt_match_I__(conedim2))
  def _ctor_alt_init_Emosek_4fusion_4PSDKey_2_3III(self,k,shp,conedim1,conedim2):
    self._ctor_init_Emosek_4fusion_4PSDKey_2_3III(k,numpy.array(shp,dtype=numpy.dtype(numpy.int32)),numpy.int32(conedim1),numpy.int32(conedim2))
  def _ctor_init_Emosek_4fusion_4PSDKey_2_3III(self,k,shp,conedim1,conedim2):
   self._axisIsSet = True
   self._shape = shp
   self._key = k
   (self._conedim1) = conedim1
   (self._conedim2) = conedim2
   self._indexnames = None
   _0=int((self._shape).shape[0])
   if ((not ((int((self._shape).shape[0]) > conedim1) and ((int((self._shape).shape[0]) > conedim2) and ((conedim1 >= 0) and ((conedim2 >= 0) and (conedim1!=conedim2)))))) and (self._shape[conedim1]==self._shape[conedim2])):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching shape or cone dimensions")
  @staticmethod
  def _ctor_Emosek_4fusion_4PSDKey_2_3I(k,shp):
    o = PSDDomain.__new__(PSDDomain)
    o._ctor_init_Emosek_4fusion_4PSDKey_2_3I(k,shp)
    return o
  @staticmethod
  def __match_ctor_Emosek_4fusion_4PSDKey_2_3I(*args):
    if len(args) != 2: return False
    k,shp, = args
    return (__arg_match_Emosek_4fusion_4PSDKey_2__(k) and __arg_match__3I__(shp))
  @staticmethod
  def __match_alt_ctor_Emosek_4fusion_4PSDKey_2_3I(*args):
    if len(args) != 2: return False
    k,shp, = args
    return (__arg_alt_match_Emosek_4fusion_4PSDKey_2__(k) and __arg_alt_match__3I__(shp))
  def _ctor_alt_init_Emosek_4fusion_4PSDKey_2_3I(self,k,shp):
    self._ctor_init_Emosek_4fusion_4PSDKey_2_3I(k,numpy.array(shp,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_Emosek_4fusion_4PSDKey_2_3I(self,k,shp):
   mosek_fusion_PSDDomain._ctor_init_Emosek_4fusion_4PSDKey_2_3III(self,k,shp,(int((shp).shape[0]) - 2),(int((shp).shape[0]) - 1))
  @staticmethod
  def _ctor_Emosek_4fusion_4PSDKey_2(k):
    o = PSDDomain.__new__(PSDDomain)
    o._ctor_init_Emosek_4fusion_4PSDKey_2(k)
    return o
  @staticmethod
  def __match_ctor_Emosek_4fusion_4PSDKey_2(*args):
    if len(args) != 1: return False
    k, = args
    return (__arg_match_Emosek_4fusion_4PSDKey_2__(k))
  @staticmethod
  def __match_alt_ctor_Emosek_4fusion_4PSDKey_2(*args):
    if len(args) != 1: return False
    k, = args
    return (__arg_alt_match_Emosek_4fusion_4PSDKey_2__(k))
  def _ctor_alt_init_Emosek_4fusion_4PSDKey_2(self,k):
    self._ctor_init_Emosek_4fusion_4PSDKey_2(k)
  def _ctor_init_Emosek_4fusion_4PSDKey_2(self,k):
   self._shape = None
   self._key = k
   self._conedim1 = 0
   self._conedim2 = 0
   self._axisIsSet = False
   self._indexnames = None
  @staticmethod
  def _ctor_Lmosek_4fusion_4PSDDomain_2(other):
    o = PSDDomain.__new__(PSDDomain)
    o._ctor_init_Lmosek_4fusion_4PSDDomain_2(other)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 1: return False
    other, = args
    return (__arg_match_Lmosek_4fusion_4PSDDomain_2__(other))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 1: return False
    other, = args
    return (__arg_alt_match_Lmosek_4fusion_4PSDDomain_2__(other))
  def _ctor_alt_init_Lmosek_4fusion_4PSDDomain_2(self,other):
    self._ctor_init_Lmosek_4fusion_4PSDDomain_2(other)
  def _ctor_init_Lmosek_4fusion_4PSDDomain_2(self,other):
   self._shape = (other._shape)
   self._key = (other._key)
   self._conedim1 = (other._conedim1)
   self._conedim2 = (other._conedim2)
   self._axisIsSet = (other._axisIsSet)
   self._indexnames = (other._indexnames)
  @staticmethod
  def _match_axis_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_axis_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _axis_alt_II(self,_t__0,_t__1):
    return self._axis_II(numpy.int32(__0),numpy.int32(__1))
  def _axis_II(self,_0,_1):
   (self._conedim1) = _0
   (self._conedim2) = _1
   self._axisIsSet = True
   if ((self._shape is None) and (not ((_0 >= 0) and ((_1 >= 0) and (_0!=_1))))):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching shape or cone dimensions")
   elif ((self._shape is not None) and ((not ((int((self._shape).shape[0]) > _0) and ((int((self._shape).shape[0]) > _1) and ((_0 >= 0) and ((_1 >= 0) and (_0!=_1)))))) and (self._shape[_0]==self._shape[_1]))): # bld/grindsted/final/default/src/fusion/domain.mbi:1535:17-1541:51
    raise mosek_fusion_DimensionError._ctor_S("Mismatching shape or cone dimensions")
   return (self)
  @staticmethod
  def _match_withNamesOnAxis__3SI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3S__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_withNamesOnAxis__3SI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3S__(_0) and __arg_alt_match_I__(_1))
  def _withNamesOnAxis_alt__3SI(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1=numpy.int32(_t__1)
   _1_res = self._withNamesOnAxis__3SI(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _withNamesOnAxis__3SI(self,_0,_1):
   if (self._indexnames is None):
    self._indexnames = _monty.initJaggedArray([None for _2 in range(0,(_1 + 1))], 1)
    self._indexnames[_1] = numpy.array([_0[_3] for _3 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(object))
   if (int((self._indexnames).shape[0]) < (_1 + 1)):
    _4=_monty.initJaggedArray([None for _5 in range(0,(_1 + 1))], 1)
    for _6 in range(0,int((self._indexnames).shape[0])):
     _4[_6] = self._indexnames[_6]
    self._indexnames = _4
   self._indexnames[_1] = numpy.array([_0[_7] for _7 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(object))
   return (self)
  def __finalize_1and_1validate_1inplace_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self.__finalize_1and_1validate_1inplace__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __finalize_1and_1validate_1inplace__3I(self,_0):
   if (_0 is not None):
    if (self._shape is None):
     self._shape = _0
    else:
     if (int((_0).shape[0])!=int((self._shape).shape[0])):
      raise mosek_fusion_DimensionError._ctor_S("Conflicting shape definitions")
     for _1 in range(0,int((_0).shape[0])):
      if (_0[_1]!=self._shape[_1]):
       raise mosek_fusion_DimensionError._ctor_S("Conflicting shape definitions")
   if (int((self._shape).shape[0]) < 2):
    raise mosek_fusion_DimensionError._ctor_S("Positive semidefinite domain must have at least two dimensions")
   if (not self._axisIsSet):
    self._conedim1 = (int((self._shape).shape[0]) - 2)
    self._conedim2 = (int((self._shape).shape[0]) - 1)
   if ((self._conedim1 < 0) or ((self._conedim1 >= int((self._shape).shape[0])) or ((self._conedim2 < 0) or ((self._conedim2 >= int((self._shape).shape[0])) or (self._conedim1==self._conedim2))))):
    raise mosek_fusion_DimensionError._ctor_S("Invalid cone dimension specification")
   if (self._shape[self._conedim1]!=self._shape[self._conedim2]):
    raise mosek_fusion_DimensionError._ctor_S("Cone dimensions must have same size")
   if (self._indexnames is not None):
    if (int((self._indexnames).shape[0])!=int((self._shape).shape[0])):
     raise mosek_fusion_DimensionError._ctor_S("Index names do not match the domain shape")
    else:
     for _2 in range(0,int((self._shape).shape[0])):
      if ((self._indexnames[_2] is not None) and (int((self._indexnames[_2]).shape[0])!=self._shape[_2])):
       raise mosek_fusion_DimensionError._ctor_S("Index names do not match the domain shape")
  def _finalize_1and_1validate_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._finalize_1and_1validate__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _finalize_1and_1validate__3I(self,_0):
   _1=mosek_fusion_PSDDomain._ctor_Lmosek_4fusion_4PSDDomain_2(self)
   _1.__finalize_1and_1validate_1inplace__3I(_0)
   return (_1)
 return PSDDomain
mosek_fusion_PSDDomain=__mk_mosek_fusion_PSDDomain()
del __mk_mosek_fusion_PSDDomain
def __mk_mosek_fusion_RangeDomain():
 class RangeDomain(object):
  __slots__ = ['_domsize','_nelements','_indexnames','_cardinal_flag','_scalable','_ub','_lb','_sparsity','_empty','_shape']
  def sparse(self,*args):
    if False: pass
    elif mosek_fusion_RangeDomain._match_sparse_(*args): 
      return self._sparse_(*args)
    elif mosek_fusion_RangeDomain._match_alt_sparse_(*args): 
      return self._sparse_alt_(*args)
    elif mosek_fusion_RangeDomain._match_sparse__3I(*args): 
      return self._sparse__3I(*args)
    elif mosek_fusion_RangeDomain._match_alt_sparse__3I(*args): 
      return self._sparse_alt__3I(*args)
    elif mosek_fusion_RangeDomain._match_sparse__3_5I(*args): 
      return self._sparse__3_5I(*args)
    elif mosek_fusion_RangeDomain._match_alt_sparse__3_5I(*args): 
      return self._sparse_alt__3_5I(*args)
    else:
      raise ValueError('Invalid argument list sparse('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RangeDomain.sparse()\n\tmosek.fusion.RangeDomain.sparse(array(int32,ndim=1))\n\tmosek.fusion.RangeDomain.sparse(array(int32,ndim=2))')
  def withShape(self,*args):
    if False: pass
    elif mosek_fusion_RangeDomain._match_withShape__3I(*args): 
      return self._withShape__3I(*args)
    elif mosek_fusion_RangeDomain._match_alt_withShape__3I(*args): 
      return self._withShape_alt__3I(*args)
    elif mosek_fusion_RangeDomain._match_withShape_I(*args): 
      return self._withShape_I(*args)
    elif mosek_fusion_RangeDomain._match_alt_withShape_I(*args): 
      return self._withShape_alt_I(*args)
    elif mosek_fusion_RangeDomain._match_withShape_II(*args): 
      return self._withShape_II(*args)
    elif mosek_fusion_RangeDomain._match_alt_withShape_II(*args): 
      return self._withShape_alt_II(*args)
    elif mosek_fusion_RangeDomain._match_withShape_III(*args): 
      return self._withShape_III(*args)
    elif mosek_fusion_RangeDomain._match_alt_withShape_III(*args): 
      return self._withShape_alt_III(*args)
    else:
      raise ValueError('Invalid argument list withShape('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RangeDomain.withShape(array(int32,ndim=1))\n\tmosek.fusion.RangeDomain.withShape(int32)\n\tmosek.fusion.RangeDomain.withShape(int32,int32)\n\tmosek.fusion.RangeDomain.withShape(int32,int32,int32)')
  def integral(self,*args):
    if False: pass
    elif mosek_fusion_RangeDomain._match_integral_(*args): 
      return self._integral_(*args)
    elif mosek_fusion_RangeDomain._match_alt_integral_(*args): 
      return self._integral_alt_(*args)
    else:
      raise ValueError('Invalid argument list integral('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RangeDomain.integral()')
  def withNamesOnAxis(self,*args):
    if False: pass
    elif mosek_fusion_RangeDomain._match_withNamesOnAxis__3SI(*args): 
      return self._withNamesOnAxis__3SI(*args)
    elif mosek_fusion_RangeDomain._match_alt_withNamesOnAxis__3SI(*args): 
      return self._withNamesOnAxis_alt__3SI(*args)
    else:
      raise ValueError('Invalid argument list withNamesOnAxis('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.RangeDomain.withNamesOnAxis(array(string,ndim=1),int32)')
  def __repr__(self): return 'mosek.fusion.RangeDomain'
  @staticmethod
  def _ctor_Z_3D_3D_3I(scalable,lb,ub,dims):
    o = RangeDomain.__new__(RangeDomain)
    o._ctor_init_Z_3D_3D_3I(scalable,lb,ub,dims)
    return o
  @staticmethod
  def __match_ctor_Z_3D_3D_3I(*args):
    if len(args) != 4: return False
    scalable,lb,ub,dims, = args
    return (__arg_match_Z__(scalable) and __arg_match__3D__(lb) and __arg_match__3D__(ub) and __arg_match__3I__(dims))
  @staticmethod
  def __match_alt_ctor_Z_3D_3D_3I(*args):
    if len(args) != 4: return False
    scalable,lb,ub,dims, = args
    return (__arg_alt_match_Z__(scalable) and __arg_alt_match__3D__(lb) and __arg_alt_match__3D__(ub) and __arg_alt_match__3I__(dims))
  def _ctor_alt_init_Z_3D_3D_3I(self,scalable,lb,ub,dims):
    self._ctor_init_Z_3D_3D_3I(scalable,numpy.array(lb,dtype=numpy.dtype(numpy.float64)),numpy.array(ub,dtype=numpy.dtype(numpy.float64)),numpy.array(dims,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_Z_3D_3D_3I(self,scalable,lb,ub,dims):
   mosek_fusion_RangeDomain._ctor_init_Z_3D_3D_3I_3_5II(self,scalable,lb,ub,dims,None,1)
  @staticmethod
  def _ctor_ZDD_3I(scalable,lb,ub,dims):
    o = RangeDomain.__new__(RangeDomain)
    o._ctor_init_ZDD_3I(scalable,lb,ub,dims)
    return o
  @staticmethod
  def __match_ctor_ZDD_3I(*args):
    if len(args) != 4: return False
    scalable,lb,ub,dims, = args
    return (__arg_match_Z__(scalable) and __arg_match_D__(lb) and __arg_match_D__(ub) and __arg_match__3I__(dims))
  @staticmethod
  def __match_alt_ctor_ZDD_3I(*args):
    if len(args) != 4: return False
    scalable,lb,ub,dims, = args
    return (__arg_alt_match_Z__(scalable) and __arg_alt_match_D__(lb) and __arg_alt_match_D__(ub) and __arg_alt_match__3I__(dims))
  def _ctor_alt_init_ZDD_3I(self,scalable,lb,ub,dims):
    self._ctor_init_ZDD_3I(scalable,numpy.float64(lb),numpy.float64(ub),numpy.array(dims,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_ZDD_3I(self,scalable,lb,ub,dims):
   self._cardinal_flag = False
   self._shape = dims
   self._sparsity = None
   (self._scalable) = scalable
   _0=1
   for _1 in range(0,int((dims).shape[0])):
    _0 *= dims[_1]
   (self._ub) = numpy.array([ub for _2 in range(0,_0)], dtype=numpy.dtype(numpy.float64))
   (self._lb) = numpy.array([lb for _3 in range(0,_0)], dtype=numpy.dtype(numpy.float64))
   (self._empty) = False
   (self._indexnames) = None
   (self._domsize) = 0
   (self._nelements) = 0
  @staticmethod
  def _ctor_Z_3D_3D_3I_3_5I(scalable,lb,ub,dims,sp):
    o = RangeDomain.__new__(RangeDomain)
    o._ctor_init_Z_3D_3D_3I_3_5I(scalable,lb,ub,dims,sp)
    return o
  @staticmethod
  def __match_ctor_Z_3D_3D_3I_3_5I(*args):
    if len(args) != 5: return False
    scalable,lb,ub,dims,sp, = args
    return (__arg_match_Z__(scalable) and __arg_match__3D__(lb) and __arg_match__3D__(ub) and __arg_match__3I__(dims) and __arg_match__3_5I__(sp))
  @staticmethod
  def __match_alt_ctor_Z_3D_3D_3I_3_5I(*args):
    if len(args) != 5: return False
    scalable,lb,ub,dims,sp, = args
    return (__arg_alt_match_Z__(scalable) and __arg_alt_match__3D__(lb) and __arg_alt_match__3D__(ub) and __arg_alt_match__3I__(dims) and __arg_alt_match__3_5I__(sp))
  def _ctor_alt_init_Z_3D_3D_3I_3_5I(self,scalable,lb,ub,dims,sp):
    self._ctor_init_Z_3D_3D_3I_3_5I(scalable,numpy.array(lb,dtype=numpy.dtype(numpy.float64)),numpy.array(ub,dtype=numpy.dtype(numpy.float64)),numpy.array(dims,dtype=numpy.dtype(numpy.int32)),numpy.array(sp,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_Z_3D_3D_3I_3_5I(self,scalable,lb,ub,dims,sp):
   mosek_fusion_RangeDomain._ctor_init_Z_3D_3D_3I_3_5II(self,scalable,lb,ub,dims,sp,1)
  @staticmethod
  def _ctor_Z_3D_3D_3I_3_5II(scalable,lb,ub,dims,sp,steal):
    o = RangeDomain.__new__(RangeDomain)
    o._ctor_init_Z_3D_3D_3I_3_5II(scalable,lb,ub,dims,sp,steal)
    return o
  @staticmethod
  def __match_ctor_Z_3D_3D_3I_3_5II(*args):
    if len(args) != 6: return False
    scalable,lb,ub,dims,sp,steal, = args
    return (__arg_match_Z__(scalable) and __arg_match__3D__(lb) and __arg_match__3D__(ub) and __arg_match__3I__(dims) and __arg_match__3_5I__(sp) and __arg_match_I__(steal))
  @staticmethod
  def __match_alt_ctor_Z_3D_3D_3I_3_5II(*args):
    if len(args) != 6: return False
    scalable,lb,ub,dims,sp,steal, = args
    return (__arg_alt_match_Z__(scalable) and __arg_alt_match__3D__(lb) and __arg_alt_match__3D__(ub) and __arg_alt_match__3I__(dims) and __arg_alt_match__3_5I__(sp) and __arg_alt_match_I__(steal))
  def _ctor_alt_init_Z_3D_3D_3I_3_5II(self,scalable,lb,ub,dims,sp,steal):
    self._ctor_init_Z_3D_3D_3I_3_5II(scalable,numpy.array(lb,dtype=numpy.dtype(numpy.float64)),numpy.array(ub,dtype=numpy.dtype(numpy.float64)),numpy.array(dims,dtype=numpy.dtype(numpy.int32)),numpy.array(sp,dtype=numpy.dtype(numpy.int32)),numpy.int32(steal))
  def _ctor_init_Z_3D_3D_3I_3_5II(self,scalable,lb,ub,dims,sp,steal):
   self._cardinal_flag = False
   self._shape = dims
   self._sparsity = None
   (self._scalable) = scalable
   (self._ub) = ub
   (self._lb) = lb
   (self._sparsity) = sp
   (self._empty) = False
   (self._indexnames) = None
   (self._domsize) = 0
   (self._nelements) = 0
  @staticmethod
  def _ctor_Lmosek_4fusion_4RangeDomain_2(other):
    o = RangeDomain.__new__(RangeDomain)
    o._ctor_init_Lmosek_4fusion_4RangeDomain_2(other)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 1: return False
    other, = args
    return (__arg_match_Lmosek_4fusion_4RangeDomain_2__(other))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 1: return False
    other, = args
    return (__arg_alt_match_Lmosek_4fusion_4RangeDomain_2__(other))
  def _ctor_alt_init_Lmosek_4fusion_4RangeDomain_2(self,other):
    self._ctor_init_Lmosek_4fusion_4RangeDomain_2(other)
  def _ctor_init_Lmosek_4fusion_4RangeDomain_2(self,other):
   self._cardinal_flag = (other._cardinal_flag)
   self._sparsity = (other._sparsity)
   self._scalable = (other._scalable)
   self._shape = (other._shape)
   self._ub = (other._ub)
   self._lb = (other._lb)
   self._domsize = (other._domsize)
   self._nelements = (other._nelements)
   self._empty = (other._empty)
   self._indexnames = (_monty.initJaggedArray([(other._indexnames)[_0] for _0 in range(0,int(((other._indexnames)).shape[0]))], 1) if (((other._indexnames) is not None) ) else None)
  @staticmethod
  def _match_sparse__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5I__(_0))
  @staticmethod
  def _match_alt_sparse__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5I__(_0))
  def _sparse_alt__3_5I(self,_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.int32))
   _1_res = self._sparse__3_5I(_0)
   return _1_res
  def _sparse__3_5I(self,_0):
   (self._sparsity) = numpy.zeros((int((_0).shape[0]),int((_0).shape[1]),), dtype=numpy.dtype(numpy.int32))
   _1=0
   while (_1 < int((_0).shape[0])):
    _2=0
    while (_2 < int((_0).shape[1])):
     (self._sparsity)[_1,_2] = _0[_1,_2]
     _2 += 1
    _1 += 1
   return (self)
  @staticmethod
  def _match_sparse__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_sparse__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _sparse_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._sparse__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _sparse__3I(self,_0):
   (self._sparsity) = numpy.zeros((int((_0).shape[0]),1,), dtype=numpy.dtype(numpy.int32))
   for _1 in range(0,int((_0).shape[0])):
    (self._sparsity)[_1,0] = _0[_1]
   return (self)
  @staticmethod
  def _match_sparse_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_sparse_(*args):
    if len(args) != 0: return False
    return True
  def _sparse_alt_(self,):
    return self._sparse_()
  def _sparse_(self,):
   (self._empty) = True
   (self._sparsity) = None
   return (self)
  @staticmethod
  def _match_integral_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_integral_(*args):
    if len(args) != 0: return False
    return True
  def _integral_alt_(self,):
    return self._integral_()
  def _integral_(self,):
   self._cardinal_flag = True
   return (self)
  @staticmethod
  def _match_withShape_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_withShape_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  def _withShape_alt_III(self,_t__0,_t__1,_t__2):
    return self._withShape_III(numpy.int32(__0),numpy.int32(__1),numpy.int32(__2))
  def _withShape_III(self,_0,_1,_2):
   self._shape = numpy.array([_0,_1,_2], dtype=numpy.dtype(numpy.int32))
   return (self)
  @staticmethod
  def _match_withShape_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_withShape_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _withShape_alt_II(self,_t__0,_t__1):
    return self._withShape_II(numpy.int32(__0),numpy.int32(__1))
  def _withShape_II(self,_0,_1):
   self._shape = numpy.array([_0,_1], dtype=numpy.dtype(numpy.int32))
   return (self)
  @staticmethod
  def _match_withShape_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_withShape_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _withShape_alt_I(self,_t__0):
    return self._withShape_I(numpy.int32(__0))
  def _withShape_I(self,_0):
   self._shape = numpy.array([_0], dtype=numpy.dtype(numpy.int32))
   return (self)
  @staticmethod
  def _match_withShape__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_withShape__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _withShape_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._withShape__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _withShape__3I(self,_0):
   self._shape = _0
   return (self)
  @staticmethod
  def _match_withNamesOnAxis__3SI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3S__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_withNamesOnAxis__3SI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3S__(_0) and __arg_alt_match_I__(_1))
  def _withNamesOnAxis_alt__3SI(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1=numpy.int32(_t__1)
   _1_res = self._withNamesOnAxis__3SI(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _withNamesOnAxis__3SI(self,_0,_1):
   if (self._indexnames is None):
    self._indexnames = _monty.initJaggedArray([None for _2 in range(0,(_1 + 1))], 1)
    self._indexnames[_1] = numpy.array([_0[_3] for _3 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(object))
   if (int((self._indexnames).shape[0]) < (_1 + 1)):
    _4=_monty.initJaggedArray([None for _5 in range(0,(_1 + 1))], 1)
    for _6 in range(0,int((self._indexnames).shape[0])):
     _4[_6] = self._indexnames[_6]
    self._indexnames = _4
   self._indexnames[_1] = numpy.array([_0[_7] for _7 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(object))
   return (self)
  def _match_1shape_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._match_1shape__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _match_1shape__3I(self,_0):
   if self._scalable:
    return (True)
   elif (int((self._shape).shape[0])!=int((_0).shape[0])): # bld/grindsted/final/default/src/fusion/domain.mbi:1289:17-39
    return (False)
   else:
    for _1 in range(0,int((self._shape).shape[0])):
     if (self._shape[_1]!=_0[_1]):
      return (False)
   return (True)
  def __finalize_1and_1validate_1inplace_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self.__finalize_1and_1validate_1inplace__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __finalize_1and_1validate_1inplace__3I(self,_0):
   self._domsize = 1
   if self._scalable:
    if (_0 is not None):
     self._shape = _0
    else:
     self._shape = numpy.zeros((0,), dtype=numpy.dtype(numpy.int32))
    for _1 in range(0,int((self._shape).shape[0])):
     self._domsize *= self._shape[_1]
   else:
    if (_0 is not None):
     if (int((_0).shape[0])!=int((self._shape).shape[0])):
      raise mosek_fusion_DimensionError._ctor_S("Conflicting shape definitions")
     for _2 in range(0,int((_0).shape[0])):
      if (_0[_2]!=self._shape[_2]):
       raise mosek_fusion_DimensionError._ctor_S("Conflicting shape definitions")
    for _3 in range(0,int((self._shape).shape[0])):
     self._domsize *= self._shape[_3]
   if (self._indexnames is not None):
    if (int((self._indexnames).shape[0])!=int((self._shape).shape[0])):
     raise mosek_fusion_DimensionError._ctor_S("Index names do not match shape")
    for _4 in range(0,int((self._shape).shape[0])):
     if ((self._indexnames[_4] is not None) and (int((self._indexnames[_4]).shape[0])!=self._shape[_4])):
      raise mosek_fusion_DimensionError._ctor_S("Index names do not match shape")
   if (self._sparsity is not None):
    self._nelements = int((self._sparsity).shape[0])
    if (int((self._shape).shape[0])!=int((self._sparsity).shape[1])):
     raise mosek_fusion_DimensionError._ctor_S("Mismatching shape and sparsity pattern")
    for _5 in range(0,self._nelements):
     for _6 in range(0,int((self._sparsity).shape[1])):
      if ((self._sparsity[_5,_6] < 0) or (self._sparsity[_5,_6] >= self._shape[_6])):
       raise mosek_fusion_DimensionError._ctor_S("Sparsity pattern entry is out of bounds")
    if ((not self._scalable) and ((self._lb is not None) and (int((self._lb).shape[0])!=self._nelements))):
     raise mosek_fusion_DimensionError._ctor_S("Sparsity pattern does not match bound")
    if ((not self._scalable) and ((self._ub is not None) and (int((self._ub).shape[0])!=self._nelements))):
     raise mosek_fusion_DimensionError._ctor_S("Sparsity pattern does not match bound")
   else:
    self._nelements = self._domsize
    if ((self._lb is not None) and (not self._scalable)):
     if (int((self._lb).shape[0])!=self._nelements):
      raise mosek_fusion_DimensionError._ctor_S("Domain bound does not match shape")
    if ((self._ub is not None) and (not self._scalable)):
     if (int((self._ub).shape[0])!=self._nelements):
      raise mosek_fusion_DimensionError._ctor_S("Domain bound does not match shape")
  def _finalize_1and_1validate_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._finalize_1and_1validate__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _finalize_1and_1validate__3I(self,_0):
   _1=mosek_fusion_RangeDomain._ctor_Lmosek_4fusion_4RangeDomain_2(self)
   _1.__finalize_1and_1validate_1inplace__3I(_0)
   return (_1)
 return RangeDomain
mosek_fusion_RangeDomain=__mk_mosek_fusion_RangeDomain()
del __mk_mosek_fusion_RangeDomain
def __mk_mosek_fusion_LinearDomain():
 class LinearDomain(object):
  __slots__ = ['_nelements','_domsize','_indexnames','_empty','_scalable','_sparsity','_cardinal_flag','_key','_bnd','_shape']
  def integral(self,*args):
    if False: pass
    elif mosek_fusion_LinearDomain._match_integral_(*args): 
      return self._integral_(*args)
    elif mosek_fusion_LinearDomain._match_alt_integral_(*args): 
      return self._integral_alt_(*args)
    else:
      raise ValueError('Invalid argument list integral('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinearDomain.integral()')
  def sparse(self,*args):
    if False: pass
    elif mosek_fusion_LinearDomain._match_sparse_(*args): 
      return self._sparse_(*args)
    elif mosek_fusion_LinearDomain._match_alt_sparse_(*args): 
      return self._sparse_alt_(*args)
    elif mosek_fusion_LinearDomain._match_sparse__3I(*args): 
      return self._sparse__3I(*args)
    elif mosek_fusion_LinearDomain._match_alt_sparse__3I(*args): 
      return self._sparse_alt__3I(*args)
    elif mosek_fusion_LinearDomain._match_sparse__3_5I(*args): 
      return self._sparse__3_5I(*args)
    elif mosek_fusion_LinearDomain._match_alt_sparse__3_5I(*args): 
      return self._sparse_alt__3_5I(*args)
    else:
      raise ValueError('Invalid argument list sparse('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinearDomain.sparse()\n\tmosek.fusion.LinearDomain.sparse(array(int32,ndim=1))\n\tmosek.fusion.LinearDomain.sparse(array(int32,ndim=2))')
  def withNamesOnAxis(self,*args):
    if False: pass
    elif mosek_fusion_LinearDomain._match_withNamesOnAxis__3SI(*args): 
      return self._withNamesOnAxis__3SI(*args)
    elif mosek_fusion_LinearDomain._match_alt_withNamesOnAxis__3SI(*args): 
      return self._withNamesOnAxis_alt__3SI(*args)
    else:
      raise ValueError('Invalid argument list withNamesOnAxis('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinearDomain.withNamesOnAxis(array(string,ndim=1),int32)')
  def withShape(self,*args):
    if False: pass
    elif mosek_fusion_LinearDomain._match_withShape__3I(*args): 
      return self._withShape__3I(*args)
    elif mosek_fusion_LinearDomain._match_alt_withShape__3I(*args): 
      return self._withShape_alt__3I(*args)
    elif mosek_fusion_LinearDomain._match_withShape_I(*args): 
      return self._withShape_I(*args)
    elif mosek_fusion_LinearDomain._match_alt_withShape_I(*args): 
      return self._withShape_alt_I(*args)
    elif mosek_fusion_LinearDomain._match_withShape_II(*args): 
      return self._withShape_II(*args)
    elif mosek_fusion_LinearDomain._match_alt_withShape_II(*args): 
      return self._withShape_alt_II(*args)
    elif mosek_fusion_LinearDomain._match_withShape_III(*args): 
      return self._withShape_III(*args)
    elif mosek_fusion_LinearDomain._match_alt_withShape_III(*args): 
      return self._withShape_alt_III(*args)
    else:
      raise ValueError('Invalid argument list withShape('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinearDomain.withShape(array(int32,ndim=1))\n\tmosek.fusion.LinearDomain.withShape(int32)\n\tmosek.fusion.LinearDomain.withShape(int32,int32)\n\tmosek.fusion.LinearDomain.withShape(int32,int32,int32)')
  def __repr__(self): return 'mosek.fusion.LinearDomain'
  @staticmethod
  def _ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(k,scalable,rhs,dims):
    o = LinearDomain.__new__(LinearDomain)
    o._ctor_init_Emosek_4fusion_4RelationKey_2Z_3D_3I(k,scalable,rhs,dims)
    return o
  @staticmethod
  def __match_ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(*args):
    if len(args) != 4: return False
    k,scalable,rhs,dims, = args
    return (__arg_match_Emosek_4fusion_4RelationKey_2__(k) and __arg_match_Z__(scalable) and __arg_match__3D__(rhs) and __arg_match__3I__(dims))
  @staticmethod
  def __match_alt_ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(*args):
    if len(args) != 4: return False
    k,scalable,rhs,dims, = args
    return (__arg_alt_match_Emosek_4fusion_4RelationKey_2__(k) and __arg_alt_match_Z__(scalable) and __arg_alt_match__3D__(rhs) and __arg_alt_match__3I__(dims))
  def _ctor_alt_init_Emosek_4fusion_4RelationKey_2Z_3D_3I(self,k,scalable,rhs,dims):
    self._ctor_init_Emosek_4fusion_4RelationKey_2Z_3D_3I(k,scalable,numpy.array(rhs,dtype=numpy.dtype(numpy.float64)),numpy.array(dims,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_Emosek_4fusion_4RelationKey_2Z_3D_3I(self,k,scalable,rhs,dims):
   mosek_fusion_LinearDomain._ctor_init_Emosek_4fusion_4RelationKey_2Z_3D_3I_3_5II(self,k,scalable,rhs,dims,None,1)
  @staticmethod
  def _ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I_3_5II(k,scalable,rhs,dims,sp,steal):
    o = LinearDomain.__new__(LinearDomain)
    o._ctor_init_Emosek_4fusion_4RelationKey_2Z_3D_3I_3_5II(k,scalable,rhs,dims,sp,steal)
    return o
  @staticmethod
  def __match_ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I_3_5II(*args):
    if len(args) != 6: return False
    k,scalable,rhs,dims,sp,steal, = args
    return (__arg_match_Emosek_4fusion_4RelationKey_2__(k) and __arg_match_Z__(scalable) and __arg_match__3D__(rhs) and __arg_match__3I__(dims) and __arg_match__3_5I__(sp) and __arg_match_I__(steal))
  @staticmethod
  def __match_alt_ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I_3_5II(*args):
    if len(args) != 6: return False
    k,scalable,rhs,dims,sp,steal, = args
    return (__arg_alt_match_Emosek_4fusion_4RelationKey_2__(k) and __arg_alt_match_Z__(scalable) and __arg_alt_match__3D__(rhs) and __arg_alt_match__3I__(dims) and __arg_alt_match__3_5I__(sp) and __arg_alt_match_I__(steal))
  def _ctor_alt_init_Emosek_4fusion_4RelationKey_2Z_3D_3I_3_5II(self,k,scalable,rhs,dims,sp,steal):
    self._ctor_init_Emosek_4fusion_4RelationKey_2Z_3D_3I_3_5II(k,scalable,numpy.array(rhs,dtype=numpy.dtype(numpy.float64)),numpy.array(dims,dtype=numpy.dtype(numpy.int32)),numpy.array(sp,dtype=numpy.dtype(numpy.int32)),numpy.int32(steal))
  def _ctor_init_Emosek_4fusion_4RelationKey_2Z_3D_3I_3_5II(self,k,scalable,rhs,dims,sp,steal):
   (self._scalable) = scalable
   (self._shape) = dims
   (self._key) = k
   (self._bnd) = rhs
   (self._sparsity) = sp
   (self._cardinal_flag) = False
   (self._empty) = False
   self._indexnames = None
   (self._domsize) = 0
   (self._nelements) = 0
  @staticmethod
  def _ctor_Lmosek_4fusion_4LinearDomain_2(other):
    o = LinearDomain.__new__(LinearDomain)
    o._ctor_init_Lmosek_4fusion_4LinearDomain_2(other)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 1: return False
    other, = args
    return (__arg_match_Lmosek_4fusion_4LinearDomain_2__(other))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 1: return False
    other, = args
    return (__arg_alt_match_Lmosek_4fusion_4LinearDomain_2__(other))
  def _ctor_alt_init_Lmosek_4fusion_4LinearDomain_2(self,other):
    self._ctor_init_Lmosek_4fusion_4LinearDomain_2(other)
  def _ctor_init_Lmosek_4fusion_4LinearDomain_2(self,other):
   self._scalable = (other._scalable)
   self._nelements = (other._nelements)
   self._domsize = (other._domsize)
   self._shape = (other._shape)
   self._key = (other._key)
   self._bnd = (other._bnd)
   self._sparsity = (other._sparsity)
   self._cardinal_flag = (other._cardinal_flag)
   self._empty = (other._empty)
   self._indexnames = (other._indexnames)
  @staticmethod
  def _match_sparse__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5I__(_0))
  @staticmethod
  def _match_alt_sparse__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5I__(_0))
  def _sparse_alt__3_5I(self,_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.int32))
   _1_res = self._sparse__3_5I(_0)
   return _1_res
  def _sparse__3_5I(self,_0):
   (self._sparsity) = numpy.zeros((int((_0).shape[0]),int((_0).shape[1]),), dtype=numpy.dtype(numpy.int32))
   (self._empty) = False
   _1=0
   while (_1 < int((_0).shape[0])):
    _2=0
    while (_2 < int((_0).shape[1])):
     (self._sparsity)[_1,_2] = _0[_1,_2]
     _2 += 1
    _1 += 1
   return (self)
  @staticmethod
  def _match_sparse__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_sparse__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _sparse_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._sparse__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _sparse__3I(self,_0):
   (self._sparsity) = numpy.zeros((int((_0).shape[0]),1,), dtype=numpy.dtype(numpy.int32))
   (self._empty) = False
   for _1 in range(0,int((_0).shape[0])):
    (self._sparsity)[_1,0] = _0[_1]
   return (self)
  @staticmethod
  def _match_sparse_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_sparse_(*args):
    if len(args) != 0: return False
    return True
  def _sparse_alt_(self,):
    return self._sparse_()
  def _sparse_(self,):
   (self._empty) = True
   (self._sparsity) = None
   return (self)
  @staticmethod
  def _match_integral_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_integral_(*args):
    if len(args) != 0: return False
    return True
  def _integral_alt_(self,):
    return self._integral_()
  def _integral_(self,):
   self._cardinal_flag = True
   return (self)
  @staticmethod
  def _match_withShape_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_withShape_III(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  def _withShape_alt_III(self,_t__0,_t__1,_t__2):
    return self._withShape_III(numpy.int32(__0),numpy.int32(__1),numpy.int32(__2))
  def _withShape_III(self,_0,_1,_2):
   self._shape = numpy.array([_0,_1,_2], dtype=numpy.dtype(numpy.int32))
   return (self)
  @staticmethod
  def _match_withShape_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_withShape_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _withShape_alt_II(self,_t__0,_t__1):
    return self._withShape_II(numpy.int32(__0),numpy.int32(__1))
  def _withShape_II(self,_0,_1):
   self._shape = numpy.array([_0,_1], dtype=numpy.dtype(numpy.int32))
   return (self)
  @staticmethod
  def _match_withShape_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_withShape_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _withShape_alt_I(self,_t__0):
    return self._withShape_I(numpy.int32(__0))
  def _withShape_I(self,_0):
   self._shape = numpy.array([_0], dtype=numpy.dtype(numpy.int32))
   return (self)
  @staticmethod
  def _match_withShape__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_withShape__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _withShape_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._withShape__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _withShape__3I(self,_0):
   self._shape = _0
   return (self)
  @staticmethod
  def _match_withNamesOnAxis__3SI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3S__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_withNamesOnAxis__3SI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3S__(_0) and __arg_alt_match_I__(_1))
  def _withNamesOnAxis_alt__3SI(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1=numpy.int32(_t__1)
   _1_res = self._withNamesOnAxis__3SI(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _withNamesOnAxis__3SI(self,_0,_1):
   if (self._indexnames is None):
    self._indexnames = _monty.initJaggedArray([None for _2 in range(0,(_1 + 1))], 1)
    self._indexnames[_1] = numpy.array([_0[_3] for _3 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(object))
   if (int((self._indexnames).shape[0]) < (_1 + 1)):
    _4=_monty.initJaggedArray([None for _5 in range(0,(_1 + 1))], 1)
    for _6 in range(0,int((self._indexnames).shape[0])):
     _4[_6] = self._indexnames[_6]
    self._indexnames = _4
   self._indexnames[_1] = numpy.array([_0[_7] for _7 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(object))
   return (self)
  def _match_1shape_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._match_1shape__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _match_1shape__3I(self,_0):
   if (not self._scalable):
    for _1 in range(0,int((_0).shape[0])):
     if (_0[_1]==self._shape[_1]):
      return (False)
   return (True)
  def __finalize_1and_1validate_1inplace_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self.__finalize_1and_1validate_1inplace__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __finalize_1and_1validate_1inplace__3I(self,_0):
   if self._scalable:
    if (self._shape is None):
     if ((self._sparsity is not None) and (_0 is None)):
      raise mosek_fusion_DimensionError._ctor_S("Sparse domain requires a fixed shape")
     if (_0 is not None):
      self._shape = _0
     else:
      self._shape = numpy.zeros((0,), dtype=numpy.dtype(numpy.int32))
   else:
    if (_0 is not None):
     if (int((_0).shape[0])!=int((self._shape).shape[0])):
      raise mosek_fusion_DimensionError._ctor_S("Conflicting shape definitions")
     for _1 in range(0,int((_0).shape[0])):
      if (_0[_1]!=self._shape[_1]):
       raise mosek_fusion_DimensionError._ctor_S("Conflicting shape definitions")
   if (self._indexnames is not None):
    if (int((self._indexnames).shape[0]) > int((self._shape).shape[0])):
     raise mosek_fusion_DimensionError._ctor_S("Index names do not match shape")
    for _2 in range(0,int((self._indexnames).shape[0])):
     if ((self._indexnames[_2] is not None) and (int((self._indexnames[_2]).shape[0])!=self._shape[_2])):
      raise mosek_fusion_DimensionError._ctor_S("Index names do not match shape")
    if (int((self._indexnames).shape[0]) < int((self._shape).shape[0])):
     _3=numpy.ndarray((int((self._shape).shape[0]),), dtype=numpy.dtype(object))
     for _4 in range(0,int((self._indexnames).shape[0])):
      _3[_4] = self._indexnames[_4]
     self._indexnames = _3
   self._domsize = 1
   for _5 in range(0,int((self._shape).shape[0])):
    self._domsize *= self._shape[_5]
   if (self._sparsity is not None):
    self._nelements = int((self._sparsity).shape[0])
    if (int((self._shape).shape[0])!=int((self._sparsity).shape[1])):
     raise mosek_fusion_DimensionError._ctor_S("Mismatching shape and sparsity pattern")
    for _6 in range(0,self._nelements):
     for _7 in range(0,int((self._sparsity).shape[1])):
      if ((self._sparsity[_6,_7] < 0) or (self._sparsity[_6,_7] >= self._shape[_7])):
       raise mosek_fusion_DimensionError._ctor_S("Sparsity pattern entry is out of bounds")
    if ((not self._scalable) and ((self._bnd is not None) and (int((self._bnd).shape[0])!=self._nelements))):
     raise mosek_fusion_DimensionError._ctor_S("Sparsity pattern does not match bound")
   else:
    self._nelements = self._domsize
    if ((self._bnd is not None) and (not self._scalable)):
     if (int((self._bnd).shape[0])!=self._nelements):
      raise mosek_fusion_DimensionError._ctor_S("Domain bound does not match shape")
  def _finalize_1and_1validate_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._finalize_1and_1validate__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _finalize_1and_1validate__3I(self,_0):
   _1=mosek_fusion_LinearDomain._ctor_Lmosek_4fusion_4LinearDomain_2(self)
   _1.__finalize_1and_1validate_1inplace__3I(_0)
   return (_1)
 return LinearDomain
mosek_fusion_LinearDomain=__mk_mosek_fusion_LinearDomain()
del __mk_mosek_fusion_LinearDomain
def __mk_mosek_fusion_Domain():
 class Domain(object):
  @staticmethod
  def inSVecPSDCone(*args):
    if False: pass
    elif mosek_fusion_Domain._match_inSVecPSDCone_(*args): 
      return mosek_fusion_Domain._inSVecPSDCone_(*args)
    elif mosek_fusion_Domain._match_alt_inSVecPSDCone_(*args): 
      return mosek_fusion_Domain._inSVecPSDCone_alt_(*args)
    elif mosek_fusion_Domain._match_inSVecPSDCone_I(*args): 
      return mosek_fusion_Domain._inSVecPSDCone_I(*args)
    elif mosek_fusion_Domain._match_alt_inSVecPSDCone_I(*args): 
      return mosek_fusion_Domain._inSVecPSDCone_alt_I(*args)
    elif mosek_fusion_Domain._match_inSVecPSDCone__3I(*args): 
      return mosek_fusion_Domain._inSVecPSDCone__3I(*args)
    elif mosek_fusion_Domain._match_alt_inSVecPSDCone__3I(*args): 
      return mosek_fusion_Domain._inSVecPSDCone_alt__3I(*args)
    elif mosek_fusion_Domain._match_inSVecPSDCone_II(*args): 
      return mosek_fusion_Domain._inSVecPSDCone_II(*args)
    elif mosek_fusion_Domain._match_alt_inSVecPSDCone_II(*args): 
      return mosek_fusion_Domain._inSVecPSDCone_alt_II(*args)
    else:
      raise ValueError('Invalid argument list inSVecPSDCone('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.inSVecPSDCone()\n\tmosek.fusion.Domain.inSVecPSDCone(int32)\n\tmosek.fusion.Domain.inSVecPSDCone(array(int32,ndim=1))\n\tmosek.fusion.Domain.inSVecPSDCone(int32,int32)')
  @staticmethod
  def inDGeoMeanCone(*args):
    if False: pass
    elif mosek_fusion_Domain._match_inDGeoMeanCone_(*args): 
      return mosek_fusion_Domain._inDGeoMeanCone_(*args)
    elif mosek_fusion_Domain._match_alt_inDGeoMeanCone_(*args): 
      return mosek_fusion_Domain._inDGeoMeanCone_alt_(*args)
    elif mosek_fusion_Domain._match_inDGeoMeanCone_I(*args): 
      return mosek_fusion_Domain._inDGeoMeanCone_I(*args)
    elif mosek_fusion_Domain._match_alt_inDGeoMeanCone_I(*args): 
      return mosek_fusion_Domain._inDGeoMeanCone_alt_I(*args)
    elif mosek_fusion_Domain._match_inDGeoMeanCone__3I(*args): 
      return mosek_fusion_Domain._inDGeoMeanCone__3I(*args)
    elif mosek_fusion_Domain._match_alt_inDGeoMeanCone__3I(*args): 
      return mosek_fusion_Domain._inDGeoMeanCone_alt__3I(*args)
    elif mosek_fusion_Domain._match_inDGeoMeanCone_II(*args): 
      return mosek_fusion_Domain._inDGeoMeanCone_II(*args)
    elif mosek_fusion_Domain._match_alt_inDGeoMeanCone_II(*args): 
      return mosek_fusion_Domain._inDGeoMeanCone_alt_II(*args)
    else:
      raise ValueError('Invalid argument list inDGeoMeanCone('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.inDGeoMeanCone()\n\tmosek.fusion.Domain.inDGeoMeanCone(int32)\n\tmosek.fusion.Domain.inDGeoMeanCone(array(int32,ndim=1))\n\tmosek.fusion.Domain.inDGeoMeanCone(int32,int32)')
  @staticmethod
  def lessThan(*args):
    if False: pass
    elif mosek_fusion_Domain._match_lessThan__3D(*args): 
      return mosek_fusion_Domain._lessThan__3D(*args)
    elif mosek_fusion_Domain._match_alt_lessThan__3D(*args): 
      return mosek_fusion_Domain._lessThan_alt__3D(*args)
    elif mosek_fusion_Domain._match_lessThan_Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Domain._lessThan_Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Domain._match_alt_lessThan_Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Domain._lessThan_alt_Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Domain._match_lessThan__3_5D(*args): 
      return mosek_fusion_Domain._lessThan__3_5D(*args)
    elif mosek_fusion_Domain._match_alt_lessThan__3_5D(*args): 
      return mosek_fusion_Domain._lessThan_alt__3_5D(*args)
    elif mosek_fusion_Domain._match_lessThan_D(*args): 
      return mosek_fusion_Domain._lessThan_D(*args)
    elif mosek_fusion_Domain._match_alt_lessThan_D(*args): 
      return mosek_fusion_Domain._lessThan_alt_D(*args)
    elif mosek_fusion_Domain._match_lessThan_D_3I(*args): 
      return mosek_fusion_Domain._lessThan_D_3I(*args)
    elif mosek_fusion_Domain._match_alt_lessThan_D_3I(*args): 
      return mosek_fusion_Domain._lessThan_alt_D_3I(*args)
    elif mosek_fusion_Domain._match_lessThan__3D_3I(*args): 
      return mosek_fusion_Domain._lessThan__3D_3I(*args)
    elif mosek_fusion_Domain._match_alt_lessThan__3D_3I(*args): 
      return mosek_fusion_Domain._lessThan_alt__3D_3I(*args)
    elif mosek_fusion_Domain._match_lessThan_DI(*args): 
      return mosek_fusion_Domain._lessThan_DI(*args)
    elif mosek_fusion_Domain._match_alt_lessThan_DI(*args): 
      return mosek_fusion_Domain._lessThan_alt_DI(*args)
    elif mosek_fusion_Domain._match_lessThan_DII(*args): 
      return mosek_fusion_Domain._lessThan_DII(*args)
    elif mosek_fusion_Domain._match_alt_lessThan_DII(*args): 
      return mosek_fusion_Domain._lessThan_alt_DII(*args)
    else:
      raise ValueError('Invalid argument list lessThan('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.lessThan(array(double,ndim=1))\n\tmosek.fusion.Domain.lessThan(mosek.fusion.Matrix)\n\tmosek.fusion.Domain.lessThan(array(double,ndim=2))\n\tmosek.fusion.Domain.lessThan(double)\n\tmosek.fusion.Domain.lessThan(double,array(int32,ndim=1))\n\tmosek.fusion.Domain.lessThan(array(double,ndim=1),array(int32,ndim=1))\n\tmosek.fusion.Domain.lessThan(double,int32)\n\tmosek.fusion.Domain.lessThan(double,int32,int32)')
  @staticmethod
  def integral(*args):
    if False: pass
    elif mosek_fusion_Domain._match_integral_Lmosek_4fusion_4ConeDomain_2(*args): 
      return mosek_fusion_Domain._integral_Lmosek_4fusion_4ConeDomain_2(*args)
    elif mosek_fusion_Domain._match_alt_integral_Lmosek_4fusion_4ConeDomain_2(*args): 
      return mosek_fusion_Domain._integral_alt_Lmosek_4fusion_4ConeDomain_2(*args)
    elif mosek_fusion_Domain._match_integral_Lmosek_4fusion_4LinearDomain_2(*args): 
      return mosek_fusion_Domain._integral_Lmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Domain._match_alt_integral_Lmosek_4fusion_4LinearDomain_2(*args): 
      return mosek_fusion_Domain._integral_alt_Lmosek_4fusion_4LinearDomain_2(*args)
    elif mosek_fusion_Domain._match_integral_Lmosek_4fusion_4RangeDomain_2(*args): 
      return mosek_fusion_Domain._integral_Lmosek_4fusion_4RangeDomain_2(*args)
    elif mosek_fusion_Domain._match_alt_integral_Lmosek_4fusion_4RangeDomain_2(*args): 
      return mosek_fusion_Domain._integral_alt_Lmosek_4fusion_4RangeDomain_2(*args)
    else:
      raise ValueError('Invalid argument list integral('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.integral(mosek.fusion.ConeDomain)\n\tmosek.fusion.Domain.integral(mosek.fusion.LinearDomain)\n\tmosek.fusion.Domain.integral(mosek.fusion.RangeDomain)')
  @staticmethod
  def greaterThan(*args):
    if False: pass
    elif mosek_fusion_Domain._match_greaterThan__3D(*args): 
      return mosek_fusion_Domain._greaterThan__3D(*args)
    elif mosek_fusion_Domain._match_alt_greaterThan__3D(*args): 
      return mosek_fusion_Domain._greaterThan_alt__3D(*args)
    elif mosek_fusion_Domain._match_greaterThan_Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Domain._greaterThan_Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Domain._match_alt_greaterThan_Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Domain._greaterThan_alt_Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Domain._match_greaterThan__3_5D(*args): 
      return mosek_fusion_Domain._greaterThan__3_5D(*args)
    elif mosek_fusion_Domain._match_alt_greaterThan__3_5D(*args): 
      return mosek_fusion_Domain._greaterThan_alt__3_5D(*args)
    elif mosek_fusion_Domain._match_greaterThan_D(*args): 
      return mosek_fusion_Domain._greaterThan_D(*args)
    elif mosek_fusion_Domain._match_alt_greaterThan_D(*args): 
      return mosek_fusion_Domain._greaterThan_alt_D(*args)
    elif mosek_fusion_Domain._match_greaterThan_D_3I(*args): 
      return mosek_fusion_Domain._greaterThan_D_3I(*args)
    elif mosek_fusion_Domain._match_alt_greaterThan_D_3I(*args): 
      return mosek_fusion_Domain._greaterThan_alt_D_3I(*args)
    elif mosek_fusion_Domain._match_greaterThan__3D_3I(*args): 
      return mosek_fusion_Domain._greaterThan__3D_3I(*args)
    elif mosek_fusion_Domain._match_alt_greaterThan__3D_3I(*args): 
      return mosek_fusion_Domain._greaterThan_alt__3D_3I(*args)
    elif mosek_fusion_Domain._match_greaterThan_DI(*args): 
      return mosek_fusion_Domain._greaterThan_DI(*args)
    elif mosek_fusion_Domain._match_alt_greaterThan_DI(*args): 
      return mosek_fusion_Domain._greaterThan_alt_DI(*args)
    elif mosek_fusion_Domain._match_greaterThan_DII(*args): 
      return mosek_fusion_Domain._greaterThan_DII(*args)
    elif mosek_fusion_Domain._match_alt_greaterThan_DII(*args): 
      return mosek_fusion_Domain._greaterThan_alt_DII(*args)
    else:
      raise ValueError('Invalid argument list greaterThan('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.greaterThan(array(double,ndim=1))\n\tmosek.fusion.Domain.greaterThan(mosek.fusion.Matrix)\n\tmosek.fusion.Domain.greaterThan(array(double,ndim=2))\n\tmosek.fusion.Domain.greaterThan(double)\n\tmosek.fusion.Domain.greaterThan(double,array(int32,ndim=1))\n\tmosek.fusion.Domain.greaterThan(array(double,ndim=1),array(int32,ndim=1))\n\tmosek.fusion.Domain.greaterThan(double,int32)\n\tmosek.fusion.Domain.greaterThan(double,int32,int32)')
  @staticmethod
  def equalsTo(*args):
    if False: pass
    elif mosek_fusion_Domain._match_equalsTo__3D(*args): 
      return mosek_fusion_Domain._equalsTo__3D(*args)
    elif mosek_fusion_Domain._match_alt_equalsTo__3D(*args): 
      return mosek_fusion_Domain._equalsTo_alt__3D(*args)
    elif mosek_fusion_Domain._match_equalsTo_Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Domain._equalsTo_Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Domain._match_alt_equalsTo_Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Domain._equalsTo_alt_Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Domain._match_equalsTo__3_5D(*args): 
      return mosek_fusion_Domain._equalsTo__3_5D(*args)
    elif mosek_fusion_Domain._match_alt_equalsTo__3_5D(*args): 
      return mosek_fusion_Domain._equalsTo_alt__3_5D(*args)
    elif mosek_fusion_Domain._match_equalsTo_D(*args): 
      return mosek_fusion_Domain._equalsTo_D(*args)
    elif mosek_fusion_Domain._match_alt_equalsTo_D(*args): 
      return mosek_fusion_Domain._equalsTo_alt_D(*args)
    elif mosek_fusion_Domain._match_equalsTo_D_3I(*args): 
      return mosek_fusion_Domain._equalsTo_D_3I(*args)
    elif mosek_fusion_Domain._match_alt_equalsTo_D_3I(*args): 
      return mosek_fusion_Domain._equalsTo_alt_D_3I(*args)
    elif mosek_fusion_Domain._match_equalsTo__3D_3I(*args): 
      return mosek_fusion_Domain._equalsTo__3D_3I(*args)
    elif mosek_fusion_Domain._match_alt_equalsTo__3D_3I(*args): 
      return mosek_fusion_Domain._equalsTo_alt__3D_3I(*args)
    elif mosek_fusion_Domain._match_equalsTo_DI(*args): 
      return mosek_fusion_Domain._equalsTo_DI(*args)
    elif mosek_fusion_Domain._match_alt_equalsTo_DI(*args): 
      return mosek_fusion_Domain._equalsTo_alt_DI(*args)
    elif mosek_fusion_Domain._match_equalsTo_DII(*args): 
      return mosek_fusion_Domain._equalsTo_DII(*args)
    elif mosek_fusion_Domain._match_alt_equalsTo_DII(*args): 
      return mosek_fusion_Domain._equalsTo_alt_DII(*args)
    else:
      raise ValueError('Invalid argument list equalsTo('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.equalsTo(array(double,ndim=1))\n\tmosek.fusion.Domain.equalsTo(mosek.fusion.Matrix)\n\tmosek.fusion.Domain.equalsTo(array(double,ndim=2))\n\tmosek.fusion.Domain.equalsTo(double)\n\tmosek.fusion.Domain.equalsTo(double,array(int32,ndim=1))\n\tmosek.fusion.Domain.equalsTo(array(double,ndim=1),array(int32,ndim=1))\n\tmosek.fusion.Domain.equalsTo(double,int32)\n\tmosek.fusion.Domain.equalsTo(double,int32,int32)')
  @staticmethod
  def inRange(*args):
    if False: pass
    elif mosek_fusion_Domain._match_inRange__3D_3D(*args): 
      return mosek_fusion_Domain._inRange__3D_3D(*args)
    elif mosek_fusion_Domain._match_alt_inRange__3D_3D(*args): 
      return mosek_fusion_Domain._inRange_alt__3D_3D(*args)
    elif mosek_fusion_Domain._match_inRange__3DD(*args): 
      return mosek_fusion_Domain._inRange__3DD(*args)
    elif mosek_fusion_Domain._match_alt_inRange__3DD(*args): 
      return mosek_fusion_Domain._inRange_alt__3DD(*args)
    elif mosek_fusion_Domain._match_inRange_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Domain._inRange_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Domain._match_alt_inRange_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Domain._inRange_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Domain._match_inRange_D_3D(*args): 
      return mosek_fusion_Domain._inRange_D_3D(*args)
    elif mosek_fusion_Domain._match_alt_inRange_D_3D(*args): 
      return mosek_fusion_Domain._inRange_alt_D_3D(*args)
    elif mosek_fusion_Domain._match_inRange__3_5D_3_5D(*args): 
      return mosek_fusion_Domain._inRange__3_5D_3_5D(*args)
    elif mosek_fusion_Domain._match_alt_inRange__3_5D_3_5D(*args): 
      return mosek_fusion_Domain._inRange_alt__3_5D_3_5D(*args)
    elif mosek_fusion_Domain._match_inRange_DD(*args): 
      return mosek_fusion_Domain._inRange_DD(*args)
    elif mosek_fusion_Domain._match_alt_inRange_DD(*args): 
      return mosek_fusion_Domain._inRange_alt_DD(*args)
    elif mosek_fusion_Domain._match_inRange_D_3D_3I(*args): 
      return mosek_fusion_Domain._inRange_D_3D_3I(*args)
    elif mosek_fusion_Domain._match_alt_inRange_D_3D_3I(*args): 
      return mosek_fusion_Domain._inRange_alt_D_3D_3I(*args)
    elif mosek_fusion_Domain._match_inRange__3DD_3I(*args): 
      return mosek_fusion_Domain._inRange__3DD_3I(*args)
    elif mosek_fusion_Domain._match_alt_inRange__3DD_3I(*args): 
      return mosek_fusion_Domain._inRange_alt__3DD_3I(*args)
    elif mosek_fusion_Domain._match_inRange__3D_3D_3I(*args): 
      return mosek_fusion_Domain._inRange__3D_3D_3I(*args)
    elif mosek_fusion_Domain._match_alt_inRange__3D_3D_3I(*args): 
      return mosek_fusion_Domain._inRange_alt__3D_3D_3I(*args)
    elif mosek_fusion_Domain._match_inRange_DD_3I(*args): 
      return mosek_fusion_Domain._inRange_DD_3I(*args)
    elif mosek_fusion_Domain._match_alt_inRange_DD_3I(*args): 
      return mosek_fusion_Domain._inRange_alt_DD_3I(*args)
    else:
      raise ValueError('Invalid argument list inRange('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.inRange(array(double,ndim=1),array(double,ndim=1))\n\tmosek.fusion.Domain.inRange(array(double,ndim=1),double)\n\tmosek.fusion.Domain.inRange(mosek.fusion.Matrix,mosek.fusion.Matrix)\n\tmosek.fusion.Domain.inRange(double,array(double,ndim=1))\n\tmosek.fusion.Domain.inRange(array(double,ndim=2),array(double,ndim=2))\n\tmosek.fusion.Domain.inRange(double,double)\n\tmosek.fusion.Domain.inRange(double,array(double,ndim=1),array(int32,ndim=1))\n\tmosek.fusion.Domain.inRange(array(double,ndim=1),double,array(int32,ndim=1))\n\tmosek.fusion.Domain.inRange(array(double,ndim=1),array(double,ndim=1),array(int32,ndim=1))\n\tmosek.fusion.Domain.inRange(double,double,array(int32,ndim=1))')
  @staticmethod
  def inDPowerCone(*args):
    if False: pass
    elif mosek_fusion_Domain._match_inDPowerCone__3D(*args): 
      return mosek_fusion_Domain._inDPowerCone__3D(*args)
    elif mosek_fusion_Domain._match_alt_inDPowerCone__3D(*args): 
      return mosek_fusion_Domain._inDPowerCone_alt__3D(*args)
    elif mosek_fusion_Domain._match_inDPowerCone_D(*args): 
      return mosek_fusion_Domain._inDPowerCone_D(*args)
    elif mosek_fusion_Domain._match_alt_inDPowerCone_D(*args): 
      return mosek_fusion_Domain._inDPowerCone_alt_D(*args)
    elif mosek_fusion_Domain._match_inDPowerCone_D_3I(*args): 
      return mosek_fusion_Domain._inDPowerCone_D_3I(*args)
    elif mosek_fusion_Domain._match_alt_inDPowerCone_D_3I(*args): 
      return mosek_fusion_Domain._inDPowerCone_alt_D_3I(*args)
    elif mosek_fusion_Domain._match_inDPowerCone__3DI(*args): 
      return mosek_fusion_Domain._inDPowerCone__3DI(*args)
    elif mosek_fusion_Domain._match_alt_inDPowerCone__3DI(*args): 
      return mosek_fusion_Domain._inDPowerCone_alt__3DI(*args)
    elif mosek_fusion_Domain._match_inDPowerCone_DI(*args): 
      return mosek_fusion_Domain._inDPowerCone_DI(*args)
    elif mosek_fusion_Domain._match_alt_inDPowerCone_DI(*args): 
      return mosek_fusion_Domain._inDPowerCone_alt_DI(*args)
    elif mosek_fusion_Domain._match_inDPowerCone__3D_3I(*args): 
      return mosek_fusion_Domain._inDPowerCone__3D_3I(*args)
    elif mosek_fusion_Domain._match_alt_inDPowerCone__3D_3I(*args): 
      return mosek_fusion_Domain._inDPowerCone_alt__3D_3I(*args)
    else:
      raise ValueError('Invalid argument list inDPowerCone('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.inDPowerCone(array(double,ndim=1))\n\tmosek.fusion.Domain.inDPowerCone(double)\n\tmosek.fusion.Domain.inDPowerCone(double,array(int32,ndim=1))\n\tmosek.fusion.Domain.inDPowerCone(array(double,ndim=1),int32)\n\tmosek.fusion.Domain.inDPowerCone(double,int32)\n\tmosek.fusion.Domain.inDPowerCone(array(double,ndim=1),array(int32,ndim=1))')
  @staticmethod
  def inPExpCone(*args):
    if False: pass
    elif mosek_fusion_Domain._match_inPExpCone_(*args): 
      return mosek_fusion_Domain._inPExpCone_(*args)
    elif mosek_fusion_Domain._match_alt_inPExpCone_(*args): 
      return mosek_fusion_Domain._inPExpCone_alt_(*args)
    elif mosek_fusion_Domain._match_inPExpCone_I(*args): 
      return mosek_fusion_Domain._inPExpCone_I(*args)
    elif mosek_fusion_Domain._match_alt_inPExpCone_I(*args): 
      return mosek_fusion_Domain._inPExpCone_alt_I(*args)
    elif mosek_fusion_Domain._match_inPExpCone__3I(*args): 
      return mosek_fusion_Domain._inPExpCone__3I(*args)
    elif mosek_fusion_Domain._match_alt_inPExpCone__3I(*args): 
      return mosek_fusion_Domain._inPExpCone_alt__3I(*args)
    else:
      raise ValueError('Invalid argument list inPExpCone('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.inPExpCone()\n\tmosek.fusion.Domain.inPExpCone(int32)\n\tmosek.fusion.Domain.inPExpCone(array(int32,ndim=1))')
  @staticmethod
  def inRotatedQCone(*args):
    if False: pass
    elif mosek_fusion_Domain._match_inRotatedQCone_(*args): 
      return mosek_fusion_Domain._inRotatedQCone_(*args)
    elif mosek_fusion_Domain._match_alt_inRotatedQCone_(*args): 
      return mosek_fusion_Domain._inRotatedQCone_alt_(*args)
    elif mosek_fusion_Domain._match_inRotatedQCone_I(*args): 
      return mosek_fusion_Domain._inRotatedQCone_I(*args)
    elif mosek_fusion_Domain._match_alt_inRotatedQCone_I(*args): 
      return mosek_fusion_Domain._inRotatedQCone_alt_I(*args)
    elif mosek_fusion_Domain._match_inRotatedQCone__3I(*args): 
      return mosek_fusion_Domain._inRotatedQCone__3I(*args)
    elif mosek_fusion_Domain._match_alt_inRotatedQCone__3I(*args): 
      return mosek_fusion_Domain._inRotatedQCone_alt__3I(*args)
    elif mosek_fusion_Domain._match_inRotatedQCone_II(*args): 
      return mosek_fusion_Domain._inRotatedQCone_II(*args)
    elif mosek_fusion_Domain._match_alt_inRotatedQCone_II(*args): 
      return mosek_fusion_Domain._inRotatedQCone_alt_II(*args)
    else:
      raise ValueError('Invalid argument list inRotatedQCone('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.inRotatedQCone()\n\tmosek.fusion.Domain.inRotatedQCone(int32)\n\tmosek.fusion.Domain.inRotatedQCone(array(int32,ndim=1))\n\tmosek.fusion.Domain.inRotatedQCone(int32,int32)')
  @staticmethod
  def binary(*args):
    if False: pass
    elif mosek_fusion_Domain._match_binary_(*args): 
      return mosek_fusion_Domain._binary_(*args)
    elif mosek_fusion_Domain._match_alt_binary_(*args): 
      return mosek_fusion_Domain._binary_alt_(*args)
    elif mosek_fusion_Domain._match_binary__3I(*args): 
      return mosek_fusion_Domain._binary__3I(*args)
    elif mosek_fusion_Domain._match_alt_binary__3I(*args): 
      return mosek_fusion_Domain._binary_alt__3I(*args)
    elif mosek_fusion_Domain._match_binary_I(*args): 
      return mosek_fusion_Domain._binary_I(*args)
    elif mosek_fusion_Domain._match_alt_binary_I(*args): 
      return mosek_fusion_Domain._binary_alt_I(*args)
    elif mosek_fusion_Domain._match_binary_II(*args): 
      return mosek_fusion_Domain._binary_II(*args)
    elif mosek_fusion_Domain._match_alt_binary_II(*args): 
      return mosek_fusion_Domain._binary_alt_II(*args)
    else:
      raise ValueError('Invalid argument list binary('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.binary()\n\tmosek.fusion.Domain.binary(array(int32,ndim=1))\n\tmosek.fusion.Domain.binary(int32)\n\tmosek.fusion.Domain.binary(int32,int32)')
  @staticmethod
  def sparse(*args):
    if False: pass
    elif mosek_fusion_Domain._match_sparse_Lmosek_4fusion_4LinearDomain_2_3I(*args): 
      return mosek_fusion_Domain._sparse_Lmosek_4fusion_4LinearDomain_2_3I(*args)
    elif mosek_fusion_Domain._match_alt_sparse_Lmosek_4fusion_4LinearDomain_2_3I(*args): 
      return mosek_fusion_Domain._sparse_alt_Lmosek_4fusion_4LinearDomain_2_3I(*args)
    elif mosek_fusion_Domain._match_sparse_Lmosek_4fusion_4LinearDomain_2_3_5I(*args): 
      return mosek_fusion_Domain._sparse_Lmosek_4fusion_4LinearDomain_2_3_5I(*args)
    elif mosek_fusion_Domain._match_alt_sparse_Lmosek_4fusion_4LinearDomain_2_3_5I(*args): 
      return mosek_fusion_Domain._sparse_alt_Lmosek_4fusion_4LinearDomain_2_3_5I(*args)
    elif mosek_fusion_Domain._match_sparse_Lmosek_4fusion_4RangeDomain_2_3I(*args): 
      return mosek_fusion_Domain._sparse_Lmosek_4fusion_4RangeDomain_2_3I(*args)
    elif mosek_fusion_Domain._match_alt_sparse_Lmosek_4fusion_4RangeDomain_2_3I(*args): 
      return mosek_fusion_Domain._sparse_alt_Lmosek_4fusion_4RangeDomain_2_3I(*args)
    elif mosek_fusion_Domain._match_sparse_Lmosek_4fusion_4RangeDomain_2_3_5I(*args): 
      return mosek_fusion_Domain._sparse_Lmosek_4fusion_4RangeDomain_2_3_5I(*args)
    elif mosek_fusion_Domain._match_alt_sparse_Lmosek_4fusion_4RangeDomain_2_3_5I(*args): 
      return mosek_fusion_Domain._sparse_alt_Lmosek_4fusion_4RangeDomain_2_3_5I(*args)
    else:
      raise ValueError('Invalid argument list sparse('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.sparse(mosek.fusion.LinearDomain,array(int32,ndim=1))\n\tmosek.fusion.Domain.sparse(mosek.fusion.LinearDomain,array(int32,ndim=2))\n\tmosek.fusion.Domain.sparse(mosek.fusion.RangeDomain,array(int32,ndim=1))\n\tmosek.fusion.Domain.sparse(mosek.fusion.RangeDomain,array(int32,ndim=2))')
  @staticmethod
  def unbounded(*args):
    if False: pass
    elif mosek_fusion_Domain._match_unbounded_(*args): 
      return mosek_fusion_Domain._unbounded_(*args)
    elif mosek_fusion_Domain._match_alt_unbounded_(*args): 
      return mosek_fusion_Domain._unbounded_alt_(*args)
    elif mosek_fusion_Domain._match_unbounded_I(*args): 
      return mosek_fusion_Domain._unbounded_I(*args)
    elif mosek_fusion_Domain._match_alt_unbounded_I(*args): 
      return mosek_fusion_Domain._unbounded_alt_I(*args)
    elif mosek_fusion_Domain._match_unbounded__3I(*args): 
      return mosek_fusion_Domain._unbounded__3I(*args)
    elif mosek_fusion_Domain._match_alt_unbounded__3I(*args): 
      return mosek_fusion_Domain._unbounded_alt__3I(*args)
    elif mosek_fusion_Domain._match_unbounded_II(*args): 
      return mosek_fusion_Domain._unbounded_II(*args)
    elif mosek_fusion_Domain._match_alt_unbounded_II(*args): 
      return mosek_fusion_Domain._unbounded_alt_II(*args)
    else:
      raise ValueError('Invalid argument list unbounded('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.unbounded()\n\tmosek.fusion.Domain.unbounded(int32)\n\tmosek.fusion.Domain.unbounded(array(int32,ndim=1))\n\tmosek.fusion.Domain.unbounded(int32,int32)')
  @staticmethod
  def inDExpCone(*args):
    if False: pass
    elif mosek_fusion_Domain._match_inDExpCone_(*args): 
      return mosek_fusion_Domain._inDExpCone_(*args)
    elif mosek_fusion_Domain._match_alt_inDExpCone_(*args): 
      return mosek_fusion_Domain._inDExpCone_alt_(*args)
    elif mosek_fusion_Domain._match_inDExpCone_I(*args): 
      return mosek_fusion_Domain._inDExpCone_I(*args)
    elif mosek_fusion_Domain._match_alt_inDExpCone_I(*args): 
      return mosek_fusion_Domain._inDExpCone_alt_I(*args)
    elif mosek_fusion_Domain._match_inDExpCone__3I(*args): 
      return mosek_fusion_Domain._inDExpCone__3I(*args)
    elif mosek_fusion_Domain._match_alt_inDExpCone__3I(*args): 
      return mosek_fusion_Domain._inDExpCone_alt__3I(*args)
    else:
      raise ValueError('Invalid argument list inDExpCone('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.inDExpCone()\n\tmosek.fusion.Domain.inDExpCone(int32)\n\tmosek.fusion.Domain.inDExpCone(array(int32,ndim=1))')
  @staticmethod
  def isTrilPSD(*args):
    if False: pass
    elif mosek_fusion_Domain._match_isTrilPSD_(*args): 
      return mosek_fusion_Domain._isTrilPSD_(*args)
    elif mosek_fusion_Domain._match_alt_isTrilPSD_(*args): 
      return mosek_fusion_Domain._isTrilPSD_alt_(*args)
    elif mosek_fusion_Domain._match_isTrilPSD_I(*args): 
      return mosek_fusion_Domain._isTrilPSD_I(*args)
    elif mosek_fusion_Domain._match_alt_isTrilPSD_I(*args): 
      return mosek_fusion_Domain._isTrilPSD_alt_I(*args)
    elif mosek_fusion_Domain._match_isTrilPSD_II(*args): 
      return mosek_fusion_Domain._isTrilPSD_II(*args)
    elif mosek_fusion_Domain._match_alt_isTrilPSD_II(*args): 
      return mosek_fusion_Domain._isTrilPSD_alt_II(*args)
    else:
      raise ValueError('Invalid argument list isTrilPSD('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.isTrilPSD()\n\tmosek.fusion.Domain.isTrilPSD(int32)\n\tmosek.fusion.Domain.isTrilPSD(int32,int32)')
  @staticmethod
  def inPSDCone(*args):
    if False: pass
    elif mosek_fusion_Domain._match_inPSDCone_(*args): 
      return mosek_fusion_Domain._inPSDCone_(*args)
    elif mosek_fusion_Domain._match_alt_inPSDCone_(*args): 
      return mosek_fusion_Domain._inPSDCone_alt_(*args)
    elif mosek_fusion_Domain._match_inPSDCone_I(*args): 
      return mosek_fusion_Domain._inPSDCone_I(*args)
    elif mosek_fusion_Domain._match_alt_inPSDCone_I(*args): 
      return mosek_fusion_Domain._inPSDCone_alt_I(*args)
    elif mosek_fusion_Domain._match_inPSDCone_II(*args): 
      return mosek_fusion_Domain._inPSDCone_II(*args)
    elif mosek_fusion_Domain._match_alt_inPSDCone_II(*args): 
      return mosek_fusion_Domain._inPSDCone_alt_II(*args)
    else:
      raise ValueError('Invalid argument list inPSDCone('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.inPSDCone()\n\tmosek.fusion.Domain.inPSDCone(int32)\n\tmosek.fusion.Domain.inPSDCone(int32,int32)')
  @staticmethod
  def inPPowerCone(*args):
    if False: pass
    elif mosek_fusion_Domain._match_inPPowerCone__3D(*args): 
      return mosek_fusion_Domain._inPPowerCone__3D(*args)
    elif mosek_fusion_Domain._match_alt_inPPowerCone__3D(*args): 
      return mosek_fusion_Domain._inPPowerCone_alt__3D(*args)
    elif mosek_fusion_Domain._match_inPPowerCone_D(*args): 
      return mosek_fusion_Domain._inPPowerCone_D(*args)
    elif mosek_fusion_Domain._match_alt_inPPowerCone_D(*args): 
      return mosek_fusion_Domain._inPPowerCone_alt_D(*args)
    elif mosek_fusion_Domain._match_inPPowerCone_D_3I(*args): 
      return mosek_fusion_Domain._inPPowerCone_D_3I(*args)
    elif mosek_fusion_Domain._match_alt_inPPowerCone_D_3I(*args): 
      return mosek_fusion_Domain._inPPowerCone_alt_D_3I(*args)
    elif mosek_fusion_Domain._match_inPPowerCone__3DI(*args): 
      return mosek_fusion_Domain._inPPowerCone__3DI(*args)
    elif mosek_fusion_Domain._match_alt_inPPowerCone__3DI(*args): 
      return mosek_fusion_Domain._inPPowerCone_alt__3DI(*args)
    elif mosek_fusion_Domain._match_inPPowerCone_DI(*args): 
      return mosek_fusion_Domain._inPPowerCone_DI(*args)
    elif mosek_fusion_Domain._match_alt_inPPowerCone_DI(*args): 
      return mosek_fusion_Domain._inPPowerCone_alt_DI(*args)
    elif mosek_fusion_Domain._match_inPPowerCone__3D_3I(*args): 
      return mosek_fusion_Domain._inPPowerCone__3D_3I(*args)
    elif mosek_fusion_Domain._match_alt_inPPowerCone__3D_3I(*args): 
      return mosek_fusion_Domain._inPPowerCone_alt__3D_3I(*args)
    else:
      raise ValueError('Invalid argument list inPPowerCone('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.inPPowerCone(array(double,ndim=1))\n\tmosek.fusion.Domain.inPPowerCone(double)\n\tmosek.fusion.Domain.inPPowerCone(double,array(int32,ndim=1))\n\tmosek.fusion.Domain.inPPowerCone(array(double,ndim=1),int32)\n\tmosek.fusion.Domain.inPPowerCone(double,int32)\n\tmosek.fusion.Domain.inPPowerCone(array(double,ndim=1),array(int32,ndim=1))')
  @staticmethod
  def inPPowerConeSeq(*args):
    if False: pass
    elif mosek_fusion_Domain._match_inPPowerConeSeq__3D(*args): 
      return mosek_fusion_Domain._inPPowerConeSeq__3D(*args)
    elif mosek_fusion_Domain._match_alt_inPPowerConeSeq__3D(*args): 
      return mosek_fusion_Domain._inPPowerConeSeq_alt__3D(*args)
    elif mosek_fusion_Domain._match_inPPowerConeSeq__3_5D(*args): 
      return mosek_fusion_Domain._inPPowerConeSeq__3_5D(*args)
    elif mosek_fusion_Domain._match_alt_inPPowerConeSeq__3_5D(*args): 
      return mosek_fusion_Domain._inPPowerConeSeq_alt__3_5D(*args)
    else:
      raise ValueError('Invalid argument list inPPowerConeSeq('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.inPPowerConeSeq(array(double,ndim=1))\n\tmosek.fusion.Domain.inPPowerConeSeq(array(double,ndim=2))')
  @staticmethod
  def axis(*args):
    if False: pass
    elif mosek_fusion_Domain._match_axis_Lmosek_4fusion_4ConeDomain_2I(*args): 
      return mosek_fusion_Domain._axis_Lmosek_4fusion_4ConeDomain_2I(*args)
    elif mosek_fusion_Domain._match_alt_axis_Lmosek_4fusion_4ConeDomain_2I(*args): 
      return mosek_fusion_Domain._axis_alt_Lmosek_4fusion_4ConeDomain_2I(*args)
    else:
      raise ValueError('Invalid argument list axis('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.axis(mosek.fusion.ConeDomain,int32)')
  @staticmethod
  def inPGeoMeanCone(*args):
    if False: pass
    elif mosek_fusion_Domain._match_inPGeoMeanCone_(*args): 
      return mosek_fusion_Domain._inPGeoMeanCone_(*args)
    elif mosek_fusion_Domain._match_alt_inPGeoMeanCone_(*args): 
      return mosek_fusion_Domain._inPGeoMeanCone_alt_(*args)
    elif mosek_fusion_Domain._match_inPGeoMeanCone_I(*args): 
      return mosek_fusion_Domain._inPGeoMeanCone_I(*args)
    elif mosek_fusion_Domain._match_alt_inPGeoMeanCone_I(*args): 
      return mosek_fusion_Domain._inPGeoMeanCone_alt_I(*args)
    elif mosek_fusion_Domain._match_inPGeoMeanCone__3I(*args): 
      return mosek_fusion_Domain._inPGeoMeanCone__3I(*args)
    elif mosek_fusion_Domain._match_alt_inPGeoMeanCone__3I(*args): 
      return mosek_fusion_Domain._inPGeoMeanCone_alt__3I(*args)
    elif mosek_fusion_Domain._match_inPGeoMeanCone_II(*args): 
      return mosek_fusion_Domain._inPGeoMeanCone_II(*args)
    elif mosek_fusion_Domain._match_alt_inPGeoMeanCone_II(*args): 
      return mosek_fusion_Domain._inPGeoMeanCone_alt_II(*args)
    else:
      raise ValueError('Invalid argument list inPGeoMeanCone('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.inPGeoMeanCone()\n\tmosek.fusion.Domain.inPGeoMeanCone(int32)\n\tmosek.fusion.Domain.inPGeoMeanCone(array(int32,ndim=1))\n\tmosek.fusion.Domain.inPGeoMeanCone(int32,int32)')
  @staticmethod
  def inQCone(*args):
    if False: pass
    elif mosek_fusion_Domain._match_inQCone_(*args): 
      return mosek_fusion_Domain._inQCone_(*args)
    elif mosek_fusion_Domain._match_alt_inQCone_(*args): 
      return mosek_fusion_Domain._inQCone_alt_(*args)
    elif mosek_fusion_Domain._match_inQCone_I(*args): 
      return mosek_fusion_Domain._inQCone_I(*args)
    elif mosek_fusion_Domain._match_alt_inQCone_I(*args): 
      return mosek_fusion_Domain._inQCone_alt_I(*args)
    elif mosek_fusion_Domain._match_inQCone__3I(*args): 
      return mosek_fusion_Domain._inQCone__3I(*args)
    elif mosek_fusion_Domain._match_alt_inQCone__3I(*args): 
      return mosek_fusion_Domain._inQCone_alt__3I(*args)
    elif mosek_fusion_Domain._match_inQCone_II(*args): 
      return mosek_fusion_Domain._inQCone_II(*args)
    elif mosek_fusion_Domain._match_alt_inQCone_II(*args): 
      return mosek_fusion_Domain._inQCone_alt_II(*args)
    else:
      raise ValueError('Invalid argument list inQCone('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.inQCone()\n\tmosek.fusion.Domain.inQCone(int32)\n\tmosek.fusion.Domain.inQCone(array(int32,ndim=1))\n\tmosek.fusion.Domain.inQCone(int32,int32)')
  @staticmethod
  def inDPowerConeSeq(*args):
    if False: pass
    elif mosek_fusion_Domain._match_inDPowerConeSeq__3D(*args): 
      return mosek_fusion_Domain._inDPowerConeSeq__3D(*args)
    elif mosek_fusion_Domain._match_alt_inDPowerConeSeq__3D(*args): 
      return mosek_fusion_Domain._inDPowerConeSeq_alt__3D(*args)
    elif mosek_fusion_Domain._match_inDPowerConeSeq__3_5D(*args): 
      return mosek_fusion_Domain._inDPowerConeSeq__3_5D(*args)
    elif mosek_fusion_Domain._match_alt_inDPowerConeSeq__3_5D(*args): 
      return mosek_fusion_Domain._inDPowerConeSeq_alt__3_5D(*args)
    else:
      raise ValueError('Invalid argument list inDPowerConeSeq('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Domain.inDPowerConeSeq(array(double,ndim=1))\n\tmosek.fusion.Domain.inDPowerConeSeq(array(double,ndim=2))')
  def __repr__(self): return 'mosek.fusion.Domain'
  @staticmethod
  def __dimsize_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain.__dimsize__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __dimsize__3I(_0):
   _1=1
   for _2 in range(0,int((_0).shape[0])):
    _1 *= _0[_2]
   return numpy.int64(_1)
  @staticmethod
  def __mkRangedDomain_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Matrix_2(_t__0,_t__1):
    return mosek_fusion_Domain.__mkRangedDomain_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Matrix_2(_0,_1)
  @staticmethod
  def __mkRangedDomain_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Matrix_2(_0,_1):
   if (((_0._dimi)!=(_1._dimi)) or ((_0._dimj)!=(_1._dimj))):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching dimensions in domain")
   if (_0.isSparse() and _1.isSparse()):
    _2=numpy.zeros((_0.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
    _3=numpy.zeros((_0.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
    _4=numpy.zeros((_0.numNonzeros(),), dtype=numpy.dtype(numpy.float64))
    _5=numpy.zeros((_1.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
    _6=numpy.zeros((_1.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
    _7=numpy.zeros((_1.numNonzeros(),), dtype=numpy.dtype(numpy.float64))
    _0.getDataAsTriplets(_2,_3,_4)
    _1.getDataAsTriplets(_5,_6,_7)
    _8=0
    _9=0
    _10=0
    while ((_10 < int((_2).shape[0])) and (_9 < int((_5).shape[0]))):
     if ((_2[_10] < _5[_9]) or ((_2[_10]==_5[_9]) and (_3[_10] < _6[_9]))):
      _8 += 1
      _10 += 1
     else:
      if ((_2[_10] > _5[_9]) or ((_2[_10]==_5[_9]) and (_3[_10] > _6[_9]))):
       _8 += 1
       _9 += 1
      else:
       _8 += 1
       _10 += 1
       _9 += 1
    _8 += (int((_2).shape[0]) - _10)
    _8 += (int((_5).shape[0]) - _9)
    _11=numpy.zeros((_8,2,), dtype=numpy.dtype(numpy.int32))
    _12=numpy.zeros((_8,), dtype=numpy.dtype(numpy.float64))
    _13=numpy.zeros((_8,), dtype=numpy.dtype(numpy.float64))
    _14=0
    _15=0
    _16=0
    while ((_16 < int((_2).shape[0])) and (_15 < int((_5).shape[0]))):
     if ((_2[_16] < _5[_15]) or ((_2[_16]==_5[_15]) and (_3[_16] < _6[_15]))):
      _11[_14,0] = _2[_16]
      _11[_14,1] = _3[_16]
      _12[_14] = _4[_16]
      _13[_14] = 0.0
      _14 += 1
      _16 += 1
     else:
      if ((_2[_16] > _5[_15]) or ((_2[_16]==_5[_15]) and (_3[_16] > _6[_15]))):
       _11[_14,0] = _5[_15]
       _11[_14,1] = _6[_15]
       _12[_14] = 0.0
       _13[_14] = _7[_15]
       _14 += 1
       _15 += 1
      else:
       _11[_14,0] = _5[_15]
       _11[_14,1] = _6[_15]
       _12[_14] = _4[_15]
       _13[_14] = _7[_15]
       _14 += 1
       _16 += 1
       _15 += 1
    while (_16 < int((_2).shape[0])):
     _11[_14,0] = _2[_16]
     _11[_14,1] = _3[_16]
     _12[_14] = _4[_16]
     _13[_14] = 0.0
     _14 += 1
     _16 += 1
    while (_15 < int((_5).shape[0])):
     _11[_14,0] = _5[_15]
     _11[_14,1] = _6[_15]
     _12[_14] = 0.0
     _13[_14] = _7[_15]
     _14 += 1
     _15 += 1
    return (mosek_fusion_RangeDomain._ctor_Z_3D_3D_3I_3_5II(False,_12,_13,numpy.array([(_0._dimi),(_0._dimj)], dtype=numpy.dtype(numpy.int32)),_11,1))
   else:
    _17=(_0._dimj)
    _18=(_0._dimi)
    _19=(_18 * _17)
    if _0.isSparse():
     _20 = numpy.zeros((_19,), dtype=numpy.dtype(numpy.float64))
     _22=numpy.zeros((_0.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
     _23=numpy.zeros((_0.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
     _24=numpy.zeros((_0.numNonzeros(),), dtype=numpy.dtype(numpy.float64))
     _0.getDataAsTriplets(_22,_23,_24)
     for _25 in range(0,int((_22).shape[0])):
      _20[((_22[_25] * _17) + _23[_25])] = _24[_25]
    else:
     _20 = _0.getDataAsArray()
    if _1.isSparse():
     _21 = numpy.zeros((_19,), dtype=numpy.dtype(numpy.float64))
     _26=numpy.zeros((_1.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
     _27=numpy.zeros((_1.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
     _28=numpy.zeros((_1.numNonzeros(),), dtype=numpy.dtype(numpy.float64))
     _1.getDataAsTriplets(_26,_27,_28)
     for _29 in range(0,int((_26).shape[0])):
      _21[((_26[_29] * _17) + _27[_29])] = _28[_29]
    else:
     _21 = _1.getDataAsArray()
    return (mosek_fusion_RangeDomain._ctor_Z_3D_3D_3I_3_5II(False,_20,_21,numpy.array([(_0._dimi),(_0._dimj)], dtype=numpy.dtype(numpy.int32)),None,1))
  @staticmethod
  def __mkRangedDomain_alt__3_5D_3_5D(_t__0,_t__1):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Domain.__mkRangedDomain__3_5D_3_5D(_0,_1)
   return _1_res
  @staticmethod
  def __mkRangedDomain__3_5D_3_5D(_0,_1):
   if ((int((_0).shape[0])!=int((_1).shape[0])) or (int((_0).shape[1])!=int((_1).shape[1]))):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching dimensions in domain")
   _2=int((_0).shape[1])
   _3=int((_0).shape[0])
   _4=(_3 * _2)
   _5=numpy.zeros((_4,), dtype=numpy.dtype(numpy.float64))
   _6=numpy.zeros((_4,), dtype=numpy.dtype(numpy.float64))
   _7=0
   for _8 in range(0,_3):
    for _9 in range(0,_2):
     _5[_7] = _0[_8,_9]
     _6[_7] = _1[_8,_9]
     _7 += 1
   return (mosek_fusion_RangeDomain._ctor_Z_3D_3D_3I_3_5II(False,_5,_6,numpy.array([_3,_2], dtype=numpy.dtype(numpy.int32)),None,1))
  @staticmethod
  def __mkLinearDomain_alt_Emosek_4fusion_4RelationKey_2Lmosek_4fusion_4Matrix_2(_t__0,_t__1):
    return mosek_fusion_Domain.__mkLinearDomain_Emosek_4fusion_4RelationKey_2Lmosek_4fusion_4Matrix_2(__0,_1)
  @staticmethod
  def __mkLinearDomain_Emosek_4fusion_4RelationKey_2Lmosek_4fusion_4Matrix_2(_0,_1):
   if _1.isSparse():
    _2=numpy.zeros((_1.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
    _3=numpy.zeros((_1.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
    _4=numpy.zeros((_1.numNonzeros(),), dtype=numpy.dtype(numpy.float64))
    _1.getDataAsTriplets(_2,_3,_4)
    _5=numpy.zeros((int((_2).shape[0]),2,), dtype=numpy.dtype(numpy.int32))
    for _6 in range(0,int((_2).shape[0])):
     _5[_6,0] = _2[_6]
     _5[_6,1] = _3[_6]
    return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I_3_5II(_0,False,_4,numpy.array([(_1._dimi),(_1._dimj)], dtype=numpy.dtype(numpy.int32)),_5,1))
   else:
    return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I_3_5II(_0,False,_1.getDataAsArray(),numpy.array([(_1._dimi),(_1._dimj)], dtype=numpy.dtype(numpy.int32)),None,1))
  @staticmethod
  def __prod_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain.__prod__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __prod__3I(_0):
   _1=1
   for _2 in range(0,int((_0).shape[0])):
    _1 *= _0[_2]
   return numpy.int64(_1)
  @staticmethod
  def __inRange_alt_Z_3D_3D_3_5I_3I(_t__0,_t__1,_t__2,_t__3,_t__4):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _3=numpy.array(_t__3,ndmin=_monty.checkShape(_t__3,2),dtype=numpy.dtype(numpy.int32))
   _4=numpy.array(_t__4,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain.__inRange_Z_3D_3D_3_5I_3I(_0,_1,_2,_3,_4)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __inRange_Z_3D_3D_3_5I_3I(_0,_1,_2,_3,_4):
   if ((not _0) and (int((_1).shape[0])!=int((_2).shape[0]))):
    raise mosek_fusion_LengthError._ctor_S("Mismatching lengths of upper and lower bounds.")
   if ((_3 is not None) and (int((_3).shape[0])!=int((_1).shape[0]))):
    raise mosek_fusion_LengthError._ctor_S("Mismatching lengths of upper/lower bounds and sparsity.")
   for _5 in range(0,int((_2).shape[0])):
    if (_1[_5] > _2[_5]):
     raise mosek_fusion_DomainError._ctor_S("Invalid range specified")
   if ((_4 is not None) and (mosek.fusion.Domain.__dimsize__3I(_4)!=int((_1).shape[0]))):
    raise mosek_fusion_LengthError._ctor_S("Mismatching dimensions.")
   return (mosek_fusion_RangeDomain._ctor_Z_3D_3D_3I(_0,_1,_2,_4).sparse(_3))
  @staticmethod
  def _match_sparse_Lmosek_4fusion_4RangeDomain_2_3_5I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4RangeDomain_2__(_0) and __arg_match__3_5I__(_1))
  @staticmethod
  def _match_alt_sparse_Lmosek_4fusion_4RangeDomain_2_3_5I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4RangeDomain_2__(_0) and __arg_alt_match__3_5I__(_1))
  @staticmethod
  def _sparse_alt_Lmosek_4fusion_4RangeDomain_2_3_5I(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._sparse_Lmosek_4fusion_4RangeDomain_2_3_5I(_0,_1)
   return _1_res
  @staticmethod
  def _sparse_Lmosek_4fusion_4RangeDomain_2_3_5I(_0,_1):
   return (_0.sparse(_1))
  @staticmethod
  def _match_sparse_Lmosek_4fusion_4RangeDomain_2_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4RangeDomain_2__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_sparse_Lmosek_4fusion_4RangeDomain_2_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4RangeDomain_2__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _sparse_alt_Lmosek_4fusion_4RangeDomain_2_3I(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._sparse_Lmosek_4fusion_4RangeDomain_2_3I(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _sparse_Lmosek_4fusion_4RangeDomain_2_3I(_0,_1):
   return (_0.sparse(_1))
  @staticmethod
  def _match_sparse_Lmosek_4fusion_4LinearDomain_2_3_5I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4LinearDomain_2__(_0) and __arg_match__3_5I__(_1))
  @staticmethod
  def _match_alt_sparse_Lmosek_4fusion_4LinearDomain_2_3_5I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4LinearDomain_2__(_0) and __arg_alt_match__3_5I__(_1))
  @staticmethod
  def _sparse_alt_Lmosek_4fusion_4LinearDomain_2_3_5I(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._sparse_Lmosek_4fusion_4LinearDomain_2_3_5I(_0,_1)
   return _1_res
  @staticmethod
  def _sparse_Lmosek_4fusion_4LinearDomain_2_3_5I(_0,_1):
   return (_0.sparse(_1))
  @staticmethod
  def _match_sparse_Lmosek_4fusion_4LinearDomain_2_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4LinearDomain_2__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_sparse_Lmosek_4fusion_4LinearDomain_2_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4LinearDomain_2__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _sparse_alt_Lmosek_4fusion_4LinearDomain_2_3I(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._sparse_Lmosek_4fusion_4LinearDomain_2_3I(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _sparse_Lmosek_4fusion_4LinearDomain_2_3I(_0,_1):
   return (_0.sparse(_1))
  @staticmethod
  def _match_integral_Lmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4RangeDomain_2__(_0))
  @staticmethod
  def _match_alt_integral_Lmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4RangeDomain_2__(_0))
  @staticmethod
  def _integral_alt_Lmosek_4fusion_4RangeDomain_2(_t__0):
    return mosek_fusion_Domain._integral_Lmosek_4fusion_4RangeDomain_2(_0)
  @staticmethod
  def _integral_Lmosek_4fusion_4RangeDomain_2(_0):
   return (_0.integral())
  @staticmethod
  def _match_integral_Lmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4LinearDomain_2__(_0))
  @staticmethod
  def _match_alt_integral_Lmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4LinearDomain_2__(_0))
  @staticmethod
  def _integral_alt_Lmosek_4fusion_4LinearDomain_2(_t__0):
    return mosek_fusion_Domain._integral_Lmosek_4fusion_4LinearDomain_2(_0)
  @staticmethod
  def _integral_Lmosek_4fusion_4LinearDomain_2(_0):
   return (_0.integral())
  @staticmethod
  def _match_integral_Lmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4ConeDomain_2__(_0))
  @staticmethod
  def _match_alt_integral_Lmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4ConeDomain_2__(_0))
  @staticmethod
  def _integral_alt_Lmosek_4fusion_4ConeDomain_2(_t__0):
    return mosek_fusion_Domain._integral_Lmosek_4fusion_4ConeDomain_2(_0)
  @staticmethod
  def _integral_Lmosek_4fusion_4ConeDomain_2(_0):
   return (_0._integral_())
  @staticmethod
  def _match_axis_Lmosek_4fusion_4ConeDomain_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4ConeDomain_2__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_axis_Lmosek_4fusion_4ConeDomain_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4ConeDomain_2__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _axis_alt_Lmosek_4fusion_4ConeDomain_2I(_t__0,_t__1):
    return mosek_fusion_Domain._axis_Lmosek_4fusion_4ConeDomain_2I(_0,numpy.int32(__1))
  @staticmethod
  def _axis_Lmosek_4fusion_4ConeDomain_2I(_0,_1):
   return (_0._axis_I(_1))
  @staticmethod
  def _match_inDPowerConeSeq__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5D__(_0))
  @staticmethod
  def _match_alt_inDPowerConeSeq__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5D__(_0))
  @staticmethod
  def _inDPowerConeSeq_alt__3_5D(_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Domain._inDPowerConeSeq__3_5D(_0)
   return _1_res
  @staticmethod
  def _inDPowerConeSeq__3_5D(_0):
   _1=int((_0).shape[0])
   _2=int((_0).shape[1])
   _3=numpy.zeros(((_2 * _1),), dtype=numpy.dtype(numpy.float64))
   _4=0
   for _5 in range(0,_1):
    for _6 in range(0,_2):
     _3[_4] = _0[_5,_6]
     _4 += 1
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3D_3I(mosek.fusion.QConeKey.InDPowConeSeq,_3,None))
  @staticmethod
  def _match_inDPowerConeSeq__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_inDPowerConeSeq__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  @staticmethod
  def _inDPowerConeSeq_alt__3D(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Domain._inDPowerConeSeq__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inDPowerConeSeq__3D(_0):
   _1=int((_0).shape[0])
   _2=numpy.zeros(((2 * _1),), dtype=numpy.dtype(numpy.float64))
   for _3 in range(0,_1):
    _2[(2 * _3)] = _0[_3]
    _2[((2 * _3) + 1)] = (1.0 - _0[_3])
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3D_3I(mosek.fusion.QConeKey.InDPowConeSeq,_2,None))
  @staticmethod
  def _match_inDPowerCone__3D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_inDPowerCone__3D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _inDPowerCone_alt__3D_3I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._inDPowerCone__3D_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inDPowerCone__3D_3I(_0,_1):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3D_3I(mosek.fusion.QConeKey.InDPowCone,_0,numpy.array([_1[_2] for _2 in range(0,int((_1).shape[0]))], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inDPowerCone__3DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_inDPowerCone__3DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _inDPowerCone_alt__3DI(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=numpy.int32(_t__1)
   _1_res = mosek_fusion_Domain._inDPowerCone__3DI(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inDPowerCone__3DI(_0,_1):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3D_3I(mosek.fusion.QConeKey.InDPowCone,_0,numpy.array([_1,3], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inDPowerCone__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_inDPowerCone__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  @staticmethod
  def _inDPowerCone_alt__3D(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Domain._inDPowerCone__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inDPowerCone__3D(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3D_3I(mosek.fusion.QConeKey.InDPowCone,_0,None))
  @staticmethod
  def _match_inDPowerCone_D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_D__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_inDPowerCone_D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _inDPowerCone_alt_D_3I(_t__0,_t__1):
   _0=numpy.float64(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._inDPowerCone_D_3I(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inDPowerCone_D_3I(_0,_1):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3D_3I(mosek.fusion.QConeKey.InDPowCone,numpy.array([_0,(1.0 - _0)], dtype=numpy.dtype(numpy.float64)),numpy.array([_1[_2] for _2 in range(0,int((_1).shape[0]))], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inDPowerCone_DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_D__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_inDPowerCone_DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _inDPowerCone_alt_DI(_t__0,_t__1):
    return mosek_fusion_Domain._inDPowerCone_DI(numpy.float64(__0),numpy.int32(__1))
  @staticmethod
  def _inDPowerCone_DI(_0,_1):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3D_3I(mosek.fusion.QConeKey.InDPowCone,numpy.array([_0,(1.0 - _0)], dtype=numpy.dtype(numpy.float64)),numpy.array([_1,3], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inDPowerCone_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_D__(_0))
  @staticmethod
  def _match_alt_inDPowerCone_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_D__(_0))
  @staticmethod
  def _inDPowerCone_alt_D(_t__0):
    return mosek_fusion_Domain._inDPowerCone_D(numpy.float64(__0))
  @staticmethod
  def _inDPowerCone_D(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3D_3I(mosek.fusion.QConeKey.InDPowCone,numpy.array([_0,(1.0 - _0)], dtype=numpy.dtype(numpy.float64)),None))
  @staticmethod
  def _match_inPPowerConeSeq__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5D__(_0))
  @staticmethod
  def _match_alt_inPPowerConeSeq__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5D__(_0))
  @staticmethod
  def _inPPowerConeSeq_alt__3_5D(_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Domain._inPPowerConeSeq__3_5D(_0)
   return _1_res
  @staticmethod
  def _inPPowerConeSeq__3_5D(_0):
   _1=int((_0).shape[0])
   _2=int((_0).shape[1])
   _3=numpy.zeros(((_2 * _1),), dtype=numpy.dtype(numpy.float64))
   _4=0
   for _5 in range(0,_1):
    for _6 in range(0,_2):
     _3[_4] = _0[_5,_6]
     _4 += 1
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3D_3I(mosek.fusion.QConeKey.InPPowConeSeq,_3,None))
  @staticmethod
  def _match_inPPowerConeSeq__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_inPPowerConeSeq__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  @staticmethod
  def _inPPowerConeSeq_alt__3D(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Domain._inPPowerConeSeq__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inPPowerConeSeq__3D(_0):
   _1=int((_0).shape[0])
   _2=numpy.zeros(((2 * _1),), dtype=numpy.dtype(numpy.float64))
   for _3 in range(0,_1):
    _2[(2 * _3)] = _0[_3]
    _2[((2 * _3) + 1)] = (1.0 - _0[_3])
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3D_3I(mosek.fusion.QConeKey.InPPowConeSeq,_2,None))
  @staticmethod
  def _match_inPPowerCone__3D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_inPPowerCone__3D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _inPPowerCone_alt__3D_3I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._inPPowerCone__3D_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inPPowerCone__3D_3I(_0,_1):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3D_3I(mosek.fusion.QConeKey.InPPowCone,_0,numpy.array([_1[_2] for _2 in range(0,int((_1).shape[0]))], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inPPowerCone__3DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_inPPowerCone__3DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _inPPowerCone_alt__3DI(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=numpy.int32(_t__1)
   _1_res = mosek_fusion_Domain._inPPowerCone__3DI(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inPPowerCone__3DI(_0,_1):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3D_3I(mosek.fusion.QConeKey.InPPowCone,_0,numpy.array([_1,3], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inPPowerCone__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_inPPowerCone__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  @staticmethod
  def _inPPowerCone_alt__3D(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Domain._inPPowerCone__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inPPowerCone__3D(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3D_3I(mosek.fusion.QConeKey.InPPowCone,_0,None))
  @staticmethod
  def _match_inPPowerCone_D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_D__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_inPPowerCone_D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _inPPowerCone_alt_D_3I(_t__0,_t__1):
   _0=numpy.float64(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._inPPowerCone_D_3I(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inPPowerCone_D_3I(_0,_1):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3D_3I(mosek.fusion.QConeKey.InPPowCone,numpy.array([_0,(1.0 - _0)], dtype=numpy.dtype(numpy.float64)),numpy.array([_1[_2] for _2 in range(0,int((_1).shape[0]))], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inPPowerCone_DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_D__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_inPPowerCone_DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _inPPowerCone_alt_DI(_t__0,_t__1):
    return mosek_fusion_Domain._inPPowerCone_DI(numpy.float64(__0),numpy.int32(__1))
  @staticmethod
  def _inPPowerCone_DI(_0,_1):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3D_3I(mosek.fusion.QConeKey.InPPowCone,numpy.array([_0,(1.0 - _0)], dtype=numpy.dtype(numpy.float64)),numpy.array([_1,3], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inPPowerCone_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_D__(_0))
  @staticmethod
  def _match_alt_inPPowerCone_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_D__(_0))
  @staticmethod
  def _inPPowerCone_alt_D(_t__0):
    return mosek_fusion_Domain._inPPowerCone_D(numpy.float64(__0))
  @staticmethod
  def _inPPowerCone_D(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3D_3I(mosek.fusion.QConeKey.InPPowCone,numpy.array([_0,(1.0 - _0)], dtype=numpy.dtype(numpy.float64)),None))
  @staticmethod
  def _match_inDExpCone__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_inDExpCone__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  @staticmethod
  def _inDExpCone_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._inDExpCone__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inDExpCone__3I(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InDExpCone,numpy.array([_0[_1] for _1 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inDExpCone_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_inDExpCone_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  @staticmethod
  def _inDExpCone_alt_I(_t__0):
    return mosek_fusion_Domain._inDExpCone_I(numpy.int32(__0))
  @staticmethod
  def _inDExpCone_I(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InDExpCone,numpy.array([_0,3], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inDExpCone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_inDExpCone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _inDExpCone_alt_():
    return mosek_fusion_Domain._inDExpCone_()
  @staticmethod
  def _inDExpCone_():
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InDExpCone,None))
  @staticmethod
  def _match_inPExpCone__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_inPExpCone__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  @staticmethod
  def _inPExpCone_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._inPExpCone__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inPExpCone__3I(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InPExpCone,numpy.array([_0[_1] for _1 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inPExpCone_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_inPExpCone_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  @staticmethod
  def _inPExpCone_alt_I(_t__0):
    return mosek_fusion_Domain._inPExpCone_I(numpy.int32(__0))
  @staticmethod
  def _inPExpCone_I(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InPExpCone,numpy.array([_0,3], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inPExpCone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_inPExpCone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _inPExpCone_alt_():
    return mosek_fusion_Domain._inPExpCone_()
  @staticmethod
  def _inPExpCone_():
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InPExpCone,None))
  @staticmethod
  def _match_inDGeoMeanCone__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_inDGeoMeanCone__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  @staticmethod
  def _inDGeoMeanCone_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._inDGeoMeanCone__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inDGeoMeanCone__3I(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InDGeoMeanCone,numpy.array([_0[_1] for _1 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inDGeoMeanCone_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_inDGeoMeanCone_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _inDGeoMeanCone_alt_II(_t__0,_t__1):
    return mosek_fusion_Domain._inDGeoMeanCone_II(numpy.int32(__0),numpy.int32(__1))
  @staticmethod
  def _inDGeoMeanCone_II(_0,_1):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InDGeoMeanCone,numpy.array([_0,_1], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inDGeoMeanCone_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_inDGeoMeanCone_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  @staticmethod
  def _inDGeoMeanCone_alt_I(_t__0):
    return mosek_fusion_Domain._inDGeoMeanCone_I(numpy.int32(__0))
  @staticmethod
  def _inDGeoMeanCone_I(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InDGeoMeanCone,numpy.array([_0], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inDGeoMeanCone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_inDGeoMeanCone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _inDGeoMeanCone_alt_():
    return mosek_fusion_Domain._inDGeoMeanCone_()
  @staticmethod
  def _inDGeoMeanCone_():
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InDGeoMeanCone,None))
  @staticmethod
  def _match_inPGeoMeanCone__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_inPGeoMeanCone__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  @staticmethod
  def _inPGeoMeanCone_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._inPGeoMeanCone__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inPGeoMeanCone__3I(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InPGeoMeanCone,numpy.array([_0[_1] for _1 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inPGeoMeanCone_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_inPGeoMeanCone_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _inPGeoMeanCone_alt_II(_t__0,_t__1):
    return mosek_fusion_Domain._inPGeoMeanCone_II(numpy.int32(__0),numpy.int32(__1))
  @staticmethod
  def _inPGeoMeanCone_II(_0,_1):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InPGeoMeanCone,numpy.array([_0,_1], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inPGeoMeanCone_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_inPGeoMeanCone_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  @staticmethod
  def _inPGeoMeanCone_alt_I(_t__0):
    return mosek_fusion_Domain._inPGeoMeanCone_I(numpy.int32(__0))
  @staticmethod
  def _inPGeoMeanCone_I(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InPGeoMeanCone,numpy.array([_0], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inPGeoMeanCone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_inPGeoMeanCone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _inPGeoMeanCone_alt_():
    return mosek_fusion_Domain._inPGeoMeanCone_()
  @staticmethod
  def _inPGeoMeanCone_():
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InPGeoMeanCone,None))
  @staticmethod
  def _match_inRotatedQCone__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_inRotatedQCone__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  @staticmethod
  def _inRotatedQCone_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._inRotatedQCone__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inRotatedQCone__3I(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InRotatedQCone,numpy.array([_0[_1] for _1 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inRotatedQCone_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_inRotatedQCone_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _inRotatedQCone_alt_II(_t__0,_t__1):
    return mosek_fusion_Domain._inRotatedQCone_II(numpy.int32(__0),numpy.int32(__1))
  @staticmethod
  def _inRotatedQCone_II(_0,_1):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InRotatedQCone,numpy.array([_0,_1], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inRotatedQCone_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_inRotatedQCone_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  @staticmethod
  def _inRotatedQCone_alt_I(_t__0):
    return mosek_fusion_Domain._inRotatedQCone_I(numpy.int32(__0))
  @staticmethod
  def _inRotatedQCone_I(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InRotatedQCone,numpy.array([_0], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inRotatedQCone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_inRotatedQCone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _inRotatedQCone_alt_():
    return mosek_fusion_Domain._inRotatedQCone_()
  @staticmethod
  def _inRotatedQCone_():
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InRotatedQCone,None))
  @staticmethod
  def _match_inQCone__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_inQCone__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  @staticmethod
  def _inQCone_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._inQCone__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inQCone__3I(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InQCone,numpy.array([_0[_1] for _1 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inQCone_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_inQCone_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _inQCone_alt_II(_t__0,_t__1):
    return mosek_fusion_Domain._inQCone_II(numpy.int32(__0),numpy.int32(__1))
  @staticmethod
  def _inQCone_II(_0,_1):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InQCone,numpy.array([_0,_1], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inQCone_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_inQCone_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  @staticmethod
  def _inQCone_alt_I(_t__0):
    return mosek_fusion_Domain._inQCone_I(numpy.int32(__0))
  @staticmethod
  def _inQCone_I(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InQCone,numpy.array([_0], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inQCone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_inQCone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _inQCone_alt_():
    return mosek_fusion_Domain._inQCone_()
  @staticmethod
  def _inQCone_():
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InQCone,None))
  @staticmethod
  def _match_inSVecPSDCone__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_inSVecPSDCone__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  @staticmethod
  def _inSVecPSDCone_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._inSVecPSDCone__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inSVecPSDCone__3I(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InSVecPSDCone,_0))
  @staticmethod
  def _match_inSVecPSDCone_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_inSVecPSDCone_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _inSVecPSDCone_alt_II(_t__0,_t__1):
    return mosek_fusion_Domain._inSVecPSDCone_II(numpy.int32(__0),numpy.int32(__1))
  @staticmethod
  def _inSVecPSDCone_II(_0,_1):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InSVecPSDCone,numpy.array([_0,_1], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inSVecPSDCone_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_inSVecPSDCone_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  @staticmethod
  def _inSVecPSDCone_alt_I(_t__0):
    return mosek_fusion_Domain._inSVecPSDCone_I(numpy.int32(__0))
  @staticmethod
  def _inSVecPSDCone_I(_0):
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InSVecPSDCone,numpy.array([_0], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inSVecPSDCone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_inSVecPSDCone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _inSVecPSDCone_alt_():
    return mosek_fusion_Domain._inSVecPSDCone_()
  @staticmethod
  def _inSVecPSDCone_():
   return (mosek_fusion_ConeDomain._ctor_Emosek_4fusion_4QConeKey_2_3I(mosek.fusion.QConeKey.InSVecPSDCone,None))
  @staticmethod
  def _match_isTrilPSD_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_isTrilPSD_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _isTrilPSD_alt_II(_t__0,_t__1):
    return mosek_fusion_Domain._isTrilPSD_II(numpy.int32(__0),numpy.int32(__1))
  @staticmethod
  def _isTrilPSD_II(_0,_1):
   return (mosek_fusion_PSDDomain._ctor_Emosek_4fusion_4PSDKey_2_3III(mosek.fusion.PSDKey.IsTrilPSD,numpy.array([_1,_0,_0], dtype=numpy.dtype(numpy.int32)),1,2))
  @staticmethod
  def _match_isTrilPSD_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_isTrilPSD_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  @staticmethod
  def _isTrilPSD_alt_I(_t__0):
    return mosek_fusion_Domain._isTrilPSD_I(numpy.int32(__0))
  @staticmethod
  def _isTrilPSD_I(_0):
   return (mosek_fusion_PSDDomain._ctor_Emosek_4fusion_4PSDKey_2_3III(mosek.fusion.PSDKey.IsTrilPSD,numpy.array([_0,_0], dtype=numpy.dtype(numpy.int32)),0,1))
  @staticmethod
  def _match_isTrilPSD_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_isTrilPSD_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _isTrilPSD_alt_():
    return mosek_fusion_Domain._isTrilPSD_()
  @staticmethod
  def _isTrilPSD_():
   return (mosek_fusion_PSDDomain._ctor_Emosek_4fusion_4PSDKey_2(mosek.fusion.PSDKey.IsTrilPSD))
  @staticmethod
  def _match_inPSDCone_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_inPSDCone_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _inPSDCone_alt_II(_t__0,_t__1):
    return mosek_fusion_Domain._inPSDCone_II(numpy.int32(__0),numpy.int32(__1))
  @staticmethod
  def _inPSDCone_II(_0,_1):
   return (mosek_fusion_PSDDomain._ctor_Emosek_4fusion_4PSDKey_2_3I(mosek.fusion.PSDKey.IsSymPSD,numpy.array([_1,_0,_0], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inPSDCone_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_inPSDCone_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  @staticmethod
  def _inPSDCone_alt_I(_t__0):
    return mosek_fusion_Domain._inPSDCone_I(numpy.int32(__0))
  @staticmethod
  def _inPSDCone_I(_0):
   return (mosek_fusion_PSDDomain._ctor_Emosek_4fusion_4PSDKey_2_3I(mosek.fusion.PSDKey.IsSymPSD,numpy.array([_0,_0], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inPSDCone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_inPSDCone_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _inPSDCone_alt_():
    return mosek_fusion_Domain._inPSDCone_()
  @staticmethod
  def _inPSDCone_():
   return (mosek_fusion_PSDDomain._ctor_Emosek_4fusion_4PSDKey_2(mosek.fusion.PSDKey.IsSymPSD))
  @staticmethod
  def _match_binary_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_binary_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _binary_alt_():
    return mosek_fusion_Domain._binary_()
  @staticmethod
  def _binary_():
   return (mosek.fusion.Domain._inRange_DD(0.0,1.0).integral())
  @staticmethod
  def _match_binary__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_binary__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  @staticmethod
  def _binary_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._binary__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _binary__3I(_0):
   return (mosek.fusion.Domain._inRange_DD_3I(0.0,1.0,_0).integral())
  @staticmethod
  def _match_binary_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_binary_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _binary_alt_II(_t__0,_t__1):
    return mosek_fusion_Domain._binary_II(numpy.int32(__0),numpy.int32(__1))
  @staticmethod
  def _binary_II(_0,_1):
   return (mosek.fusion.Domain._inRange_DD_3I(0.0,1.0,numpy.array([_0,_1], dtype=numpy.dtype(numpy.int32))).integral())
  @staticmethod
  def _match_binary_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_binary_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  @staticmethod
  def _binary_alt_I(_t__0):
    return mosek_fusion_Domain._binary_I(numpy.int32(__0))
  @staticmethod
  def _binary_I(_0):
   return (mosek.fusion.Domain._inRange_DD_3I(0.0,1.0,numpy.array([_0], dtype=numpy.dtype(numpy.int32))).integral())
  @staticmethod
  def _match_inRange_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _match_alt_inRange_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _inRange_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Matrix_2(_t__0,_t__1):
    return mosek_fusion_Domain._inRange_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Matrix_2(_0,_1)
  @staticmethod
  def _inRange_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Matrix_2(_0,_1):
   return (mosek.fusion.Domain.__mkRangedDomain_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Matrix_2(_0,_1))
  @staticmethod
  def _match_inRange__3_5D_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3_5D__(_0) and __arg_match__3_5D__(_1))
  @staticmethod
  def _match_alt_inRange__3_5D_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3_5D__(_0) and __arg_alt_match__3_5D__(_1))
  @staticmethod
  def _inRange_alt__3_5D_3_5D(_t__0,_t__1):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Domain._inRange__3_5D_3_5D(_0,_1)
   return _1_res
  @staticmethod
  def _inRange__3_5D_3_5D(_0,_1):
   return (mosek.fusion.Domain.__mkRangedDomain__3_5D_3_5D(_0,_1))
  @staticmethod
  def _match_inRange__3D_3D_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3D__(_0) and __arg_match__3D__(_1) and __arg_match__3I__(_2))
  @staticmethod
  def _match_alt_inRange__3D_3D_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match__3D__(_1) and __arg_alt_match__3I__(_2))
  @staticmethod
  def _inRange_alt__3D_3D_3I(_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._inRange__3D_3D_3I(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inRange__3D_3D_3I(_0,_1,_2):
   return (mosek_fusion_RangeDomain._ctor_Z_3D_3D_3I(False,_0,_1,_2))
  @staticmethod
  def _match_inRange__3DD_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3D__(_0) and __arg_match_D__(_1) and __arg_match__3I__(_2))
  @staticmethod
  def _match_alt_inRange__3DD_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match_D__(_1) and __arg_alt_match__3I__(_2))
  @staticmethod
  def _inRange_alt__3DD_3I(_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=numpy.float64(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._inRange__3DD_3I(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inRange__3DD_3I(_0,_1,_2):
   return (mosek_fusion_RangeDomain._ctor_Z_3D_3D_3I(False,_0,numpy.array([_1 for _3 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.float64)),_2))
  @staticmethod
  def _match_inRange_D_3D_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_D__(_0) and __arg_match__3D__(_1) and __arg_match__3I__(_2))
  @staticmethod
  def _match_alt_inRange_D_3D_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match__3D__(_1) and __arg_alt_match__3I__(_2))
  @staticmethod
  def _inRange_alt_D_3D_3I(_t__0,_t__1,_t__2):
   _0=numpy.float64(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._inRange_D_3D_3I(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inRange_D_3D_3I(_0,_1,_2):
   return (mosek_fusion_RangeDomain._ctor_Z_3D_3D_3I(False,numpy.array([_0 for _3 in range(0,int((_1).shape[0]))], dtype=numpy.dtype(numpy.float64)),_1,_2))
  @staticmethod
  def _match_inRange_DD_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_D__(_0) and __arg_match_D__(_1) and __arg_match__3I__(_2))
  @staticmethod
  def _match_alt_inRange_DD_3I(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_D__(_1) and __arg_alt_match__3I__(_2))
  @staticmethod
  def _inRange_alt_DD_3I(_t__0,_t__1,_t__2):
   _0=numpy.float64(_t__0)
   _1=numpy.float64(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._inRange_DD_3I(_0,_1,_2)
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inRange_DD_3I(_0,_1,_2):
   return (mosek_fusion_RangeDomain._ctor_ZDD_3I(False,_0,_1,_2))
  @staticmethod
  def _match_inRange__3D_3D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match__3D__(_1))
  @staticmethod
  def _match_alt_inRange__3D_3D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match__3D__(_1))
  @staticmethod
  def _inRange_alt__3D_3D(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Domain._inRange__3D_3D(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inRange__3D_3D(_0,_1):
   return (mosek_fusion_RangeDomain._ctor_Z_3D_3D_3I(False,_0,_1,numpy.array([int((_0).shape[0])], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inRange__3DD(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match_D__(_1))
  @staticmethod
  def _match_alt_inRange__3DD(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match_D__(_1))
  @staticmethod
  def _inRange_alt__3DD(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=numpy.float64(_t__1)
   _1_res = mosek_fusion_Domain._inRange__3DD(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inRange__3DD(_0,_1):
   return (mosek_fusion_RangeDomain._ctor_Z_3D_3D_3I(False,_0,numpy.array([_1 for _2 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.float64)),numpy.array([int((_0).shape[0])], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inRange_D_3D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_D__(_0) and __arg_match__3D__(_1))
  @staticmethod
  def _match_alt_inRange_D_3D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match__3D__(_1))
  @staticmethod
  def _inRange_alt_D_3D(_t__0,_t__1):
   _0=numpy.float64(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Domain._inRange_D_3D(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _inRange_D_3D(_0,_1):
   return (mosek_fusion_RangeDomain._ctor_Z_3D_3D_3I(False,numpy.array([_0 for _2 in range(0,int((_1).shape[0]))], dtype=numpy.dtype(numpy.float64)),_1,numpy.array([int((_1).shape[0])], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_inRange_DD(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_D__(_0) and __arg_match_D__(_1))
  @staticmethod
  def _match_alt_inRange_DD(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_D__(_1))
  @staticmethod
  def _inRange_alt_DD(_t__0,_t__1):
    return mosek_fusion_Domain._inRange_DD(numpy.float64(__0),numpy.float64(__1))
  @staticmethod
  def _inRange_DD(_0,_1):
   return (mosek_fusion_RangeDomain._ctor_Z_3D_3D_3I(True,numpy.array([_0], dtype=numpy.dtype(numpy.float64)),numpy.array([_1], dtype=numpy.dtype(numpy.float64)),None))
  @staticmethod
  def _match_greaterThan_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _match_alt_greaterThan_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _greaterThan_alt_Lmosek_4fusion_4Matrix_2(_t__0):
    return mosek_fusion_Domain._greaterThan_Lmosek_4fusion_4Matrix_2(_0)
  @staticmethod
  def _greaterThan_Lmosek_4fusion_4Matrix_2(_0):
   return (mosek.fusion.Domain.__mkLinearDomain_Emosek_4fusion_4RelationKey_2Lmosek_4fusion_4Matrix_2(mosek.fusion.RelationKey.GreaterThan,_0))
  @staticmethod
  def _match_greaterThan__3D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_greaterThan__3D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _greaterThan_alt__3D_3I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._greaterThan__3D_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _greaterThan__3D_3I(_0,_1):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.GreaterThan,False,mosek.fusion.Utils.Tools._arraycopy__3D(_0),_1))
  @staticmethod
  def _match_greaterThan__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5D__(_0))
  @staticmethod
  def _match_alt_greaterThan__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5D__(_0))
  @staticmethod
  def _greaterThan_alt__3_5D(_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Domain._greaterThan__3_5D(_0)
   return _1_res
  @staticmethod
  def _greaterThan__3_5D(_0):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.GreaterThan,False,numpy.array([_0[_1,_2] for _1 in range(0,int((_0).shape[0])) for _2 in range(0,int((_0).shape[1]))], dtype=numpy.dtype(numpy.float64)),numpy.array([int((_0).shape[0]),int((_0).shape[1])], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_greaterThan__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_greaterThan__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  @staticmethod
  def _greaterThan_alt__3D(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Domain._greaterThan__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _greaterThan__3D(_0):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.GreaterThan,False,mosek.fusion.Utils.Tools._arraycopy__3D(_0),numpy.array([int((_0).shape[0])], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_greaterThan_D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_D__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_greaterThan_D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _greaterThan_alt_D_3I(_t__0,_t__1):
   _0=numpy.float64(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._greaterThan_D_3I(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _greaterThan_D_3I(_0,_1):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.GreaterThan,False,numpy.array([_0 for _2 in range(0,mosek.fusion.Domain.__prod__3I(_1))], dtype=numpy.dtype(numpy.float64)),_1))
  @staticmethod
  def _match_greaterThan_DII(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_D__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_greaterThan_DII(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  @staticmethod
  def _greaterThan_alt_DII(_t__0,_t__1,_t__2):
    return mosek_fusion_Domain._greaterThan_DII(numpy.float64(__0),numpy.int32(__1),numpy.int32(__2))
  @staticmethod
  def _greaterThan_DII(_0,_1,_2):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.GreaterThan,False,numpy.array([_0 for _3 in range(0,(_2 * _1))], dtype=numpy.dtype(numpy.float64)),numpy.array([_1,_2], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_greaterThan_DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_D__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_greaterThan_DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _greaterThan_alt_DI(_t__0,_t__1):
    return mosek_fusion_Domain._greaterThan_DI(numpy.float64(__0),numpy.int32(__1))
  @staticmethod
  def _greaterThan_DI(_0,_1):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.GreaterThan,False,numpy.array([_0 for _2 in range(0,_1)], dtype=numpy.dtype(numpy.float64)),numpy.array([_1], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_greaterThan_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_D__(_0))
  @staticmethod
  def _match_alt_greaterThan_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_D__(_0))
  @staticmethod
  def _greaterThan_alt_D(_t__0):
    return mosek_fusion_Domain._greaterThan_D(numpy.float64(__0))
  @staticmethod
  def _greaterThan_D(_0):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.GreaterThan,True,numpy.array([_0], dtype=numpy.dtype(numpy.float64)),None))
  @staticmethod
  def _match_lessThan_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _match_alt_lessThan_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _lessThan_alt_Lmosek_4fusion_4Matrix_2(_t__0):
    return mosek_fusion_Domain._lessThan_Lmosek_4fusion_4Matrix_2(_0)
  @staticmethod
  def _lessThan_Lmosek_4fusion_4Matrix_2(_0):
   return (mosek.fusion.Domain.__mkLinearDomain_Emosek_4fusion_4RelationKey_2Lmosek_4fusion_4Matrix_2(mosek.fusion.RelationKey.LessThan,_0))
  @staticmethod
  def _match_lessThan__3D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_lessThan__3D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _lessThan_alt__3D_3I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._lessThan__3D_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _lessThan__3D_3I(_0,_1):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.LessThan,False,mosek.fusion.Utils.Tools._arraycopy__3D(_0),_1))
  @staticmethod
  def _match_lessThan__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5D__(_0))
  @staticmethod
  def _match_alt_lessThan__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5D__(_0))
  @staticmethod
  def _lessThan_alt__3_5D(_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Domain._lessThan__3_5D(_0)
   return _1_res
  @staticmethod
  def _lessThan__3_5D(_0):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.LessThan,False,numpy.array([_0[_1,_2] for _1 in range(0,int((_0).shape[0])) for _2 in range(0,int((_0).shape[1]))], dtype=numpy.dtype(numpy.float64)),numpy.array([int((_0).shape[0]),int((_0).shape[1])], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_lessThan__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_lessThan__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  @staticmethod
  def _lessThan_alt__3D(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Domain._lessThan__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _lessThan__3D(_0):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.LessThan,False,mosek.fusion.Utils.Tools._arraycopy__3D(_0),numpy.array([int((_0).shape[0])], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_lessThan_D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_D__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_lessThan_D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _lessThan_alt_D_3I(_t__0,_t__1):
   _0=numpy.float64(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._lessThan_D_3I(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _lessThan_D_3I(_0,_1):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.LessThan,False,numpy.array([_0], dtype=numpy.dtype(numpy.float64)),_1))
  @staticmethod
  def _match_lessThan_DII(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_D__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_lessThan_DII(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  @staticmethod
  def _lessThan_alt_DII(_t__0,_t__1,_t__2):
    return mosek_fusion_Domain._lessThan_DII(numpy.float64(__0),numpy.int32(__1),numpy.int32(__2))
  @staticmethod
  def _lessThan_DII(_0,_1,_2):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.LessThan,False,numpy.array([_0], dtype=numpy.dtype(numpy.float64)),numpy.array([_1,_2], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_lessThan_DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_D__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_lessThan_DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _lessThan_alt_DI(_t__0,_t__1):
    return mosek_fusion_Domain._lessThan_DI(numpy.float64(__0),numpy.int32(__1))
  @staticmethod
  def _lessThan_DI(_0,_1):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.LessThan,False,numpy.array([_0], dtype=numpy.dtype(numpy.float64)),numpy.array([_1], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_lessThan_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_D__(_0))
  @staticmethod
  def _match_alt_lessThan_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_D__(_0))
  @staticmethod
  def _lessThan_alt_D(_t__0):
    return mosek_fusion_Domain._lessThan_D(numpy.float64(__0))
  @staticmethod
  def _lessThan_D(_0):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.LessThan,True,numpy.array([_0], dtype=numpy.dtype(numpy.float64)),None))
  @staticmethod
  def _match_equalsTo_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _match_alt_equalsTo_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _equalsTo_alt_Lmosek_4fusion_4Matrix_2(_t__0):
    return mosek_fusion_Domain._equalsTo_Lmosek_4fusion_4Matrix_2(_0)
  @staticmethod
  def _equalsTo_Lmosek_4fusion_4Matrix_2(_0):
   return (mosek.fusion.Domain.__mkLinearDomain_Emosek_4fusion_4RelationKey_2Lmosek_4fusion_4Matrix_2(mosek.fusion.RelationKey.EqualsTo,_0))
  @staticmethod
  def _match_equalsTo__3D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_equalsTo__3D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _equalsTo_alt__3D_3I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._equalsTo__3D_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _equalsTo__3D_3I(_0,_1):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.EqualsTo,False,mosek.fusion.Utils.Tools._arraycopy__3D(_0),_1))
  @staticmethod
  def _match_equalsTo__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5D__(_0))
  @staticmethod
  def _match_alt_equalsTo__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5D__(_0))
  @staticmethod
  def _equalsTo_alt__3_5D(_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Domain._equalsTo__3_5D(_0)
   return _1_res
  @staticmethod
  def _equalsTo__3_5D(_0):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.EqualsTo,False,numpy.array([_0[_1,_2] for _1 in range(0,int((_0).shape[0])) for _2 in range(0,int((_0).shape[1]))], dtype=numpy.dtype(numpy.float64)),numpy.array([int((_0).shape[0]),int((_0).shape[1])], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_equalsTo__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_equalsTo__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  @staticmethod
  def _equalsTo_alt__3D(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Domain._equalsTo__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _equalsTo__3D(_0):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.EqualsTo,False,mosek.fusion.Utils.Tools._arraycopy__3D(_0),numpy.array([int((_0).shape[0])], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_equalsTo_D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_D__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_equalsTo_D_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _equalsTo_alt_D_3I(_t__0,_t__1):
   _0=numpy.float64(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._equalsTo_D_3I(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _equalsTo_D_3I(_0,_1):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.EqualsTo,False,numpy.array([_0], dtype=numpy.dtype(numpy.float64)),_1))
  @staticmethod
  def _match_equalsTo_DII(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_D__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_equalsTo_DII(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  @staticmethod
  def _equalsTo_alt_DII(_t__0,_t__1,_t__2):
    return mosek_fusion_Domain._equalsTo_DII(numpy.float64(__0),numpy.int32(__1),numpy.int32(__2))
  @staticmethod
  def _equalsTo_DII(_0,_1,_2):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.EqualsTo,False,numpy.array([_0], dtype=numpy.dtype(numpy.float64)),numpy.array([_1,_2], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_equalsTo_DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_D__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_equalsTo_DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _equalsTo_alt_DI(_t__0,_t__1):
    return mosek_fusion_Domain._equalsTo_DI(numpy.float64(__0),numpy.int32(__1))
  @staticmethod
  def _equalsTo_DI(_0,_1):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.EqualsTo,False,numpy.array([_0], dtype=numpy.dtype(numpy.float64)),numpy.array([_1], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_equalsTo_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_D__(_0))
  @staticmethod
  def _match_alt_equalsTo_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_D__(_0))
  @staticmethod
  def _equalsTo_alt_D(_t__0):
    return mosek_fusion_Domain._equalsTo_D(numpy.float64(__0))
  @staticmethod
  def _equalsTo_D(_0):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.EqualsTo,True,numpy.array([_0], dtype=numpy.dtype(numpy.float64)),None))
  @staticmethod
  def _match_unbounded__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_unbounded__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  @staticmethod
  def _unbounded_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Domain._unbounded__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _unbounded__3I(_0):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.IsFree,False,None,numpy.array([_0[_1] for _1 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_unbounded_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_unbounded_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _unbounded_alt_II(_t__0,_t__1):
    return mosek_fusion_Domain._unbounded_II(numpy.int32(__0),numpy.int32(__1))
  @staticmethod
  def _unbounded_II(_0,_1):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.IsFree,False,None,numpy.array([_0,_1], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_unbounded_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_unbounded_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  @staticmethod
  def _unbounded_alt_I(_t__0):
    return mosek_fusion_Domain._unbounded_I(numpy.int32(__0))
  @staticmethod
  def _unbounded_I(_0):
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.IsFree,False,None,numpy.array([_0], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_unbounded_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_unbounded_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _unbounded_alt_():
    return mosek_fusion_Domain._unbounded_()
  @staticmethod
  def _unbounded_():
   return (mosek_fusion_LinearDomain._ctor_Emosek_4fusion_4RelationKey_2Z_3D_3I(mosek.fusion.RelationKey.IsFree,True,None,None))
 return Domain
mosek_fusion_Domain=__mk_mosek_fusion_Domain()
del __mk_mosek_fusion_Domain
def __mk_mosek_fusion_Param():
 class Param(object):
  @staticmethod
  def hstack(*args):
    if False: pass
    elif mosek_fusion_Param._match_hstack__3Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._hstack__3Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Param._match_alt_hstack__3Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._hstack_alt__3Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Param._match_hstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._hstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Param._match_alt_hstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._hstack_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Param._match_hstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._hstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Param._match_alt_hstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._hstack_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args)
    else:
      raise ValueError('Invalid argument list hstack('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Param.hstack(array(mosek.fusion.Parameter,ndim=1))\n\tmosek.fusion.Param.hstack(mosek.fusion.Parameter,mosek.fusion.Parameter)\n\tmosek.fusion.Param.hstack(mosek.fusion.Parameter,mosek.fusion.Parameter,mosek.fusion.Parameter)')
  @staticmethod
  def vstack(*args):
    if False: pass
    elif mosek_fusion_Param._match_vstack__3Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._vstack__3Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Param._match_alt_vstack__3Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._vstack_alt__3Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Param._match_vstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._vstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Param._match_alt_vstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._vstack_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Param._match_vstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._vstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Param._match_alt_vstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._vstack_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args)
    else:
      raise ValueError('Invalid argument list vstack('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Param.vstack(array(mosek.fusion.Parameter,ndim=1))\n\tmosek.fusion.Param.vstack(mosek.fusion.Parameter,mosek.fusion.Parameter)\n\tmosek.fusion.Param.vstack(mosek.fusion.Parameter,mosek.fusion.Parameter,mosek.fusion.Parameter)')
  @staticmethod
  def repeat(*args):
    if False: pass
    elif mosek_fusion_Param._match_repeat_Lmosek_4fusion_4Parameter_2II(*args): 
      return mosek_fusion_Param._repeat_Lmosek_4fusion_4Parameter_2II(*args)
    elif mosek_fusion_Param._match_alt_repeat_Lmosek_4fusion_4Parameter_2II(*args): 
      return mosek_fusion_Param._repeat_alt_Lmosek_4fusion_4Parameter_2II(*args)
    else:
      raise ValueError('Invalid argument list repeat('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Param.repeat(mosek.fusion.Parameter,int32,int32)')
  @staticmethod
  def stack(*args):
    if False: pass
    elif mosek_fusion_Param._match_stack__3_3Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._stack__3_3Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Param._match_alt_stack__3_3Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._stack_alt__3_3Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Param._match_stack_I_3Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._stack_I_3Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Param._match_alt_stack_I_3Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._stack_alt_I_3Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Param._match_stack_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._stack_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Param._match_alt_stack_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._stack_alt_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Param._match_stack_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._stack_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Param._match_alt_stack_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Param._stack_alt_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args)
    else:
      raise ValueError('Invalid argument list stack('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Param.stack(array(array(mosek.fusion.Parameter,ndim=1),ndim=1))\n\tmosek.fusion.Param.stack(int32,array(mosek.fusion.Parameter,ndim=1))\n\tmosek.fusion.Param.stack(int32,mosek.fusion.Parameter,mosek.fusion.Parameter)\n\tmosek.fusion.Param.stack(int32,mosek.fusion.Parameter,mosek.fusion.Parameter,mosek.fusion.Parameter)')
  def __repr__(self): return 'mosek.fusion.Param'
  @staticmethod
  def _match_repeat_Lmosek_4fusion_4Parameter_2II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_repeat_Lmosek_4fusion_4Parameter_2II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  @staticmethod
  def _repeat_alt_Lmosek_4fusion_4Parameter_2II(_t__0,_t__1,_t__2):
    return mosek_fusion_Param._repeat_Lmosek_4fusion_4Parameter_2II(_0,numpy.int32(__1),numpy.int32(__2))
  @staticmethod
  def _repeat_Lmosek_4fusion_4Parameter_2II(_0,_1,_2):
   return (mosek.fusion.Param._stack_I_3Lmosek_4fusion_4Parameter_2(_2,numpy.array([_0 for _3 in range(0,_1)], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_stack_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_I__(_0) and __arg_match_Lmosek_4fusion_4Parameter_2__(_1) and __arg_match_Lmosek_4fusion_4Parameter_2__(_2) and __arg_match_Lmosek_4fusion_4Parameter_2__(_3))
  @staticmethod
  def _match_alt_stack_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(_2) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(_3))
  @staticmethod
  def _stack_alt_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(_t__0,_t__1,_t__2,_t__3):
    return mosek_fusion_Param._stack_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(numpy.int32(__0),_1,_2,_3)
  @staticmethod
  def _stack_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(_0,_1,_2,_3):
   return (mosek.fusion.Param._dstack__3Lmosek_4fusion_4Parameter_2I(numpy.array([_1,_2,_3], dtype=numpy.dtype(object)),_0))
  @staticmethod
  def _match_stack_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_Lmosek_4fusion_4Parameter_2__(_1) and __arg_match_Lmosek_4fusion_4Parameter_2__(_2))
  @staticmethod
  def _match_alt_stack_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(_2))
  @staticmethod
  def _stack_alt_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Param._stack_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(numpy.int32(__0),_1,_2)
  @staticmethod
  def _stack_ILmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(_0,_1,_2):
   return (mosek.fusion.Param._dstack__3Lmosek_4fusion_4Parameter_2I(numpy.array([_1,_2], dtype=numpy.dtype(object)),_0))
  @staticmethod
  def _match_stack_I_3Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match__3Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _match_alt_stack_I_3Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _stack_alt_I_3Lmosek_4fusion_4Parameter_2(_t__0,_t__1):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Param._stack_I_3Lmosek_4fusion_4Parameter_2(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _stack_I_3Lmosek_4fusion_4Parameter_2(_0,_1):
   return (mosek.fusion.Param._dstack__3Lmosek_4fusion_4Parameter_2I(_1,_0))
  @staticmethod
  def _match_stack__3_3Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_3Lmosek_4fusion_4Parameter_2__(_0))
  @staticmethod
  def _match_alt_stack__3_3Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_3Lmosek_4fusion_4Parameter_2__(_0))
  @staticmethod
  def _stack_alt__3_3Lmosek_4fusion_4Parameter_2(_t__0):
   _0=_monty.makeJaggedArray(_t__0,(1,1),numpy.dtype(object))
   _1_res = mosek_fusion_Param._stack__3_3Lmosek_4fusion_4Parameter_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _stack__3_3Lmosek_4fusion_4Parameter_2(_0):
   return (mosek.fusion.Param._vstack__3Lmosek_4fusion_4Parameter_2(numpy.array([mosek.fusion.Param._hstack__3Lmosek_4fusion_4Parameter_2(_0[_1]) for _1 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_hstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_match_Lmosek_4fusion_4Parameter_2__(_1) and __arg_match_Lmosek_4fusion_4Parameter_2__(_2))
  @staticmethod
  def _match_alt_hstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(_2))
  @staticmethod
  def _hstack_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Param._hstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(_0,_1,_2)
  @staticmethod
  def _hstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(_0,_1,_2):
   return (mosek.fusion.Param._dstack__3Lmosek_4fusion_4Parameter_2I(numpy.array([_0,_1,_2], dtype=numpy.dtype(object)),1))
  @staticmethod
  def _match_hstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_match_Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _match_alt_hstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _hstack_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(_t__0,_t__1):
    return mosek_fusion_Param._hstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(_0,_1)
  @staticmethod
  def _hstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(_0,_1):
   return (mosek.fusion.Param._dstack__3Lmosek_4fusion_4Parameter_2I(numpy.array([_0,_1], dtype=numpy.dtype(object)),1))
  @staticmethod
  def _match_hstack__3Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3Lmosek_4fusion_4Parameter_2__(_0))
  @staticmethod
  def _match_alt_hstack__3Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Parameter_2__(_0))
  @staticmethod
  def _hstack_alt__3Lmosek_4fusion_4Parameter_2(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Param._hstack__3Lmosek_4fusion_4Parameter_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _hstack__3Lmosek_4fusion_4Parameter_2(_0):
   return (mosek.fusion.Param._dstack__3Lmosek_4fusion_4Parameter_2I(_0,1))
  @staticmethod
  def _match_vstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_match_Lmosek_4fusion_4Parameter_2__(_1) and __arg_match_Lmosek_4fusion_4Parameter_2__(_2))
  @staticmethod
  def _match_alt_vstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(_2))
  @staticmethod
  def _vstack_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Param._vstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(_0,_1,_2)
  @staticmethod
  def _vstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(_0,_1,_2):
   return (mosek.fusion.Param._dstack__3Lmosek_4fusion_4Parameter_2I(numpy.array([_0,_1,_2], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _match_vstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_match_Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _match_alt_vstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _vstack_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(_t__0,_t__1):
    return mosek_fusion_Param._vstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(_0,_1)
  @staticmethod
  def _vstack_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Parameter_2(_0,_1):
   return (mosek.fusion.Param._dstack__3Lmosek_4fusion_4Parameter_2I(numpy.array([_0,_1], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _match_vstack__3Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3Lmosek_4fusion_4Parameter_2__(_0))
  @staticmethod
  def _match_alt_vstack__3Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Parameter_2__(_0))
  @staticmethod
  def _vstack_alt__3Lmosek_4fusion_4Parameter_2(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Param._vstack__3Lmosek_4fusion_4Parameter_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _vstack__3Lmosek_4fusion_4Parameter_2(_0):
   return (mosek.fusion.Param._dstack__3Lmosek_4fusion_4Parameter_2I(_0,0))
  @staticmethod
  def _dstack_alt__3Lmosek_4fusion_4Parameter_2I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1=numpy.int32(_t__1)
   _1_res = mosek_fusion_Param._dstack__3Lmosek_4fusion_4Parameter_2I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _dstack__3Lmosek_4fusion_4Parameter_2I(_0,_1):
   if (_1 < 0):
    raise mosek_fusion_IndexError._ctor_S("Invalid stacking dimension")
   _2=numpy.zeros((int((_0).shape[0]),), dtype=numpy.dtype(numpy.int32))
   _3=numpy.zeros((int((_0).shape[0]),), dtype=numpy.dtype(numpy.int64))
   _5=_0[0].getND()
   for _6 in range(1,int((_0).shape[0])):
    if (_5 < _0[_6].getND()):
     _5 = _0[_6].getND()
   if (_1 < _5):
    _7=0
    while ((_7 < int((_0).shape[0])) and (_5!=_0[_7].getND())):
     _7 += 1
    _4 = _0[_7].getShape()
    _8=0
    while ((_8 < int((_0).shape[0])) and (_5!=_0[_8].getND())):
     _8 += 1
    _4 = _0[_8].getShape()
   else:
    _4 = numpy.array([1 for _9 in range(0,(_1 + 1))], dtype=numpy.dtype(numpy.int32))
    _10=0
    while ((_10 < int((_0).shape[0])) and (_5!=_0[_10].getND())):
     _10 += 1
    _11=_0[_10].getND()
    _12=_0[_10].getShape()
    for _13 in range(0,_11):
     _4[_13] = _12[_13]
   _5 = int((_4).shape[0])
   _14=0
   _15=False
   for _16 in range(0,int((_0).shape[0])):
    _17=_0[_16].getShape()
    _3[_16] = mosek.fusion.Set._size__3I(_17)
    for _18 in range(0,int((_17).shape[0])):
     _15 = (_15 and ((_18==_1) or (_17[_18]==_4[_18])))
    if (_1 < int((_17).shape[0])):
     _2[_16] = _17[_1]
     _14 += _17[_1]
     for _19 in range(int((_17).shape[0]),_5):
      _15 = (_15 and ((_19==_1) or (_4[_19]==1)))
    else:
     _14 += 1
     _2[_16] = 1
   if _15:
    raise mosek_fusion_DimensionError._ctor_S("Mismatching dimensions for stacking")
   _4[_1] = _14
   _20=numpy.array([_0[_21].getNumNonzero() for _21 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int32))
   _22=0
   for _23 in range(0,int((_20).shape[0])):
    _22 += _20[_23]
   _24=numpy.zeros((_22,), dtype=numpy.dtype(numpy.int64))
   _25=numpy.zeros((_22,), dtype=numpy.dtype(numpy.int32))
   _26=1
   for _27 in range(0,_1):
    _26 *= _4[_27]
   _28=_14
   _29=1
   for _30 in range((_1 + 1),_5):
    _29 *= _4[_30]
   _31=0
   _32=0
   for _33 in range(0,int((_0).shape[0])):
    _34=_0[_33].getNumNonzero()
    _0[_33].getSp(_24,_31)
    _0[_33].getAllIndexes(_25,_31)
    if (_1==0):
     for _35 in range(_31,(_31 + _34)):
      _24[_35] += _32
     _32 += _3[_33]
    else:
     for _36 in range(_31,(_31 + _34)):
      _37=(_24[_36] // (_2[_33] * _29))
      _38=((_24[_36] // _29) % _2[_33])
      _39=(_24[_36] % _29)
      _24[_36] = (((_37 * (_14 * _29)) + ((_38 + _32) * _29)) + _39)
     _32 += _2[_33]
    _31 += _34
   _40=_4[0]
   for _41 in range(1,_5):
    if (_40 < _4[_41]):
     _40 = _4[_41]
   _42=numpy.zeros(((_40 + 1),), dtype=numpy.dtype(numpy.int32))
   _43=numpy.zeros((_22,), dtype=numpy.dtype(numpy.int32))
   _44=numpy.zeros((_22,), dtype=numpy.dtype(numpy.int32))
   _45=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int64))
   _45[(_5 - 1)] = 1
   for _46 in range(1,_5):
    _45[((_5 - _46) - 1)] = (_45[(_5 - _46)] * _4[(_5 - _46)])
   for _47 in range(0,_22):
    _43[_47] = _47
   for _48 in range(0,_5):
    _49=((_5 - _48) - 1)
    for _50 in range(0,(_40 + 1)):
     _42[_50] = 0
    for _51 in range(0,_22):
     _42[(1 + ((_24[_51] // _45[_49]) % _4[_49]))] += 1
    for _52 in range(0,_40):
     _42[(_52 + 1)] += _42[_52]
    for _53 in range(0,_22):
     _54=((_24[_43[_53]] // _45[_49]) % _4[_49])
     _44[_42[_54]] = _43[_53]
     _42[_54] += 1
    _55=_44
    _44 = _43
    _43 = _55
   _56=numpy.array([_24[_43[_57]] for _57 in range(0,_22)], dtype=numpy.dtype(numpy.int64))
   _58=numpy.array([_25[_43[_59]] for _59 in range(0,_22)], dtype=numpy.dtype(numpy.int32))
   return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(_0[0].getModel(),_4,_56,_58))
 return Param
mosek_fusion_Param=__mk_mosek_fusion_Param()
del __mk_mosek_fusion_Param
def __mk_mosek_fusion_ParameterImpl():
 class ParameterImpl(mosek_fusion_Parameter,object):
  __slots__ = ['_ParameterImpl__size','_ParameterImpl__nidxs','_ParameterImpl__sp','_ParameterImpl__shape','_ParameterImpl__model']
  def clone(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_clone_Lmosek_4fusion_4Model_2(*args): 
      return self._clone_Lmosek_4fusion_4Model_2(*args)
    elif mosek_fusion_ParameterImpl._match_alt_clone_Lmosek_4fusion_4Model_2(*args): 
      return self._clone_alt_Lmosek_4fusion_4Model_2(*args)
    else:
      raise ValueError('Invalid argument list clone('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.clone(mosek.fusion.Model)')
  def asExpr(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_asExpr_(*args): 
      return self._asExpr_(*args)
    elif mosek_fusion_ParameterImpl._match_alt_asExpr_(*args): 
      return self._asExpr_alt_(*args)
    else:
      raise ValueError('Invalid argument list asExpr('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.asExpr()')
  def isSparse(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_isSparse_(*args): 
      return self._isSparse_(*args)
    elif mosek_fusion_ParameterImpl._match_alt_isSparse_(*args): 
      return self._isSparse_alt_(*args)
    else:
      raise ValueError('Invalid argument list isSparse('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.isSparse()')
  def getSize(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_getSize_(*args): 
      return self._getSize_(*args)
    elif mosek_fusion_ParameterImpl._match_alt_getSize_(*args): 
      return self._getSize_alt_(*args)
    else:
      raise ValueError('Invalid argument list getSize('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.getSize()')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ParameterImpl._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ParameterImpl._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ParameterImpl._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ParameterImpl.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def getAllIndexes(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_getAllIndexes__3II(*args): 
      return self._getAllIndexes__3II(*args)
    elif mosek_fusion_ParameterImpl._match_alt_getAllIndexes__3II(*args): 
      return self._getAllIndexes_alt__3II(*args)
    else:
      raise ValueError('Invalid argument list getAllIndexes('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.getAllIndexes(array(int32,ndim=1),int32)')
  def getIndex(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_getIndex_I(*args): 
      return self._getIndex_I(*args)
    elif mosek_fusion_ParameterImpl._match_alt_getIndex_I(*args): 
      return self._getIndex_alt_I(*args)
    else:
      raise ValueError('Invalid argument list getIndex('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.getIndex(int32)')
  def getModel(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_getModel_(*args): 
      return self._getModel_(*args)
    elif mosek_fusion_ParameterImpl._match_alt_getModel_(*args): 
      return self._getModel_alt_(*args)
    else:
      raise ValueError('Invalid argument list getModel('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.getModel()')
  def getNumNonzero(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_getNumNonzero_(*args): 
      return self._getNumNonzero_(*args)
    elif mosek_fusion_ParameterImpl._match_alt_getNumNonzero_(*args): 
      return self._getNumNonzero_alt_(*args)
    else:
      raise ValueError('Invalid argument list getNumNonzero('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.getNumNonzero()')
  def getDim(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_getDim_I(*args): 
      return self._getDim_I(*args)
    elif mosek_fusion_ParameterImpl._match_alt_getDim_I(*args): 
      return self._getDim_alt_I(*args)
    else:
      raise ValueError('Invalid argument list getDim('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.getDim(int32)')
  def recursive_eval(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ParameterImpl._match_alt_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._recursive_1eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list recursive_eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.recursive_eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def pick(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_pick__3I(*args): 
      return self._pick__3I(*args)
    elif mosek_fusion_ParameterImpl._match_alt_pick__3I(*args): 
      return self._pick_alt__3I(*args)
    elif mosek_fusion_ParameterImpl._match_pick__3_5I(*args): 
      return self._pick__3_5I(*args)
    elif mosek_fusion_ParameterImpl._match_alt_pick__3_5I(*args): 
      return self._pick_alt__3_5I(*args)
    else:
      raise ValueError('Invalid argument list pick('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.pick(array(int32,ndim=1))\n\tmosek.fusion.ParameterImpl.pick(array(int32,ndim=2))')
  def slice(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_slice_II(*args): 
      return self._slice_II(*args)
    elif mosek_fusion_ParameterImpl._match_alt_slice_II(*args): 
      return self._slice_alt_II(*args)
    elif mosek_fusion_ParameterImpl._match_slice__3I_3I(*args): 
      return self._slice__3I_3I(*args)
    elif mosek_fusion_ParameterImpl._match_alt_slice__3I_3I(*args): 
      return self._slice_alt__3I_3I(*args)
    else:
      raise ValueError('Invalid argument list slice('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.slice(int32,int32)\n\tmosek.fusion.ParameterImpl.slice(array(int32,ndim=1),array(int32,ndim=1))')
  def getShape(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_getShape_(*args): 
      return self._getShape_(*args)
    elif mosek_fusion_ParameterImpl._match_alt_getShape_(*args): 
      return self._getShape_alt_(*args)
    else:
      raise ValueError('Invalid argument list getShape('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.getShape()')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ParameterImpl._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.toString()')
  def compress_when_caching(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_compress_1when_1caching_(*args): 
      return self._compress_1when_1caching_(*args)
    elif mosek_fusion_ParameterImpl._match_alt_compress_1when_1caching_(*args): 
      return self._compress_1when_1caching_alt_(*args)
    else:
      raise ValueError('Invalid argument list compress_when_caching('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.compress_when_caching()')
  def transpose(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_transpose_(*args): 
      return self._transpose_(*args)
    elif mosek_fusion_ParameterImpl._match_alt_transpose_(*args): 
      return self._transpose_alt_(*args)
    else:
      raise ValueError('Invalid argument list transpose('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.transpose()')
  def index(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_index_I(*args): 
      return self._index_I(*args)
    elif mosek_fusion_ParameterImpl._match_alt_index_I(*args): 
      return self._index_alt_I(*args)
    elif mosek_fusion_ParameterImpl._match_index__3I(*args): 
      return self._index__3I(*args)
    elif mosek_fusion_ParameterImpl._match_alt_index__3I(*args): 
      return self._index_alt__3I(*args)
    else:
      raise ValueError('Invalid argument list index('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.index(int32)\n\tmosek.fusion.ParameterImpl.index(array(int32,ndim=1))')
  def getSp(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_getSp__3JI(*args): 
      return self._getSp__3JI(*args)
    elif mosek_fusion_ParameterImpl._match_alt_getSp__3JI(*args): 
      return self._getSp_alt__3JI(*args)
    else:
      raise ValueError('Invalid argument list getSp('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.getSp(array(int64,ndim=1),int32)')
  def setValue(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_setValue_D(*args): 
      return self._setValue_D(*args)
    elif mosek_fusion_ParameterImpl._match_alt_setValue_D(*args): 
      return self._setValue_alt_D(*args)
    elif mosek_fusion_ParameterImpl._match_setValue__3D(*args): 
      return self._setValue__3D(*args)
    elif mosek_fusion_ParameterImpl._match_alt_setValue__3D(*args): 
      return self._setValue_alt__3D(*args)
    elif mosek_fusion_ParameterImpl._match_setValue__3_5D(*args): 
      return self._setValue__3_5D(*args)
    elif mosek_fusion_ParameterImpl._match_alt_setValue__3_5D(*args): 
      return self._setValue_alt__3_5D(*args)
    else:
      raise ValueError('Invalid argument list setValue('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.setValue(double)\n\tmosek.fusion.ParameterImpl.setValue(array(double,ndim=1))\n\tmosek.fusion.ParameterImpl.setValue(array(double,ndim=2))')
  def reshape(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_reshape__3I(*args): 
      return self._reshape__3I(*args)
    elif mosek_fusion_ParameterImpl._match_alt_reshape__3I(*args): 
      return self._reshape_alt__3I(*args)
    else:
      raise ValueError('Invalid argument list reshape('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.reshape(array(int32,ndim=1))')
  def getValue(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_getValue_(*args): 
      return self._getValue_(*args)
    elif mosek_fusion_ParameterImpl._match_alt_getValue_(*args): 
      return self._getValue_alt_(*args)
    else:
      raise ValueError('Invalid argument list getValue('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.getValue()')
  def getND(self,*args):
    if False: pass
    elif mosek_fusion_ParameterImpl._match_getND_(*args): 
      return self._getND_(*args)
    elif mosek_fusion_ParameterImpl._match_alt_getND_(*args): 
      return self._getND_alt_(*args)
    else:
      raise ValueError('Invalid argument list getND('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ParameterImpl.getND()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ParameterImpl: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4ParameterImpl_2Lmosek_4fusion_4Model_2(other,model):
    o = ParameterImpl.__new__(ParameterImpl)
    o._ctor_init_Lmosek_4fusion_4ParameterImpl_2Lmosek_4fusion_4Model_2(other,model)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4ParameterImpl_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    other,model, = args
    return (__arg_match_Lmosek_4fusion_4ParameterImpl_2__(other) and __arg_match_Lmosek_4fusion_4Model_2__(model))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4ParameterImpl_2Lmosek_4fusion_4Model_2(*args):
    if len(args) != 2: return False
    other,model, = args
    return (__arg_alt_match_Lmosek_4fusion_4ParameterImpl_2__(other) and __arg_alt_match_Lmosek_4fusion_4Model_2__(model))
  def _ctor_alt_init_Lmosek_4fusion_4ParameterImpl_2Lmosek_4fusion_4Model_2(self,other,model):
    self._ctor_init_Lmosek_4fusion_4ParameterImpl_2Lmosek_4fusion_4Model_2(other,model)
  def _ctor_init_Lmosek_4fusion_4ParameterImpl_2Lmosek_4fusion_4Model_2(self,other,model):
   (self.__model) = model
   (self.__shape) = (other.__shape)
   (self.__sp) = (other.__sp)
   (self.__size) = (other.__size)
   (self.__nidxs) = (other.__nidxs)
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(model,shape,sp,nidxs):
    o = ParameterImpl.__new__(ParameterImpl)
    o._ctor_init_Lmosek_4fusion_4Model_2_3I_3J_3I(model,shape,sp,nidxs)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(*args):
    if len(args) != 4: return False
    model,shape,sp,nidxs, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(model) and __arg_match__3I__(shape) and __arg_match__3J__(sp) and __arg_match__3I__(nidxs))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(*args):
    if len(args) != 4: return False
    model,shape,sp,nidxs, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(model) and __arg_alt_match__3I__(shape) and __arg_alt_match__3J__(sp) and __arg_alt_match__3I__(nidxs))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2_3I_3J_3I(self,model,shape,sp,nidxs):
    self._ctor_init_Lmosek_4fusion_4Model_2_3I_3J_3I(model,numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.array(sp,dtype=numpy.dtype(numpy.int64)),numpy.array(nidxs,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_Lmosek_4fusion_4Model_2_3I_3J_3I(self,model,shape,sp,nidxs):
   (self.__model) = model
   (self.__shape) = mosek.fusion.Utils.Tools._arraycopy__3I(shape)
   (self.__sp) = sp
   (self.__size) = mosek.fusion.Set._size__3I(shape)
   (self.__nidxs) = mosek.fusion.Utils.Tools._arraycopy__3I(nidxs)
  @staticmethod
  def _match_clone_Lmosek_4fusion_4Model_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(_0))
  @staticmethod
  def _match_alt_clone_Lmosek_4fusion_4Model_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(_0))
  def _clone_alt_Lmosek_4fusion_4Model_2(self,_t__0):
    return self._clone_Lmosek_4fusion_4Model_2(_0)
  def _clone_Lmosek_4fusion_4Model_2(self,_0):
   return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4ParameterImpl_2Lmosek_4fusion_4Model_2(self,_0))
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   _0=mosek.fusion.Utils.StringBuffer()._a_S("Parameter((")
   if (int((self.__shape).shape[0]) > 0):
    _0._a_I(self.__shape[0])
    for _1 in range(1,int((self.__shape).shape[0])):
     _0._a_S(",")._a_I(self.__shape[_1])
   _0._a_S(")")
   if (self.__sp is not None):
    _0._a_S(",sparse")
   _0._a_S(")")
   return (_0._toString_())
  @staticmethod
  def _match_pick__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5I__(_0))
  @staticmethod
  def _match_alt_pick__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5I__(_0))
  def _pick_alt__3_5I(self,_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3_5I(_0)
   return _1_res
  def _pick__3_5I(self,_0):
   if (int((self.__shape).shape[0])!=int((_0).shape[1])):
    raise mosek_fusion_IndexError._ctor_S("Invalid index")
   _1=False
   for _2 in range(0,int((_0).shape[0])):
    for _3 in range(0,int((_0).shape[1])):
     if ((_0[_2,_3] < 0) or (_0[_2,_3] >= self.__shape[_3])):
      _1 = True
   if _1:
    raise mosek_fusion_IndexError._ctor_S("Invalid index")
   _4=int((self.__shape).shape[0])
   _5=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int64))
   _5[(_4 - 1)] = 1
   for _6 in range(1,_4):
    _5[((_4 - _6) - 1)] = (_5[(_4 - _6)] * self.__shape[(_4 - _6)])
   _7=numpy.array([int((_0).shape[0])], dtype=numpy.dtype(numpy.int32))
   _9=None
   if (self.__sp is None):
    _8 = numpy.zeros((int((_0).shape[0]),), dtype=numpy.dtype(numpy.int32))
    for _10 in range(0,int((_0).shape[0])):
     _11=0
     for _12 in range(0,_4):
      _11 += (_5[_12] * _0[_10,_12])
     _8[_10] = self.__nidxs[_11]
   else:
    _13=0
    for _14 in range(0,int((_0).shape[0])):
     _15=0
     for _16 in range(0,_4):
      _15 += (_5[_16] * _0[_14,_16])
     if (mosek.fusion.CommonTools._binarySearch__3JJ(self.__sp,_15) >= 0):
      _13 += 1
    _8 = numpy.zeros((_13,), dtype=numpy.dtype(numpy.int32))
    _9 = numpy.zeros((_13,), dtype=numpy.dtype(numpy.int64))
    _17=0
    for _18 in range(0,int((_0).shape[0])):
     _19=0
     for _20 in range(0,_4):
      _19 += (_5[_20] * _0[_18,_20])
     _21=mosek.fusion.CommonTools._binarySearch__3JJ(self.__sp,_19)
     if (_21 >= 0):
      _8[_17] = self.__nidxs[_21]
      _9[_17] = _18
      _17 += 1
    if (_13==int((_0).shape[0])):
     _9 = None
   return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(self.__model,_7,_9,_8))
  @staticmethod
  def _match_pick__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_pick__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _pick_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _pick__3I(self,_0):
   if (int((self.__shape).shape[0])!=1):
    raise mosek_fusion_IndexError._ctor_S("Invalid index")
   _1=False
   for _2 in range(0,int((_0).shape[0])):
    if ((_0[_2] < 0) or (_0[_2] >= self.__shape[0])):
     _1 = True
   if _1:
    raise mosek_fusion_IndexError._ctor_S("Invalid index")
   _4=None
   if (self.__sp is None):
    _3 = numpy.array([self.__nidxs[_0[_5]] for _5 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int32))
   else:
    _6=0
    for _7 in range(0,int((_0).shape[0])):
     if (mosek.fusion.CommonTools._binarySearch__3JJ(self.__sp,_0[_7]) >= 0):
      _6 += 1
    _3 = numpy.zeros((_6,), dtype=numpy.dtype(numpy.int32))
    _4 = numpy.zeros((_6,), dtype=numpy.dtype(numpy.int64))
    _8=0
    for _9 in range(0,int((_0).shape[0])):
     _10=mosek.fusion.CommonTools._binarySearch__3JJ(self.__sp,_0[_9])
     if (_10 >= 0):
      _4[_8] = _9
      _3[_8] = self.__nidxs[_10]
      _8 += 1
    if (_6==int((_0).shape[0])):
     _4 = None
   return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(self.__model,numpy.array([int((_0).shape[0])], dtype=numpy.dtype(numpy.int32)),_4,_3))
  @staticmethod
  def _match_index__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_index__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _index_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._index__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _index__3I(self,_0):
   if (int((self.__shape).shape[0])!=int((_0).shape[0])):
    raise mosek_fusion_DimensionError._ctor_S("Index has incorrect dimension")
   else:
    for _1 in range(0,int((_0).shape[0])):
     if ((_0[_1] < 0) or (_0[_1] >= self.__shape[_1])):
      raise mosek_fusion_IndexError._ctor_S("Index out of bounds")
   if (self.__sp is None):
    _2=int((_0).shape[0])
    _3=_0[(_2 - 1)]
    for _4 in range(1,_2):
     _3 = ((_3 * self.__shape[(_2 - _4)]) + _0[((_2 - _4) - 1)])
    return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(self.__model,numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)),None,numpy.array([self.__nidxs[_3]], dtype=numpy.dtype(numpy.int32))))
   else:
    _5=int((_0).shape[0])
    _6=_0[(_5 - 1)]
    for _7 in range(1,_5):
     _6 = ((_6 * self.__shape[(_5 - _7)]) + _0[((_5 - _7) - 1)])
    _8=0
    while ((_8 < int((self.__sp).shape[0])) and (self.__sp[_8] < _6)):
     _8 += 1
    if ((_8 < int((self.__sp).shape[0])) and (self.__sp[_8]==_6)):
     return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(self.__model,numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)),None,numpy.array([self.__nidxs[_8]], dtype=numpy.dtype(numpy.int32))))
    else:
     return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(self.__model,numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)),numpy.zeros((0,), dtype=numpy.dtype(numpy.int64)),numpy.zeros((0,), dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_index_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_index_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _index_alt_I(self,_t__0):
    return self._index_I(numpy.int32(__0))
  def _index_I(self,_0):
   if (int((self.__shape).shape[0])!=1):
    raise mosek_fusion_DimensionError._ctor_S("Index has incorrect dimension")
   elif ((_0 < 0) or (_0 >= self.__shape[0])): # bld/grindsted/final/default/src/fusion/Parameter.monty:403:16-38
    raise mosek_fusion_IndexError._ctor_S("Index out of bounds")
   if (self.__sp is None):
    return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(self.__model,numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)),None,numpy.array([self.__nidxs[_0]], dtype=numpy.dtype(numpy.int32))))
   else:
    _1=0
    while ((_1 < int((self.__sp).shape[0])) and (self.__sp[_1] < _0)):
     _1 += 1
    if ((_1 < int((self.__sp).shape[0])) and (self.__sp[_1]==_0)):
     return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(self.__model,numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)),None,numpy.array([self.__nidxs[_1]], dtype=numpy.dtype(numpy.int32))))
    else:
     return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(self.__model,numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)),numpy.zeros((0,), dtype=numpy.dtype(numpy.int64)),numpy.zeros((0,), dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   _4=int((self.__shape).shape[0])
   _5=int((self.__nidxs).shape[0])
   _6=(self.__sp is not None)
   _0.alloc_expr(_4,_5,int((self.__nidxs).shape[0]),_6,int((self.__nidxs).shape[0]))
   _7=(_0.i32)
   _8=(_0.i64)
   _9=(_0.f64)
   _10=(_0.ptr_base)
   _11=(_0.nidxs_base)
   _12=(_0.cof_base)
   _13=(_0.shape_base)
   _14=(_0.codeptr_base)
   _15=(_0.code_base)
   _16=(_0.cconst_base)
   _17=(_0.sp_base)
   _7[_10] = 0
   for _18 in range(0,_4):
    _7[(_13 + _18)] = self.__shape[_18]
   for _19 in range(0,_5):
    _8[(_11 + _19)] = 0
   for _20 in range(0,_5):
    _9[(_12 + _20)] = 0.0
   for _21 in range(0,(_5 + 1)):
    _7[(_10 + _21)] = _21
   if (_5 > 0):
    for _22 in range(0,(_5 + 1)):
     _7[(_14 + _22)] = _22
   if _6:
    for _23 in range(0,_5):
     _8[(_17 + _23)] = self.__sp[_23]
   for _24 in range(0,_5):
    _7[(_15 + _24)] = 1
    _9[(_16 + _24)] = self.__nidxs[_24]
  @staticmethod
  def _match_compress_1when_1caching_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_compress_1when_1caching_(*args):
    if len(args) != 0: return False
    return True
  def _compress_1when_1caching_alt_(self,):
    return self._compress_1when_1caching_()
  def _compress_1when_1caching_(self,):
   return (False)
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(self,_t__0,_t__1,_t__2):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(_0,_1,_2)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(self,_0,_1,_2):
   self.recursive_eval(_0,_1,_2,False)
  @staticmethod
  def _match_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _recursive_1eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.eval(_0,_1,_2,_3)
  @staticmethod
  def _match_getSp__3JI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3J__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_getSp__3JI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3J__(_0) and __arg_alt_match_I__(_1))
  def _getSp_alt__3JI(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.int32(_t__1)
   _1_res = self._getSp__3JI(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _getSp__3JI(self,_0,_1):
   if (self.__sp is not None):
    for _2 in range(0,int((self.__sp).shape[0])):
     _0[(_2 + _1)] = self.__sp[_2]
   else:
    for _3 in range(0,int((self.__nidxs).shape[0])):
     _0[(_3 + _1)] = _3
  @staticmethod
  def _match_isSparse_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_isSparse_(*args):
    if len(args) != 0: return False
    return True
  def _isSparse_alt_(self,):
    return self._isSparse_()
  def _isSparse_(self,):
   return ((self.__sp is not None))
  @staticmethod
  def _match_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  def _slice_alt__3I_3I(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self._slice__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _slice__3I_3I(self,_0,_1):
   if ((int((_0).shape[0])!=int((_1).shape[0])) or (int((_0).shape[0])!=int((self.__shape).shape[0]))):
    raise mosek_fusion_DimensionError._ctor_S("Invalid index dimension")
   _2=int((_0).shape[0])
   for _3 in range(0,_2):
    if ((_0[_3] < 0) or ((_0[_3] >= _1[_3]) or (_1[_3] > self.__shape[_3]))):
     raise mosek_fusion_IndexError._ctor_S("Invalid index")
   _4=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int64))
   _4[(_2 - 1)] = 1
   for _5 in range(1,_2):
    _4[((_2 - _5) - 1)] = (_4[(_2 - _5)] * self.__shape[_5])
   _6=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int32))
   _7=numpy.array([(_1[_8] - _0[_8]) for _8 in range(0,_2)], dtype=numpy.dtype(numpy.int32))
   if (self.__sp is None):
    _9=1
    for _10 in range(0,_2):
     _9 *= _7[_10]
    _11=numpy.zeros((_9,), dtype=numpy.dtype(numpy.int32))
    _12=0
    for _13 in range(0,int((self.__nidxs).shape[0])):
     for _14 in range(0,_2):
      _6[_14] = numpy.int32(((_13 // _4[_14]) % self.__shape[_14]))
     _15=True
     for _16 in range(0,_2):
      _15 = (_15 and ((_0[_16] <= _6[_16]) and (_6[_16] < _1[_16])))
     if _15:
      _11[_12] = self.__nidxs[_13]
      _12 += 1
    return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(self.__model,_7,None,_11))
   else:
    _17=0
    for _18 in range(0,int((self.__nidxs).shape[0])):
     for _19 in range(0,_2):
      _6[_19] = numpy.int32(((self.__sp[_18] // _4[_19]) % self.__shape[_19]))
     _20=True
     for _21 in range(0,_2):
      _20 = (_20 and ((_0[_21] <= _6[_21]) and (_6[_21] < _1[_21])))
     if _20:
      _17 += 1
    _22=numpy.zeros((_17,), dtype=numpy.dtype(numpy.int32))
    _23=numpy.zeros((_17,), dtype=numpy.dtype(numpy.int64))
    _24=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int64))
    _24[(_2 - 1)] = 1
    for _25 in range(1,_2):
     _24[((_2 - _25) - 1)] = (_24[(_2 - _25)] * _7[_25])
    _26=0
    for _27 in range(0,int((self.__nidxs).shape[0])):
     for _28 in range(0,_2):
      _6[_27] = numpy.int32(((self.__sp[_27] // _4[_28]) % self.__shape[_28]))
     _29=True
     for _30 in range(0,_2):
      _29 = (_29 and ((_0[_30] <= _6[_30]) and (_6[_30] < _1[_30])))
     if _29:
      _31=0
      for _32 in range(0,_2):
       _31 += ((_6[_32] - _0[_32]) * _24[_32])
      _23[_26] = _31
      _22[_26] = self.__nidxs[_27]
      _26 += 1
    return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(self.__model,_7,_23,_22))
  @staticmethod
  def _match_transpose_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_transpose_(*args):
    if len(args) != 0: return False
    return True
  def _transpose_alt_(self,):
    return self._transpose_()
  def _transpose_(self,):
   if (int((self.__shape).shape[0])==0):
    return (self)
   else:
    if (int((self.__shape).shape[0])==1):
     return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(self.__model,numpy.array([1,self.__shape[0]], dtype=numpy.dtype(numpy.int32)),self.__sp,self.__nidxs))
    else:
     if (int((self.__shape).shape[0])==2):
      _0=self.__shape[0]
      _1=self.__shape[1]
      _2=numpy.array([_1,_0], dtype=numpy.dtype(numpy.int32))
      if (self.__sp is not None):
       _3=numpy.zeros((int((self.__nidxs).shape[0]),), dtype=numpy.dtype(numpy.int32))
       _4=numpy.zeros((int((self.__sp).shape[0]),), dtype=numpy.dtype(numpy.int64))
       _5=numpy.zeros(((_1 + 1),), dtype=numpy.dtype(numpy.int32))
       for _6 in range(0,int((self.__sp).shape[0])):
        _5[(1 + (self.__sp[_6] % _1))] += 1
       for _7 in range(0,_1):
        _5[(_7 + 1)] += _5[_7]
       for _8 in range(0,int((self.__sp).shape[0])):
        _9=(self.__sp[_8] // _1)
        _10=(self.__sp[_8] % _1)
        _3[_5[_10]] = self.__nidxs[_8]
        _4[_5[_10]] = ((_10 * _0) + _9)
        _5[_10] += 1
       return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(self.__model,_2,_4,_3))
      else:
       _11=numpy.array([self.__nidxs[((_13 * _1) + _12)] for _12 in range(0,_1) for _13 in range(0,_1)], dtype=numpy.dtype(numpy.int32))
       return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(self.__model,_2,None,_11))
     else:
      raise mosek_fusion_DimensionError._ctor_S("Invalid shape for transpose")
  @staticmethod
  def _match_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _slice_alt_II(self,_t__0,_t__1):
    return self._slice_II(numpy.int32(__0),numpy.int32(__1))
  def _slice_II(self,_0,_1):
   if (int((self.__shape).shape[0])!=1):
    raise mosek_fusion_DimensionError._ctor_S("Invalid index dimension")
   if ((_0 < 0) or ((_0 >= _1) or (_1 > self.__size))):
    raise mosek_fusion_IndexError._ctor_S("Invalid index")
   if (self.__sp is None):
    return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(self.__model,numpy.array([(_1 - _0)], dtype=numpy.dtype(numpy.int32)),None,numpy.array([self.__nidxs[_2] for _2 in range(_0,_1)], dtype=numpy.dtype(numpy.int32))))
   else:
    _3=0
    for _4 in range(0,int((self.__sp).shape[0])):
     if ((_0 <= self.__sp[_4]) and (self.__sp[_4] < _1)):
      _3 += 1
    _5=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
    _6=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int64))
    _7=0
    for _8 in range(0,int((self.__sp).shape[0])):
     if ((_0 <= self.__sp[_8]) and (self.__sp[_8] < _1)):
      _5[_7] = self.__nidxs[_8]
      _6[_7] = (self.__sp[_7] - _0)
      _7 += 1
    return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(self.__model,numpy.array([(_1 - _0)], dtype=numpy.dtype(numpy.int32)),_6,_5))
  @staticmethod
  def _match_reshape__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_reshape__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _reshape_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._reshape__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _reshape__3I(self,_0):
   if (mosek.fusion.Set._size__3I(_0)!=mosek.fusion.Set._size__3I(self.__shape)):
    raise mosek_fusion_DimensionError._ctor_S("Incompatible shape for resize")
   return (mosek_fusion_ParameterImpl._ctor_Lmosek_4fusion_4Model_2_3I_3J_3I(self.__model,_0,self.__sp,self.__nidxs))
  @staticmethod
  def _match_asExpr_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_asExpr_(*args):
    if len(args) != 0: return False
    return True
  def _asExpr_alt_(self,):
    return self._asExpr_()
  def _asExpr_(self,):
   return (mosek_fusion_ExprParameter._ctor_Lmosek_4fusion_4Parameter_2(self))
  @staticmethod
  def _match_getSize_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getSize_(*args):
    if len(args) != 0: return False
    return True
  def _getSize_alt_(self,):
    return self._getSize_()
  def _getSize_(self,):
   return numpy.int64(mosek.fusion.Set._size__3I(self.__shape))
  @staticmethod
  def _match_getNumNonzero_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getNumNonzero_(*args):
    if len(args) != 0: return False
    return True
  def _getNumNonzero_alt_(self,):
    return self._getNumNonzero_()
  def _getNumNonzero_(self,):
   return numpy.int32(int((self.__nidxs).shape[0]))
  @staticmethod
  def _match_getND_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getND_(*args):
    if len(args) != 0: return False
    return True
  def _getND_alt_(self,):
    return self._getND_()
  def _getND_(self,):
   return numpy.int32(int((self.__shape).shape[0]))
  @staticmethod
  def _match_getShape_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getShape_(*args):
    if len(args) != 0: return False
    return True
  def _getShape_alt_(self,):
    return self._getShape_()
  def _getShape_(self,):
   return (mosek.fusion.Utils.Tools._arraycopy__3I(self.__shape))
  @staticmethod
  def _match_getDim_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_getDim_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _getDim_alt_I(self,_t__0):
    return self._getDim_I(numpy.int32(__0))
  def _getDim_I(self,_0):
   return numpy.int32(self.__shape[_0])
  @staticmethod
  def _match_getAllIndexes__3II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_getAllIndexes__3II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match_I__(_1))
  def _getAllIndexes_alt__3II(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.int32(_t__1)
   _1_res = self._getAllIndexes__3II(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _getAllIndexes__3II(self,_0,_1):
   for _2 in range(0,int((self.__nidxs).shape[0])):
    _0[(_1 + _2)] = self.__nidxs[_2]
  @staticmethod
  def _match_getIndex_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_getIndex_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _getIndex_alt_I(self,_t__0):
    return self._getIndex_I(numpy.int32(__0))
  def _getIndex_I(self,_0):
   return numpy.int32(self.__nidxs[_0])
  @staticmethod
  def _match_getValue_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getValue_(*args):
    if len(args) != 0: return False
    return True
  def _getValue_alt_(self,):
    return self._getValue_()
  def _getValue_(self,):
   return (self.__model._getParameterValue__3I(self.__nidxs))
  @staticmethod
  def _match_setValue__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5D__(_0))
  @staticmethod
  def _match_alt_setValue__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5D__(_0))
  def _setValue_alt__3_5D(self,_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1_res = self._setValue__3_5D(_0)
   return _1_res
  def _setValue__3_5D(self,_0):
   if ((self.getND()!=2) or ((int((_0).shape[0])!=self.__shape[0]) or (int((_0).shape[1])!=self.__shape[1]))):
    raise mosek_fusion_LengthError._ctor_S("Mismatching value shape")
   if (self.__sp is None):
    _1=numpy.zeros(((self.__shape[0] * self.__shape[1]),), dtype=numpy.dtype(numpy.float64))
    for _2 in range(0,self.__shape[0]):
     for _3 in range(0,self.__shape[1]):
      _1[((_2 * self.__shape[1]) + _3)] = _0[_2,_3]
    self.__model._setParameterValue__3I_3D(self.__nidxs,_1)
   else:
    _4=numpy.zeros((int((self.__sp).shape[0]),), dtype=numpy.dtype(numpy.float64))
    for _5 in range(0,int((self.__sp).shape[0])):
     _4[_5] = _0[(self.__sp[_5] // self.__shape[1]),(self.__sp[_5] % self.__shape[1])]
    self.__model._setParameterValue__3I_3D(self.__nidxs,_4)
  @staticmethod
  def _match_setValue__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_setValue__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  def _setValue_alt__3D(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = self._setValue__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _setValue__3D(self,_0):
   if (self.__sp is not None):
    if (int((_0).shape[0])!=self.getSize()):
     raise mosek_fusion_LengthError._ctor_S("Length of value array is incorrect")
    else:
     _1=numpy.zeros((int((self.__nidxs).shape[0]),), dtype=numpy.dtype(numpy.float64))
     for _2 in range(0,int((self.__nidxs).shape[0])):
      _1[_2] = _0[self.__sp[_2]]
     self.__model._setParameterValue__3I_3D(self.__nidxs,_1)
   else:
    if (int((_0).shape[0])!=int((self.__nidxs).shape[0])):
     raise mosek_fusion_LengthError._ctor_S("Length of value array is incorrect for sparse parameter")
    else:
     self.__model._setParameterValue__3I_3D(self.__nidxs,_0)
  @staticmethod
  def _match_setValue_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_D__(_0))
  @staticmethod
  def _match_alt_setValue_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_D__(_0))
  def _setValue_alt_D(self,_t__0):
    return self._setValue_D(numpy.float64(__0))
  def _setValue_D(self,_0):
   _1=numpy.zeros((self.__size,), dtype=numpy.dtype(numpy.float64))
   for _2 in range(0,self.__size):
    _1[_2] = _0
   self.__model._setParameterValue__3I_3D(self.__nidxs,_1)
  @staticmethod
  def _match_getModel_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getModel_(*args):
    if len(args) != 0: return False
    return True
  def _getModel_alt_(self,):
    return self._getModel_()
  def _getModel_(self,):
   return (self.__model)
 return ParameterImpl
mosek_fusion_ParameterImpl=__mk_mosek_fusion_ParameterImpl()
del __mk_mosek_fusion_ParameterImpl
def __mk_mosek_fusion_ExprRangeDomain():
 class ExprRangeDomain(mosek_fusion_ExprDomain,object):
  __slots__ = ['dom','expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprRangeDomain.ctor(mosek.fusion.Expression,mosek.fusion.RangeDomain)')
  def toDJCTerm(self,*args):
    if False: pass
    elif mosek_fusion_ExprRangeDomain._match_toDJCTerm_(*args): 
      return self._toDJCTerm_(*args)
    elif mosek_fusion_ExprRangeDomain._match_alt_toDJCTerm_(*args): 
      return self._toDJCTerm_alt_(*args)
    else:
      raise ValueError('Invalid argument list toDJCTerm('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprRangeDomain.toDJCTerm()')
  def __repr__(self): return 'mosek.fusion.ExprRangeDomain'
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(expr,dom):
    o = ExprRangeDomain.__new__(ExprRangeDomain)
    o._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(expr,dom)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 2: return False
    expr,dom, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_match_Lmosek_4fusion_4RangeDomain_2__(dom))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(*args):
    if len(args) != 2: return False
    expr,dom, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_alt_match_Lmosek_4fusion_4RangeDomain_2__(dom))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(self,expr,dom):
    self._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(expr,dom)
  def _ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(self,expr,dom):
   (self.expr) = expr
   (self.dom) = dom
  @staticmethod
  def _match_toDJCTerm_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toDJCTerm_(*args):
    if len(args) != 0: return False
    return True
  def _toDJCTerm_alt_(self,):
    return self._toDJCTerm_()
  def _toDJCTerm_(self,):
   return (mosek.fusion.DJC._term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4RangeDomain_2(self.expr,self.dom))
 return ExprRangeDomain
mosek_fusion_ExprRangeDomain=__mk_mosek_fusion_ExprRangeDomain()
del __mk_mosek_fusion_ExprRangeDomain
def __mk_mosek_fusion_ExprPSDDomain():
 class ExprPSDDomain(object):
  __slots__ = ['dom','expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprPSDDomain.ctor(mosek.fusion.Expression,mosek.fusion.PSDDomain)')
  def __repr__(self): return 'mosek.fusion.ExprPSDDomain'
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(expr,dom):
    o = ExprPSDDomain.__new__(ExprPSDDomain)
    o._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(expr,dom)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 2: return False
    expr,dom, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_match_Lmosek_4fusion_4PSDDomain_2__(dom))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(*args):
    if len(args) != 2: return False
    expr,dom, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_alt_match_Lmosek_4fusion_4PSDDomain_2__(dom))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(self,expr,dom):
    self._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(expr,dom)
  def _ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4PSDDomain_2(self,expr,dom):
   (self.expr) = expr
   (self.dom) = dom
 return ExprPSDDomain
mosek_fusion_ExprPSDDomain=__mk_mosek_fusion_ExprPSDDomain()
del __mk_mosek_fusion_ExprPSDDomain
def __mk_mosek_fusion_ExprConicDomain():
 class ExprConicDomain(object):
  __slots__ = ['dom','expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprConicDomain.ctor(mosek.fusion.Expression,mosek.fusion.ConeDomain)')
  def __repr__(self): return 'mosek.fusion.ExprConicDomain'
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(expr,dom):
    o = ExprConicDomain.__new__(ExprConicDomain)
    o._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(expr,dom)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 2: return False
    expr,dom, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_match_Lmosek_4fusion_4ConeDomain_2__(dom))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(*args):
    if len(args) != 2: return False
    expr,dom, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_alt_match_Lmosek_4fusion_4ConeDomain_2__(dom))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(self,expr,dom):
    self._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(expr,dom)
  def _ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4ConeDomain_2(self,expr,dom):
   (self.expr) = expr
   (self.dom) = dom
 return ExprConicDomain
mosek_fusion_ExprConicDomain=__mk_mosek_fusion_ExprConicDomain()
del __mk_mosek_fusion_ExprConicDomain
def __mk_mosek_fusion_ExprLinearDomain():
 class ExprLinearDomain(mosek_fusion_ExprDomain,object):
  __slots__ = ['dom','expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprLinearDomain.ctor(mosek.fusion.Expression,mosek.fusion.LinearDomain)')
  def toDJCTerm(self,*args):
    if False: pass
    elif mosek_fusion_ExprLinearDomain._match_toDJCTerm_(*args): 
      return self._toDJCTerm_(*args)
    elif mosek_fusion_ExprLinearDomain._match_alt_toDJCTerm_(*args): 
      return self._toDJCTerm_alt_(*args)
    else:
      raise ValueError('Invalid argument list toDJCTerm('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprLinearDomain.toDJCTerm()')
  def __repr__(self): return 'mosek.fusion.ExprLinearDomain'
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(expr,dom):
    o = ExprLinearDomain.__new__(ExprLinearDomain)
    o._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(expr,dom)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 2: return False
    expr,dom, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_match_Lmosek_4fusion_4LinearDomain_2__(dom))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(*args):
    if len(args) != 2: return False
    expr,dom, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_alt_match_Lmosek_4fusion_4LinearDomain_2__(dom))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(self,expr,dom):
    self._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(expr,dom)
  def _ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(self,expr,dom):
   (self.expr) = expr
   (self.dom) = dom
  @staticmethod
  def _match_toDJCTerm_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toDJCTerm_(*args):
    if len(args) != 0: return False
    return True
  def _toDJCTerm_alt_(self,):
    return self._toDJCTerm_()
  def _toDJCTerm_(self,):
   return (mosek.fusion.DJC._term_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4LinearDomain_2(self.expr,self.dom))
 return ExprLinearDomain
mosek_fusion_ExprLinearDomain=__mk_mosek_fusion_ExprLinearDomain()
del __mk_mosek_fusion_ExprLinearDomain
def __mk_mosek_fusion_BaseExpression():
 class BaseExpression(mosek_fusion_Expression,object):
  __slots__ = ['_BaseExpression__evaluated','_BaseExpression__has_evaluation','_BaseExpression__owner','_BaseExpression__shape']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Model_2_3I(*args): 
      self._ctor_init_Lmosek_4fusion_4Model_2_3I(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Model_2_3I(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Model_2_3I(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.BaseExpression.ctor(mosek.fusion.Model,array(int32,ndim=1))')
  def getND(self,*args):
    if False: pass
    elif mosek_fusion_BaseExpression._match_getND_(*args): 
      return self._getND_(*args)
    elif mosek_fusion_BaseExpression._match_alt_getND_(*args): 
      return self._getND_alt_(*args)
    else:
      raise ValueError('Invalid argument list getND('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseExpression.getND()')
  def pick(self,*args):
    if False: pass
    elif mosek_fusion_BaseExpression._match_pick__3I(*args): 
      return self._pick__3I(*args)
    elif mosek_fusion_BaseExpression._match_alt_pick__3I(*args): 
      return self._pick_alt__3I(*args)
    elif mosek_fusion_BaseExpression._match_pick__3_5I(*args): 
      return self._pick__3_5I(*args)
    elif mosek_fusion_BaseExpression._match_alt_pick__3_5I(*args): 
      return self._pick_alt__3_5I(*args)
    else:
      raise ValueError('Invalid argument list pick('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseExpression.pick(array(int32,ndim=1))\n\tmosek.fusion.BaseExpression.pick(array(int32,ndim=2))')
  def getDim(self,*args):
    if False: pass
    elif mosek_fusion_BaseExpression._match_getDim_I(*args): 
      return self._getDim_I(*args)
    elif mosek_fusion_BaseExpression._match_alt_getDim_I(*args): 
      return self._getDim_alt_I(*args)
    else:
      raise ValueError('Invalid argument list getDim('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseExpression.getDim(int32)')
  def recursive_eval(self,*args):
    if False: pass
    elif mosek_fusion_BaseExpression._match_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_BaseExpression._match_alt_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._recursive_1eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list recursive_eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseExpression.recursive_eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def getShape(self,*args):
    if False: pass
    elif mosek_fusion_BaseExpression._match_getShape_(*args): 
      return self._getShape_(*args)
    elif mosek_fusion_BaseExpression._match_alt_getShape_(*args): 
      return self._getShape_alt_(*args)
    else:
      raise ValueError('Invalid argument list getShape('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseExpression.getShape()')
  def compress_when_caching(self,*args):
    if False: pass
    elif mosek_fusion_BaseExpression._match_compress_1when_1caching_(*args): 
      return self._compress_1when_1caching_(*args)
    elif mosek_fusion_BaseExpression._match_alt_compress_1when_1caching_(*args): 
      return self._compress_1when_1caching_alt_(*args)
    else:
      raise ValueError('Invalid argument list compress_when_caching('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseExpression.compress_when_caching()')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_BaseExpression._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_BaseExpression._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseExpression.toString()')
  def slice(self,*args):
    if False: pass
    elif mosek_fusion_BaseExpression._match_slice_II(*args): 
      return self._slice_II(*args)
    elif mosek_fusion_BaseExpression._match_alt_slice_II(*args): 
      return self._slice_alt_II(*args)
    elif mosek_fusion_BaseExpression._match_slice__3I_3I(*args): 
      return self._slice__3I_3I(*args)
    elif mosek_fusion_BaseExpression._match_alt_slice__3I_3I(*args): 
      return self._slice_alt__3I_3I(*args)
    else:
      raise ValueError('Invalid argument list slice('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseExpression.slice(int32,int32)\n\tmosek.fusion.BaseExpression.slice(array(int32,ndim=1),array(int32,ndim=1))')
  def index(self,*args):
    if False: pass
    elif mosek_fusion_BaseExpression._match_index_I(*args): 
      return self._index_I(*args)
    elif mosek_fusion_BaseExpression._match_alt_index_I(*args): 
      return self._index_alt_I(*args)
    elif mosek_fusion_BaseExpression._match_index__3I(*args): 
      return self._index__3I(*args)
    elif mosek_fusion_BaseExpression._match_alt_index__3I(*args): 
      return self._index_alt__3I(*args)
    else:
      raise ValueError('Invalid argument list index('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseExpression.index(int32)\n\tmosek.fusion.BaseExpression.index(array(int32,ndim=1))')
  def getModel(self,*args):
    if False: pass
    elif mosek_fusion_BaseExpression._match_getModel_(*args): 
      return self._getModel_(*args)
    elif mosek_fusion_BaseExpression._match_alt_getModel_(*args): 
      return self._getModel_alt_(*args)
    else:
      raise ValueError('Invalid argument list getModel('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseExpression.getModel()')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_BaseExpression._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_BaseExpression._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_BaseExpression._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_BaseExpression._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseExpression.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.BaseExpression.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def getSize(self,*args):
    if False: pass
    elif mosek_fusion_BaseExpression._match_getSize_(*args): 
      return self._getSize_(*args)
    elif mosek_fusion_BaseExpression._match_alt_getSize_(*args): 
      return self._getSize_alt_(*args)
    else:
      raise ValueError('Invalid argument list getSize('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.BaseExpression.getSize()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.BaseExpression: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Model_2_3I(owner,shape):
    o = BaseExpression.__new__(BaseExpression)
    o._ctor_init_Lmosek_4fusion_4Model_2_3I(owner,shape)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Model_2_3I(*args):
    if len(args) != 2: return False
    owner,shape, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(owner) and __arg_match__3I__(shape))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Model_2_3I(*args):
    if len(args) != 2: return False
    owner,shape, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(owner) and __arg_alt_match__3I__(shape))
  def _ctor_alt_init_Lmosek_4fusion_4Model_2_3I(self,owner,shape):
    self._ctor_init_Lmosek_4fusion_4Model_2_3I(owner,numpy.array(shape,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_Lmosek_4fusion_4Model_2_3I(self,owner,shape):
   (self.__shape) = shape
   (self.__owner) = owner
   (self.__has_evaluation) = False
   (self.__evaluated) = None
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return ("Expression()")
  def _printStack_alt_Lmosek_4fusion_4WorkStack_2(self,_t__0):
    return self._printStack_Lmosek_4fusion_4WorkStack_2(_0)
  def _printStack_Lmosek_4fusion_4WorkStack_2(self,_0):
   _1=(_0.i32)
   _2=(_0.i64)
   _3=(_0.f64)
   _4=(_0.ptr_base)
   _5=(_0.nidxs_base)
   _6=(_0.cof_base)
   _7=(_0.shape_base)
   _8=(_0.codeptr_base)
   _9=(_0.code_base)
   _10=(_0.cconst_base)
   _11=(_0.sp_base)
   _12=(_0.nelem)
   _13=(_0.nnz)
   _14=(_0.ncodeatom)
   _15=(_0.nd)
   _16=(_0.hassp)
  @staticmethod
  def _match_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _recursive_1eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   if _3:
    if self.__has_evaluation:
     self.__evaluated.copy_expr(_0)
    else:
     self.eval(_0,_1,_2,_3)
     self.__evaluated = mosek_fusion_WorkStack._ctor_()
     if self.compress_when_caching():
      mosek_fusion_ExprCompress._ctor_Lmosek_4fusion_4Expression_2(self)._eval_1continue_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(self.__evaluated,_0,_2)
      self.__evaluated.copy_expr(_0)
     else:
      _0.copy_expr(self.__evaluated)
     self.__has_evaluation = True
   else:
    self.eval(_0,_1,_2,_3)
  @staticmethod
  def _match_compress_1when_1caching_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_compress_1when_1caching_(*args):
    if len(args) != 0: return False
    return True
  def _compress_1when_1caching_alt_(self,):
    return self._compress_1when_1caching_()
  def _compress_1when_1caching_(self,):
   return (False)
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(self,_t__0,_t__1,_t__2):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(_0,_1,_2)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(self,_0,_1,_2):
   self.recursive_eval(_0,_1,_2,False)
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   pass
  @staticmethod
  def _match_pick__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5I__(_0))
  @staticmethod
  def _match_alt_pick__3_5I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5I__(_0))
  def _pick_alt__3_5I(self,_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3_5I(_0)
   return _1_res
  def _pick__3_5I(self,_0):
   return (mosek_fusion_ExprPick._ctor_Lmosek_4fusion_4Expression_2_3_5I(self,_0))
  @staticmethod
  def _match_pick__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_pick__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _pick_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._pick__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _pick__3I(self,_0):
   _1=numpy.zeros((int((_0).shape[0]),1,), dtype=numpy.dtype(numpy.int32))
   for _2 in range(0,int((_0).shape[0])):
    _1[_2,0] = _0[_2]
   return (mosek_fusion_ExprPick._ctor_Lmosek_4fusion_4Expression_2_3_5I(self,_1))
  @staticmethod
  def _match_index__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_index__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  def _index_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self._index__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _index__3I(self,_0):
   _1=numpy.zeros((1,int((_0).shape[0]),), dtype=numpy.dtype(numpy.int32))
   for _2 in range(0,int((_0).shape[0])):
    _1[0,_2] = _0[_2]
   return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)),mosek_fusion_ExprPick._ctor_Lmosek_4fusion_4Expression_2_3_5I(self,_1)))
  @staticmethod
  def _match_index_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_index_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _index_alt_I(self,_t__0):
    return self._index_I(numpy.int32(__0))
  def _index_I(self,_0):
   _1=numpy.zeros((1,1,), dtype=numpy.dtype(numpy.int32))
   _1[0,0] = _0
   return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)),mosek_fusion_ExprPick._ctor_Lmosek_4fusion_4Expression_2_3_5I(self,_1)))
  @staticmethod
  def _match_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  def _slice_alt__3I_3I(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self._slice__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _slice__3I_3I(self,_0,_1):
   return (mosek_fusion_ExprSlice._ctor_Lmosek_4fusion_4Expression_2_3I_3I(self,_0,_1))
  @staticmethod
  def _match_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _slice_alt_II(self,_t__0,_t__1):
    return self._slice_II(numpy.int32(__0),numpy.int32(__1))
  def _slice_II(self,_0,_1):
   return (mosek_fusion_ExprSlice._ctor_Lmosek_4fusion_4Expression_2_3I_3I(self,numpy.array([_0], dtype=numpy.dtype(numpy.int32)),numpy.array([_1], dtype=numpy.dtype(numpy.int32))))
  @staticmethod
  def _match_getSize_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getSize_(*args):
    if len(args) != 0: return False
    return True
  def _getSize_alt_(self,):
    return self._getSize_()
  def _getSize_(self,):
   return numpy.int64(mosek.fusion.Set._size__3I(self.__shape))
  @staticmethod
  def _match_getND_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getND_(*args):
    if len(args) != 0: return False
    return True
  def _getND_alt_(self,):
    return self._getND_()
  def _getND_(self,):
   return numpy.int32(int((self.__shape).shape[0]))
  @staticmethod
  def _match_getDim_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_getDim_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _getDim_alt_I(self,_t__0):
    return self._getDim_I(numpy.int32(__0))
  def _getDim_I(self,_0):
   return numpy.int32(self.__shape[_0])
  @staticmethod
  def _match_getShape_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getShape_(*args):
    if len(args) != 0: return False
    return True
  def _getShape_alt_(self,):
    return self._getShape_()
  def _getShape_(self,):
   return (mosek.fusion.Utils.Tools._arraycopy__3I(self.__shape))
  @staticmethod
  def _match_getModel_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getModel_(*args):
    if len(args) != 0: return False
    return True
  def _getModel_alt_(self,):
    return self._getModel_()
  def _getModel_(self,):
   return (self.__owner)
  @staticmethod
  def _modelFrom_alt__3Lmosek_4fusion_4Expression_2(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_BaseExpression._modelFrom__3Lmosek_4fusion_4Expression_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _modelFrom__3Lmosek_4fusion_4Expression_2(_0):
   if (int((_0).shape[0])==0):
    return (None)
   else:
    _1=_0[0].getModel()
    for _2 in range(1,int((_0).shape[0])):
     _1 = mosek.fusion.BaseExpression._modelFrom_Lmosek_4fusion_4Model_2Lmosek_4fusion_4Expression_2(_1,_0[_2])
    return (_1)
  @staticmethod
  def _modelFrom_alt_Lmosek_4fusion_4Model_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_BaseExpression._modelFrom_Lmosek_4fusion_4Model_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _modelFrom_Lmosek_4fusion_4Model_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.BaseExpression._modelFrom_Lmosek_4fusion_4Model_2Lmosek_4fusion_4Model_2(_0,_1.getModel()))
  @staticmethod
  def _modelFrom_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_BaseExpression._modelFrom_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _modelFrom_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.BaseExpression._modelFrom_Lmosek_4fusion_4Model_2Lmosek_4fusion_4Model_2(_0.getModel(),_1.getModel()))
  @staticmethod
  def _modelFrom_alt_Lmosek_4fusion_4Model_2Lmosek_4fusion_4Model_2(_t__0,_t__1):
    return mosek_fusion_BaseExpression._modelFrom_Lmosek_4fusion_4Model_2Lmosek_4fusion_4Model_2(_0,_1)
  @staticmethod
  def _modelFrom_Lmosek_4fusion_4Model_2Lmosek_4fusion_4Model_2(_0,_1):
   if (_0 is None):
    return (_1)
   elif ((_1 is not None) and (_0 is not _1)): # bld/grindsted/final/default/src/fusion/BaseExpression.monty:509:16-39
    raise mosek_fusion_ModelError._ctor_S("Mixing different models")
   else:
    return (_0)
 return BaseExpression
mosek_fusion_BaseExpression=__mk_mosek_fusion_BaseExpression()
del __mk_mosek_fusion_BaseExpression
def __mk_mosek_fusion_ExprParameter():
 class ExprParameter(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprParameter__p']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Parameter_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Parameter_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Parameter_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Parameter_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprParameter.ctor(mosek.fusion.Parameter)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprParameter._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprParameter._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprParameter._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprParameter._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprParameter.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprParameter.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def slice(self,*args):
    if False: pass
    elif mosek_fusion_ExprParameter._match_slice_II(*args): 
      return self._slice_II(*args)
    elif mosek_fusion_ExprParameter._match_alt_slice_II(*args): 
      return self._slice_alt_II(*args)
    elif mosek_fusion_ExprParameter._match_slice__3I_3I(*args): 
      return self._slice__3I_3I(*args)
    elif mosek_fusion_ExprParameter._match_alt_slice__3I_3I(*args): 
      return self._slice_alt__3I_3I(*args)
    else:
      raise ValueError('Invalid argument list slice('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprParameter.slice(int32,int32)\n\tmosek.fusion.ExprParameter.slice(array(int32,ndim=1),array(int32,ndim=1))')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprParameter._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprParameter._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprParameter.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprParameter: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Parameter_2(p):
    o = ExprParameter.__new__(ExprParameter)
    o._ctor_init_Lmosek_4fusion_4Parameter_2(p)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 1: return False
    p, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(p))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 1: return False
    p, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(p))
  def _ctor_alt_init_Lmosek_4fusion_4Parameter_2(self,p):
    self._ctor_init_Lmosek_4fusion_4Parameter_2(p)
  def _ctor_init_Lmosek_4fusion_4Parameter_2(self,p):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,p.getModel(),p.getShape())
   (self.__p) = p
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__p.recursive_eval(_0,_1,_2,_3)
  @staticmethod
  def _match_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_slice__3I_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1))
  def _slice_alt__3I_3I(self,_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = self._slice__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _slice__3I_3I(self,_0,_1):
   return (mosek_fusion_ExprParameter._ctor_Lmosek_4fusion_4Parameter_2(self.__p.slice(_0,_1)))
  @staticmethod
  def _match_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_slice_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _slice_alt_II(self,_t__0,_t__1):
    return self._slice_II(numpy.int32(__0),numpy.int32(__1))
  def _slice_II(self,_0,_1):
   return (mosek_fusion_ExprParameter._ctor_Lmosek_4fusion_4Parameter_2(self.__p.slice(_0,_1)))
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprParameter(")._a_S(self.__p.toString())._a_S(")")._toString_())
 return ExprParameter
mosek_fusion_ExprParameter=__mk_mosek_fusion_ExprParameter()
del __mk_mosek_fusion_ExprParameter
def __mk_mosek_fusion_ExprMulParamScalarExpr():
 class ExprMulParamScalarExpr(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprMulParamScalarExpr__e','_ExprMulParamScalarExpr__p']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprMulParamScalarExpr.ctor(mosek.fusion.Parameter,mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulParamScalarExpr._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulParamScalarExpr._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulParamScalarExpr._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprMulParamScalarExpr._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulParamScalarExpr.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprMulParamScalarExpr.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulParamScalarExpr._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprMulParamScalarExpr._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulParamScalarExpr.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprMulParamScalarExpr: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e):
    o = ExprMulParamScalarExpr.__new__(ExprMulParamScalarExpr)
    o._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    p,e, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(p) and __arg_match_Lmosek_4fusion_4Expression_2__(e))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    p,e, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(p) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(e))
  def _ctor_alt_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(self,p,e):
    self._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e)
  def _ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(self,p,e):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,mosek.fusion.BaseExpression._modelFrom_Lmosek_4fusion_4Model_2Lmosek_4fusion_4Expression_2(p.getModel(),e),p.getShape())
   (self.__p) = p
   (self.__e) = e
   if (e.getND()!=0):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions for multiplication")
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__e.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.i32)
   _5=(_1.i64)
   _6=(_1.f64)
   _7=(_1.nd)
   if (_7!=0):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operator shape for multiplication")
   _8=(_1.nelem)
   _9=(_1.nnz)
   _10=(_1.hassp)
   _11=(_1.ptr_base)
   _12=(_1.ncodeatom)
   _13=(_1.sp_base)
   _14=(_1.nidxs_base)
   _15=(_1.cof_base)
   _16=(_1.cconst_base)
   _17=(_1.codeptr_base)
   _18=(_1.code_base)
   _19=self.__p.getND()
   _20=self.__p.getNumNonzero()
   _21=(_9 * self.__p.getNumNonzero())
   _22=(self.__p.getNumNonzero() < self.__p.getSize())
   _23=(((_12 * _20) + (_21 * 4)) if ((_12 > 0) ) else (_21 * 3))
   _24=_2.alloci32(self.__p.getNumNonzero())
   _25=(_2.i32)
   self.__p.getAllIndexes(_25,_24)
   _0.alloc_expr(_19,_20,_21,_22,_23)
   _26=(_0.i64)
   _27=(_0.f64)
   _28=(_0.i32)
   _29=(_0.ptr_base)
   _30=(_0.nidxs_base)
   _31=(_0.sp_base)
   _32=(_0.cof_base)
   _33=(_0.hassp)
   _34=(_0.shape_base)
   _35=(_0.codeptr_base)
   _36=(_0.code_base)
   _37=(_0.cconst_base)
   for _38 in range(0,_21):
    _27[(_32 + _38)] = 0.0
   for _39 in range(0,(_20 + 1)):
    _28[(_29 + _39)] = (_39 * _9)
   for _40 in range(0,_19):
    _28[(_34 + _40)] = self.__p.getDim(_40)
   if _33:
    self.__p.getSp(_26,_31)
   for _41 in range(0,_21):
    _26[(_30 + _41)] = (- 999)
   _42=0
   for _43 in range(0,_20):
    for _44 in range(0,_9):
     _26[(_30 + _42)] = _5[(_14 + _44)]
     _42 += 1
   if (_23 > 0):
    _28[_35] = 0
   if (_12==0):
    _45=0
    _46=0
    for _47 in range(0,_20):
     for _48 in range(0,_9):
      _28[(_36 + _46)] = 2
      _27[(_37 + _46)] = _6[(_15 + _48)]
      _46 += 1
      _28[(_36 + _46)] = 1
      _27[(_37 + _46)] = _25[(_24 + _47)]
      _46 += 1
      _28[(_36 + _46)] = 5
      _46 += 1
      _28[((_35 + _45) + 1)] = _46
      _45 += 1
   else:
    _49=0
    _50=0
    for _51 in range(0,_20):
     for _52 in range(0,_9):
      _28[(_36 + _49)] = 2
      _27[(_37 + _49)] = _6[(_15 + _52)]
      _49 += 1
      for _53 in range(_4[(_17 + _52)],_4[((_17 + _52) + 1)]):
       _28[(_36 + _49)] = _4[(_18 + _53)]
       _27[(_37 + _49)] = _6[(_16 + _53)]
       _49 += 1
      _28[(_36 + _49)] = 3
      _49 += 1
      _28[(_36 + _49)] = 1
      _27[(_37 + _49)] = _25[(_24 + _51)]
      _49 += 1
      _28[(_36 + _49)] = 5
      _49 += 1
      _28[((_35 + _50) + 1)] = _49
      _50 += 1
   _2.clear()
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprMulParamScalarExpr(")._a_S(self.__p.toString())._a_S(",")._a_S(self.__e.toString())._a_S(")")._toString_())
 return ExprMulParamScalarExpr
mosek_fusion_ExprMulParamScalarExpr=__mk_mosek_fusion_ExprMulParamScalarExpr()
del __mk_mosek_fusion_ExprMulParamScalarExpr
def __mk_mosek_fusion_ExprMulParamScalar():
 class ExprMulParamScalar(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprMulParamScalar__e','_ExprMulParamScalar__p']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprMulParamScalar.ctor(mosek.fusion.Parameter,mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulParamScalar._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulParamScalar._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulParamScalar._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprMulParamScalar._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulParamScalar.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprMulParamScalar.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulParamScalar._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprMulParamScalar._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulParamScalar.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprMulParamScalar: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e):
    o = ExprMulParamScalar.__new__(ExprMulParamScalar)
    o._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    p,e, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(p) and __arg_match_Lmosek_4fusion_4Expression_2__(e))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    p,e, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(p) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(e))
  def _ctor_alt_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(self,p,e):
    self._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e)
  def _ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(self,p,e):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,mosek.fusion.BaseExpression._modelFrom_Lmosek_4fusion_4Model_2Lmosek_4fusion_4Expression_2(p.getModel(),e),e.getShape())
   (self.__p) = p
   (self.__e) = e
   if (p.getND()!=0):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions for multiplication")
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__e.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.i32)
   _5=(_1.i64)
   _6=(_1.f64)
   _7=(_1.nd)
   _8=(_1.nelem)
   _9=(_1.nnz)
   _10=(_1.hassp)
   _11=(_1.ptr_base)
   _12=(_1.ncodeatom)
   _13=(_1.shape_base)
   _14=(_1.sp_base)
   _15=(_1.nidxs_base)
   _16=(_1.cof_base)
   _17=(_1.cconst_base)
   _18=(_1.codeptr_base)
   _19=(_1.code_base)
   _20=_7
   _21=_8
   _22=_9
   _23=_10
   _24=((_9 * 3) if ((_12==0) ) else ((_9 * 4) + _12))
   _0.alloc_expr(_20,_21,_22,_23,_24)
   _25=(_0.i64)
   _26=(_0.f64)
   _27=(_0.i32)
   _28=(_0.ptr_base)
   _29=(_0.nidxs_base)
   _30=(_0.sp_base)
   _31=(_0.cof_base)
   _32=(_0.hassp)
   _33=(_0.shape_base)
   _34=(_0.codeptr_base)
   _35=(_0.code_base)
   _36=(_0.cconst_base)
   _37=self.__p.getIndex(0)
   for _38 in range(0,_22):
    _26[(_31 + _38)] = 0.0
   for _39 in range(0,(_21 + 1)):
    _27[(_28 + _39)] = _4[(_11 + _39)]
   for _40 in range(0,_20):
    _27[(_33 + _40)] = _4[(_13 + _40)]
   for _41 in range(0,_9):
    _25[(_29 + _41)] = _5[(_15 + _41)]
   if _32:
    for _42 in range(0,_21):
     _25[(_30 + _42)] = _5[(_14 + _42)]
   _43=0
   if (_24 > 0):
    _27[_34] = 0
   for _44 in range(0,_9):
    _27[(_35 + _43)] = 2
    _26[(_36 + _43)] = _6[(_16 + _44)]
    _43 += 1
    if (_12 > 0):
     for _45 in range(_4[(_18 + _44)],_4[((_18 + _44) + 1)]):
      _27[(_35 + _43)] = _4[(_19 + _45)]
      _26[(_36 + _43)] = _6[(_17 + _45)]
      _43 += 1
     _27[(_35 + _43)] = 3
     _43 += 1
    _27[(_35 + _43)] = 1
    _26[(_36 + _43)] = _37
    _43 += 1
    _27[(_35 + _43)] = 5
    _43 += 1
    _27[((_34 + _44) + 1)] = _43
   _2.clear()
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprMulParamScalar(")._a_S(self.__p.toString())._a_S(",")._a_S(self.__e.toString())._a_S(")")._toString_())
 return ExprMulParamScalar
mosek_fusion_ExprMulParamScalar=__mk_mosek_fusion_ExprMulParamScalar()
del __mk_mosek_fusion_ExprMulParamScalar
def __mk_mosek_fusion_ExprMulParamDiagLeft():
 class ExprMulParamDiagLeft(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprMulParamDiagLeft__e','_ExprMulParamDiagLeft__p']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprMulParamDiagLeft.ctor(mosek.fusion.Parameter,mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulParamDiagLeft._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulParamDiagLeft._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulParamDiagLeft._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprMulParamDiagLeft._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulParamDiagLeft.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprMulParamDiagLeft.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulParamDiagLeft._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprMulParamDiagLeft._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulParamDiagLeft.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprMulParamDiagLeft: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e):
    o = ExprMulParamDiagLeft.__new__(ExprMulParamDiagLeft)
    o._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    p,e, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(p) and __arg_match_Lmosek_4fusion_4Expression_2__(e))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    p,e, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(p) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(e))
  def _ctor_alt_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(self,p,e):
    self._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e)
  def _ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(self,p,e):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,mosek.fusion.BaseExpression._modelFrom_Lmosek_4fusion_4Model_2Lmosek_4fusion_4Expression_2(p.getModel(),e),numpy.array([e.getDim(1)], dtype=numpy.dtype(numpy.int32)))
   (self.__p) = p
   (self.__e) = e
   if ((p.getND()!=2) or (e.getND()!=2)):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions for multiplication")
   if ((p.getDim(1)!=e.getDim(0)) or (p.getDim(0)!=e.getDim(1))):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions for multiplication")
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__e.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.i32)
   _5=(_1.i64)
   _6=(_1.f64)
   _7=(_1.nd)
   _8=(_1.nelem)
   _9=(_1.nnz)
   _10=(_1.hassp)
   _11=(_1.ptr_base)
   _12=(_1.ncodeatom)
   _13=(_1.shape_base)
   _14=(_1.sp_base)
   _15=(_1.nidxs_base)
   _16=(_1.cof_base)
   _17=(_1.cconst_base)
   _18=(_1.codeptr_base)
   _19=(_1.code_base)
   if ((_7!=2) or ((_4[_13]!=self.__p.getDim(1)) or (_4[(_13 + 1)]!=self.__p.getDim(0)))):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions for multiplication")
   _20=self.__p.getNumNonzero()
   _21=_2.alloci64(_20)
   _22=(_2.i64)
   self.__p.getSp(_22,_21)
   _23=self.__p.getDim(0)
   _24=self.__p.getDim(1)
   _25=_4[_13]
   _26=_4[(_13 + 1)]
   _27=_2.alloci32(self.__p.getNumNonzero())
   _28=(_2.i32)
   self.__p.getAllIndexes(_28,_27)
   if _10:
    _29=_2.alloci32(_8)
    _30=_2.alloci32((_26 + 1))
    _31=(_2.i32)
    for _32 in range(0,(_26 + 1)):
     _31[(_30 + _32)] = 0
    for _33 in range(0,_8):
     _31[((_30 + (_5[(_14 + _33)] % _26)) + 1)] += 1
    for _34 in range(0,_26):
     _31[((_30 + _34) + 1)] += _31[(_30 + _34)]
    for _35 in range(0,_8):
     _36=(_5[(_14 + _35)] % _26)
     _31[(_29 + _31[(_30 + _36)])] = _35
     _31[(_30 + _36)] += 1
    _37=0
    _38=0
    _39=0
    _40=0
    _41=0
    while ((_41 < _20) and (_40 < _8)):
     _42=_31[(_29 + _40)]
     _43=(_22[(_21 + _41)] // _24)
     _44=(_5[(_14 + _42)] % _26)
     if (_43 < _44):
      while ((_41 < _20) and (_22[(_21 + _41)] < ((_43 + 1) * _24))):
       _41 += 1
     elif (_44 < _43): # bld/grindsted/final/default/src/fusion/Parameter.monty:2713:15-28
      while ((_40 < _20) and ((_5[(_14 + _31[(_29 + _40)])] % _26)==_44)):
       _40 += 1
     else:
      _45=_40
      _46=_41
      while ((_41 < _20) and (_22[(_21 + _41)] < ((_43 + 1) * _24))):
       _41 += 1
      while ((_40 < _20) and ((_5[(_14 + _31[(_29 + _40)])] % _26)==_44)):
       _40 += 1
      _47=False
      while ((_46 < _41) and (_45 < _40)):
       _48=(_22[(_21 + _46)] % _24)
       _49=_31[(_29 + _45)]
       _50=(_5[(_14 + _49)] // _26)
       if (_48 < _50):
        _46 += 1
       elif (_48 > _50): # bld/grindsted/final/default/src/fusion/Parameter.monty:2727:12-25
        _45 += 1
       else:
        _38 += (_4[((_11 + _49) + 1)] - _4[(_11 + _49)])
        _47 = True
        _51=(_4[((_11 + _49) + 1)] - _4[(_11 + _49)])
        _39 += (((_4[(_18 + _4[((_11 + _49) + 1)])] - _4[(_18 + _4[(_11 + _49)])]) + (4 * _51)) if ((_12 > 0) ) else (3 * _51))
        _46 += 1
        _45 += 1
      if _47:
       _37 += 1
    _52=1
    _53=(_37 < _23)
    _0.alloc_expr(_52,_37,_38,_53,_39)
    _54=(_0.ptr_base)
    _55=(_0.nidxs_base)
    _56=((_0.sp_base) if (_53 ) else _0.alloci64(_37))
    _57=(_0.cof_base)
    _58=(_0.hassp)
    _59=(_0.shape_base)
    _60=(_0.codeptr_base)
    _61=(_0.code_base)
    _62=(_0.cconst_base)
    _63=(_0.i64)
    _64=(_0.f64)
    _65=(_0.i32)
    if (_37 > 0):
     _65[_54] = 0
     if (_38 > 0):
      _65[_60] = 0
     _65[_59] = numpy.int32(_23)
     _66=0
     _67=0
     _68=0
     _69=0
     _70=0
     while ((_70 < _20) and (_69 < _8)):
      _71=_31[(_29 + _69)]
      _72=(_22[(_21 + _70)] // _24)
      _73=(_5[(_14 + _71)] % _26)
      if (_72 < _73):
       while ((_70 < _20) and (_22[(_21 + _70)] < ((_72 + 1) * _24))):
        _70 += 1
      elif (_73 < _72): # bld/grindsted/final/default/src/fusion/Parameter.monty:2779:15-28
       while ((_69 < _20) and ((_5[(_14 + _31[(_29 + _69)])] % _26)==_73)):
        _69 += 1
      else:
       _74=_69
       _75=_70
       while ((_70 < _20) and (_22[(_21 + _70)] < ((_72 + 1) * _24))):
        _70 += 1
       while ((_69 < _20) and ((_5[(_14 + _31[(_29 + _69)])] % _26)==_73)):
        _69 += 1
       _76=0
       while ((_75 < _70) and (_74 < _69)):
        _77=(_22[(_21 + _75)] % _24)
        _78=_31[(_29 + _74)]
        _79=(_5[(_14 + _78)] // _26)
        if (_77 < _79):
         _75 += 1
        elif (_77 > _79): # bld/grindsted/final/default/src/fusion/Parameter.monty:2793:12-25
         _74 += 1
        else:
         for _80 in range(_4[(_11 + _78)],_4[((_11 + _78) + 1)]):
          _64[(_57 + _68)] = 0.0
          _63[(_55 + _68)] = _5[(_15 + _80)]
          _65[(_61 + _66)] = 2
          _64[(_62 + _66)] = _6[(_16 + _80)]
          _66 += 1
          if (_12 > 0):
           for _81 in range(_4[(_18 + _80)],_4[((_18 + _80) + 1)]):
            _65[(_61 + _66)] = _4[(_19 + _81)]
            _64[(_62 + _66)] = _6[(_17 + _81)]
            _66 += 1
           _65[(_61 + _66)] = 3
           _66 += 1
          _65[(_61 + _66)] = 1
          _64[(_62 + _66)] = _31[(_27 + _75)]
          _66 += 1
          _65[(_61 + _66)] = 5
          _66 += 1
          _65[((_60 + _68) + 1)] = _66
          _68 += 1
         _75 += 1
         _74 += 1
         _76 += 1
       if (_76 > 0):
        _63[(_56 + _67)] = _72
        _65[((_54 + _67) + 1)] = _68
        _67 += 1
    if (not _58):
     _0.popi64(_37)
    _2.clear()
   else:
    _82=0
    _83=0
    _84=0
    _85=(_2.i32)
    _86=0
    while (_86 < _20):
     _87=(_22[(_21 + _86)] // _24)
     _88=((_87 + 1) * _24)
     _89=False
     while ((_86 < _20) and (_22[(_21 + _86)] < _88)):
      _90=(_22[(_21 + _86)] % _24)
      _91=((_90 * _26) + _87)
      _92=(_4[((_11 + _91) + 1)] - _4[(_11 + _91)])
      _83 += _92
      _89 = True
      _84 += (((_4[(_18 + _4[((_11 + _91) + 1)])] - _4[(_18 + _4[(_11 + _91)])]) + (_92 * 4)) if ((_12 > 0) ) else (_92 * 3))
      _86 += 1
     if _89:
      _82 += 1
    _93=1
    _94=(_82 < _23)
    _0.alloc_expr(_93,_82,_83,_94,_84)
    _95=(_0.ptr_base)
    _96=(_0.nidxs_base)
    _97=((_0.sp_base) if (_94 ) else _0.alloci64(_82))
    _98=(_0.cof_base)
    _99=(_0.hassp)
    _100=(_0.shape_base)
    _101=(_0.codeptr_base)
    _102=(_0.code_base)
    _103=(_0.cconst_base)
    _104=(_0.i64)
    _105=(_0.f64)
    _106=(_0.i32)
    _106[_95] = 0
    if (_84 > 0):
     _106[_101] = 0
    _106[_100] = numpy.int32(_23)
    _107=0
    _108=0
    _109=0
    _110=0
    while (_110 < _20):
     _111=(_22[(_21 + _110)] // _24)
     _112=((_111 + 1) * _24)
     _113=0
     while ((_110 < _20) and (_22[(_21 + _110)] < _112)):
      _114=(_22[(_21 + _110)] % _24)
      _115=((_114 * _26) + _111)
      for _116 in range(_4[(_11 + _115)],_4[((_11 + _115) + 1)]):
       _104[(_96 + _109)] = _5[(_15 + _116)]
       _105[(_98 + _109)] = 0.0
       _106[(_102 + _107)] = 2
       _105[(_103 + _107)] = _6[(_16 + _116)]
       _107 += 1
       if (_12 > 0):
        for _117 in range(_4[(_18 + _116)],_4[((_18 + _116) + 1)]):
         _106[(_102 + _107)] = _4[(_19 + _117)]
         _105[(_103 + _107)] = _6[(_17 + _117)]
         _107 += 1
        _106[(_102 + _107)] = 3
        _107 += 1
       _106[(_102 + _107)] = 1
       _105[(_103 + _107)] = _85[(_27 + _110)]
       _107 += 1
       _106[(_102 + _107)] = 5
       _107 += 1
       _106[((_101 + _109) + 1)] = _107
       _109 += 1
      _113 += 1
      _110 += 1
     if (_113 > 0):
      _104[(_97 + _108)] = _111
      _106[((_95 + _108) + 1)] = _109
      _108 += 1
    if (not _99):
     _0.popi64(_82)
    _2.clear()
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprMulParamDiagLeft(")._a_S(self.__p.toString())._a_S(",")._a_S(self.__e.toString())._a_S(")")._toString_())
 return ExprMulParamDiagLeft
mosek_fusion_ExprMulParamDiagLeft=__mk_mosek_fusion_ExprMulParamDiagLeft()
del __mk_mosek_fusion_ExprMulParamDiagLeft
def __mk_mosek_fusion_ExprMulParamDiagRight():
 class ExprMulParamDiagRight(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprMulParamDiagRight__e','_ExprMulParamDiagRight__p']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprMulParamDiagRight.ctor(mosek.fusion.Expression,mosek.fusion.Parameter)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulParamDiagRight._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulParamDiagRight._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulParamDiagRight._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprMulParamDiagRight._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulParamDiagRight.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprMulParamDiagRight.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulParamDiagRight._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprMulParamDiagRight._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulParamDiagRight.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprMulParamDiagRight: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(e,p):
    o = ExprMulParamDiagRight.__new__(ExprMulParamDiagRight)
    o._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(e,p)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    e,p, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(e) and __arg_match_Lmosek_4fusion_4Parameter_2__(p))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    e,p, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(e) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(p))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(self,e,p):
    self._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(e,p)
  def _ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(self,e,p):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,mosek.fusion.BaseExpression._modelFrom_Lmosek_4fusion_4Model_2Lmosek_4fusion_4Expression_2(p.getModel(),e),numpy.array([e.getDim(0)], dtype=numpy.dtype(numpy.int32)))
   (self.__p) = p
   (self.__e) = e
   if ((p.getND()!=2) or (e.getND()!=2)):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions for multiplication")
   if ((p.getDim(1)!=e.getDim(0)) or (p.getDim(0)!=e.getDim(1))):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions for multiplication")
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__e.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.i32)
   _5=(_1.i64)
   _6=(_1.f64)
   _7=(_1.nd)
   _8=(_1.nelem)
   _9=(_1.nnz)
   _10=(_1.hassp)
   _11=(_1.ptr_base)
   _12=(_1.ncodeatom)
   _13=(_1.shape_base)
   _14=(_1.sp_base)
   _15=(_1.nidxs_base)
   _16=(_1.cof_base)
   _17=(_1.cconst_base)
   _18=(_1.codeptr_base)
   _19=(_1.code_base)
   if ((_7!=2) or ((_4[_13]!=self.__p.getDim(1)) or (_4[(_13 + 1)]!=self.__p.getDim(0)))):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions for multiplication")
   _20=self.__p.getNumNonzero()
   _21=_2.alloci64(_20)
   _22=(_2.i64)
   _23=_2.alloci32(self.__p.getNumNonzero())
   _24=(_2.i32)
   self.__p.getAllIndexes(_24,_23)
   self.__p.getSp(_22,_21)
   _25=self.__p.getDim(0)
   _26=self.__p.getDim(1)
   _27=_4[_13]
   _28=_4[(_13 + 1)]
   _29=_2.alloci32(_20)
   _30=_2.alloci32((_26 + 1))
   _31=(_2.i32)
   for _32 in range(0,(_26 + 1)):
    _31[(_30 + _32)] = 0
   for _33 in range(0,_20):
    _31[((_30 + (_22[(_21 + _33)] % _26)) + 1)] += 1
   for _34 in range(1,_26):
    _31[(_30 + _34)] += _31[((_30 + _34) - 1)]
   for _35 in range(0,_20):
    _36=(_22[(_21 + _35)] % _26)
    _31[(_29 + _31[(_30 + _36)])] = _35
    _31[(_30 + _36)] += 1
   if _10:
    _37=0
    _38=0
    _39=0
    _40=0
    _41=0
    while ((_41 < _8) and (_40 < _20)):
     _42=(_5[(_14 + _41)] // _28)
     _43=(_22[(_21 + _31[(_29 + _40)])] % _26)
     if (_42 < _43):
      _41 += 1
     elif (_42 > _43): # bld/grindsted/final/default/src/fusion/Parameter.monty:2273:13-26
      _40 += 1
     else:
      _44=_41
      _41 += 1
      _45=_40
      _40 += 1
      while ((_41 < _8) and ((_5[(_14 + _41)] // _28)==_42)):
       _41 += 1
      while ((_40 < _20) and ((_22[(_21 + _31[(_29 + _40)])] % _26)==_43)):
       _40 += 1
      _46=_45
      _47=_44
      _48=False
      while ((_47 < _41) and (_46 < _40)):
       _49=(_5[(_14 + _47)] % _28)
       _50=(_22[(_21 + _31[(_29 + _46)])] // _26)
       if (_49 < _50):
        _47 += 1
       elif (_49 > _50): # bld/grindsted/final/default/src/fusion/Parameter.monty:2289:24-37
        _46 += 1
       else:
        _48 = True
        _51=(_4[((_11 + _47) + 1)] - _4[(_11 + _47)])
        _39 += _51
        _37 += (((_4[(_18 + _4[((_11 + _47) + 1)])] - _4[(_18 + _4[(_11 + _47)])]) + (_51 * 4)) if ((_12 > 0) ) else (_51 * 3))
        _47 += 1
        _46 += 1
      if _48:
       _38 += 1
    _52=1
    _53=(_38 < _27)
    _0.alloc_expr(_52,_38,_39,_53,_37)
    _54=(_0.ptr_base)
    _55=(_0.nidxs_base)
    _56=((_0.sp_base) if (_53 ) else _0.alloci64(_38))
    _57=(_0.cof_base)
    _58=(_0.hassp)
    _59=(_0.shape_base)
    _60=(_0.codeptr_base)
    _61=(_0.code_base)
    _62=(_0.cconst_base)
    _63=(_0.i64)
    _64=(_0.f64)
    _65=(_0.i32)
    if (_38 > 0):
     _65[_54] = 0
     if (_37 > 0):
      _65[_60] = 0
     _65[_59] = numpy.int32(_27)
     _66=0
     _67=0
     _68=0
     _69=0
     _70=0
     while ((_70 < _8) and (_69 < _20)):
      _71=(_5[(_14 + _70)] // _28)
      _72=(_22[(_21 + _31[(_29 + _69)])] % _26)
      if (_71 < _72):
       while ((_70 < _8) and ((_5[(_14 + _70)] // _28)==_71)):
        _70 += 1
      elif (_71 > _72): # bld/grindsted/final/default/src/fusion/Parameter.monty:2342:22-35
       while ((_69 < _20) and ((_22[(_21 + _31[(_29 + _69)])] % _26)==_72)):
        _69 += 1
      else:
       _73=_70
       _70 += 1
       _74=_69
       _69 += 1
       while ((_70 < _8) and ((_5[(_14 + _70)] // _28)==_71)):
        _70 += 1
       while ((_69 < _20) and ((_22[(_21 + _31[(_29 + _69)])] % _26)==_72)):
        _69 += 1
       _75=_74
       _76=_73
       _77=0
       while ((_76 < _70) and (_75 < _69)):
        _78=(_5[(_14 + _76)] % _28)
        _79=(_22[(_21 + _31[(_29 + _75)])] // _26)
        if (_78 < _79):
         _76 += 1
        elif (_78 > _79): # bld/grindsted/final/default/src/fusion/Parameter.monty:2356:26-39
         _75 += 1
        else:
         for _80 in range(_4[(_11 + _76)],_4[((_11 + _76) + 1)]):
          _63[(_55 + _68)] = _5[(_15 + _80)]
          _64[(_57 + _68)] = 0.0
          _65[(_61 + _66)] = 2
          _64[(_62 + _66)] = _6[(_16 + _80)]
          _66 += 1
          if (_12 > 0):
           for _81 in range(_4[(_18 + _80)],_4[((_18 + _80) + 1)]):
            _65[(_61 + _66)] = _4[(_19 + _81)]
            _64[(_62 + _66)] = _6[(_17 + _81)]
            _66 += 1
           _65[(_61 + _66)] = 3
           _66 += 1
          _65[(_61 + _66)] = 1
          _64[(_62 + _66)] = _31[(_23 + _31[(_29 + _75)])]
          _66 += 1
          _65[(_61 + _66)] = 5
          _66 += 1
          _65[((_60 + _68) + 1)] = _66
          _68 += 1
         _77 += 1
         _76 += 1
         _75 += 1
       if (_77 > 0):
        _63[(_56 + _67)] = _71
        _65[((_54 + _67) + 1)] = _68
        _67 += 1
     if (_38 > _65[_59]):
      raise mosek_fusion_UnexpectedError._ctor_S("Internal: Invalid shape")
     if (_67!=_38):
      raise mosek_fusion_UnexpectedError._ctor_S("Internal: Invalid num elements")
     if (_68!=_39):
      raise mosek_fusion_UnexpectedError._ctor_S("Internal: Invalid num nonzeros")
    if (not _58):
     _0.popi64(_38)
    _2.clear()
   else:
    _82=0
    _83=0
    _84=0
    _85=0
    while (_85 < _20):
     _86=(_22[(_21 + _31[(_29 + _85)])] % _26)
     _87=_85
     _85 += 1
     while ((_85 < _20) and ((_22[(_21 + _31[(_29 + _85)])] % _26)==_86)):
      _85 += 1
     for _88 in range(_87,_85):
      _89=(_22[(_21 + _31[(_29 + _85)])] // _26)
      _90=((_86 * _28) + _89)
      _91=(_4[((_11 + _90) + 1)] - _4[(_11 + _90)])
      _84 += _91
      _82 += (((_4[(_18 + _4[((_11 + _90) + 1)])] - _4[(_18 + _4[(_11 + _90)])]) + (_91 * 4)) if ((_12 > 0) ) else (_91 * 3))
     _83 += 1
    _92=1
    _93=(_83 < _27)
    _0.alloc_expr(_92,_83,_84,_93,_82)
    _94=(_0.ptr_base)
    _95=(_0.nidxs_base)
    _96=((_0.sp_base) if (_93 ) else _0.alloci64(_83))
    _97=(_0.cof_base)
    _98=(_0.hassp)
    _99=(_0.shape_base)
    _100=(_0.codeptr_base)
    _101=(_0.code_base)
    _102=(_0.cconst_base)
    _103=(_0.i64)
    _104=(_0.f64)
    _105=(_0.i32)
    _105[_94] = 0
    if (_82 > 0):
     _105[_100] = 0
    _105[_99] = numpy.int32(_27)
    _106=0
    _107=0
    _108=0
    _109=0
    while (_109 < _20):
     _110=(_22[(_21 + _31[(_29 + _109)])] % _26)
     _111=_109
     _109 += 1
     while ((_109 < _20) and ((_22[(_21 + _31[(_29 + _109)])] % _26)==_110)):
      _109 += 1
     for _112 in range(_111,_109):
      _113=(_22[(_21 + _31[(_29 + _112)])] // _26)
      _114=((_110 * _28) + _113)
      for _115 in range(_4[(_11 + _114)],_4[((_11 + _114) + 1)]):
       _103[(_95 + _108)] = _5[(_15 + _115)]
       _104[(_97 + _108)] = 0.0
       _105[(_101 + _106)] = 2
       _104[(_102 + _106)] = _6[(_16 + _115)]
       _106 += 1
       if (_12 > 0):
        for _116 in range(_4[(_18 + _115)],_4[((_18 + _115) + 1)]):
         _105[(_101 + _106)] = _4[(_19 + _116)]
         _104[(_102 + _106)] = _6[(_17 + _116)]
         _106 += 1
        _105[(_101 + _106)] = 3
        _106 += 1
       _105[(_101 + _106)] = 1
       _104[(_102 + _106)] = _31[(_23 + _31[(_29 + _112)])]
       _106 += 1
       _105[(_101 + _106)] = 5
       _106 += 1
       _105[((_100 + _108) + 1)] = _106
       _108 += 1
     _103[(_96 + _107)] = _110
     _105[((_94 + _107) + 1)] = _108
     _107 += 1
    if (_83 > _105[_99]):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: Invalid shape")
    if (_107!=_83):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: Invalid num elements")
    if (_108!=_84):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: Invalid num nonzeros")
    if (not _98):
     _0.popi64(_83)
    _2.clear()
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprMulParamDiagRight(")._a_S(self.__e.toString())._a_S(",")._a_S(self.__p.toString())._a_S(")")._toString_())
 return ExprMulParamDiagRight
mosek_fusion_ExprMulParamDiagRight=__mk_mosek_fusion_ExprMulParamDiagRight()
del __mk_mosek_fusion_ExprMulParamDiagRight
def __mk_mosek_fusion_ExprDotParam():
 class ExprDotParam(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprDotParam__e','_ExprDotParam__p']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprDotParam.ctor(mosek.fusion.Parameter,mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprDotParam._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprDotParam._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprDotParam._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprDotParam._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprDotParam.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprDotParam.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprDotParam._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprDotParam._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprDotParam.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprDotParam: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e):
    o = ExprDotParam.__new__(ExprDotParam)
    o._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    p,e, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(p) and __arg_match_Lmosek_4fusion_4Expression_2__(e))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    p,e, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(p) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(e))
  def _ctor_alt_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(self,p,e):
    self._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e)
  def _ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(self,p,e):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,mosek.fusion.BaseExpression._modelFrom_Lmosek_4fusion_4Model_2Lmosek_4fusion_4Expression_2(p.getModel(),e),numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)))
   (self.__p) = p
   (self.__e) = e
   if (p.getND()!=e.getND()):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand dimensions")
   for _0 in range(0,p.getND()):
    if (p.getDim(_0)!=e.getDim(_0)):
     raise mosek_fusion_DimensionError._ctor_S("Mismatching operand dimensions")
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__e.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.i32)
   _5=(_1.i64)
   _6=(_1.f64)
   _7=(_1.nd)
   _8=(_1.nelem)
   _9=(_1.nnz)
   _10=(_1.hassp)
   _11=(_1.ptr_base)
   _12=(_1.ncodeatom)
   _13=(_1.shape_base)
   _14=(_1.sp_base)
   _15=(_1.nidxs_base)
   _16=(_1.cof_base)
   _17=(_1.cconst_base)
   _18=(_1.codeptr_base)
   _19=(_1.code_base)
   _20=self.__p.getNumNonzero()
   _21=_2.alloci64(_20)
   self.__p.getSp((_2.i64),_21)
   _22=_2.alloci32(self.__p.getNumNonzero())
   _23=(_2.i32)
   self.__p.getAllIndexes(_23,_22)
   _24=(_2.i64)
   _25=0
   _26=1
   _27=0
   if _10:
    _28=0
    _29=0
    while ((_28 < _8) and (_29 < _20)):
     if (_5[(_14 + _28)] < _24[(_21 + _29)]):
      _28 += 1
     elif (_5[(_14 + _28)] > _24[(_21 + _29)]): # bld/grindsted/final/default/src/fusion/Parameter.monty:2056:20-46
      _29 += 1
     else:
      _30=(_4[((_11 + _28) + 1)] - _4[(_11 + _28)])
      _25 += _30
      _27 += (((_4[(_18 + _4[((_11 + _28) + 1)])] - _4[(_18 + _4[(_11 + _28)])]) + (4 * _30)) if ((_12 > 0) ) else (3 * _30))
      _28 += 1
      _29 += 1
   else:
    for _31 in range(0,_20):
     _25 += (_4[((_11 + _24[(_21 + _31)]) + 1)] - _4[(_11 + _24[(_21 + _31)])])
    if (_12 > 0):
     for _32 in range(0,_20):
      _27 += ((_4[(_18 + _4[((_11 + _24[(_21 + _32)]) + 1)])] - _4[(_18 + _4[(_11 + _24[(_21 + _32)])])]) + (4 * (_4[((_11 + _24[(_21 + _32)]) + 1)] - _4[(_11 + _24[(_21 + _32)])])))
    else:
     for _33 in range(0,_20):
      _27 += (3 * (_4[((_11 + _24[(_21 + _33)]) + 1)] - _4[(_11 + _24[(_21 + _33)])]))
   _34=1
   for _35 in range(0,_7):
    _34 *= _4[(_13 + _35)]
   _0.alloc_expr(0,_26,_25,False,_27)
   _36=(_0.ptr_base)
   _37=(_0.nidxs_base)
   _38=(_0.cof_base)
   _39=(_0.hassp)
   _40=(_0.shape_base)
   _41=(_0.codeptr_base)
   _42=(_0.code_base)
   _43=(_0.cconst_base)
   _44=(_0.i64)
   _45=(_0.f64)
   _46=(_0.i32)
   _46[_36] = 0
   _46[(_36 + 1)] = _25
   if (_27 > 0):
    _46[_41] = 0
   if _10:
    _47=0
    _48=0
    _49=0
    _50=0
    _51=0
    while ((_50 < _8) and (_51 < _20)):
     if (_5[(_14 + _50)] < _24[(_21 + _51)]):
      _50 += 1
     elif (_5[(_14 + _50)] > _24[(_21 + _51)]): # bld/grindsted/final/default/src/fusion/Parameter.monty:2105:20-46
      _51 += 1
     else:
      for _52 in range(_4[(_11 + _50)],_4[((_11 + _50) + 1)]):
       _44[(_37 + _48)] = _5[(_15 + _52)]
       _45[(_38 + _48)] = 0.0
       _46[(_42 + _47)] = 2
       _45[(_43 + _47)] = _6[(_16 + _52)]
       _47 += 1
       if (_12 > 0):
        for _53 in range(_4[(_18 + _52)],_4[((_18 + _52) + 1)]):
         _46[(_42 + _47)] = _4[(_19 + _53)]
         _45[(_43 + _47)] = _6[(_17 + _53)]
         _47 += 1
        _46[(_42 + _47)] = 3
        _47 += 1
       _46[(_42 + _47)] = 1
       _45[(_43 + _47)] = _23[(_22 + _51)]
       _47 += 1
       _46[(_42 + _47)] = 5
       _47 += 1
       _46[((_41 + _48) + 1)] = _47
       _48 += 1
      _50 += 1
      _51 += 1
    if (_49!=_26):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: broken elmi")
    if (_48!=_25):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: broken nzi")
    if (_47!=_27):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: broken codei")
   else:
    _54=0
    _55=0
    for _56 in range(0,_20):
     _57=_56
     _58=_24[(_21 + _56)]
     for _59 in range(_4[(_11 + _58)],_4[((_11 + _58) + 1)]):
      _44[(_37 + _55)] = _5[(_15 + _59)]
      _45[(_38 + _55)] = 0.0
      _46[(_42 + _54)] = 2
      _45[(_43 + _54)] = _6[(_16 + _59)]
      _54 += 1
      if (_12 > 0):
       for _60 in range(_4[(_18 + _59)],_4[((_18 + _59) + 1)]):
        _46[(_42 + _54)] = _4[(_19 + _60)]
        _45[(_43 + _54)] = _6[(_17 + _60)]
        _54 += 1
       _46[(_42 + _54)] = 3
       _54 += 1
      _46[(_42 + _54)] = 1
      _45[(_43 + _54)] = _23[(_22 + _56)]
      _54 += 1
      _46[(_42 + _54)] = 5
      _54 += 1
      _46[((_41 + _55) + 1)] = _54
      _55 += 1
    if (_55!=_25):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: invalid nzi")
    if (_54!=_27):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: invalid codei")
   _2.clear()
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprDotParam(")._a_S(self.__p.toString())._a_S(",")._a_S(self.__e.toString())._a_S(")")._toString_())
 return ExprDotParam
mosek_fusion_ExprDotParam=__mk_mosek_fusion_ExprDotParam()
del __mk_mosek_fusion_ExprDotParam
def __mk_mosek_fusion_ExprMulParamElem():
 class ExprMulParamElem(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprMulParamElem__e','_ExprMulParamElem__p']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprMulParamElem.ctor(mosek.fusion.Parameter,mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulParamElem._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulParamElem._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulParamElem._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprMulParamElem._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulParamElem.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprMulParamElem.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulParamElem._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprMulParamElem._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulParamElem.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprMulParamElem: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e):
    o = ExprMulParamElem.__new__(ExprMulParamElem)
    o._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    p,e, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(p) and __arg_match_Lmosek_4fusion_4Expression_2__(e))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    p,e, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(p) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(e))
  def _ctor_alt_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(self,p,e):
    self._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e)
  def _ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(self,p,e):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,mosek.fusion.BaseExpression._modelFrom_Lmosek_4fusion_4Model_2Lmosek_4fusion_4Expression_2(p.getModel(),e),e.getShape())
   (self.__p) = p
   (self.__e) = e
   if (p.getND()!=e.getND()):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand dimensions")
   for _0 in range(0,p.getND()):
    if (p.getDim(_0)!=e.getDim(_0)):
     raise mosek_fusion_DimensionError._ctor_S("Mismatching operand dimensions")
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__e.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.i32)
   _5=(_1.i64)
   _6=(_1.f64)
   _7=(_1.nd)
   _8=(_1.nelem)
   _9=(_1.nnz)
   _10=(_1.hassp)
   _11=(_1.ptr_base)
   _12=(_1.ncodeatom)
   _13=(_1.shape_base)
   _14=(_1.sp_base)
   _15=(_1.nidxs_base)
   _16=(_1.cof_base)
   _17=(_1.cconst_base)
   _18=(_1.codeptr_base)
   _19=(_1.code_base)
   _20=self.__p.getNumNonzero()
   _21=_2.alloci64(_20)
   self.__p.getSp((_2.i64),_21)
   _22=_2.alloci32(self.__p.getNumNonzero())
   _23=(_2.i32)
   self.__p.getAllIndexes(_23,_22)
   _24=(_2.i64)
   _25=_7
   _26=0
   _27=0
   _28=0
   if _10:
    _29=0
    _30=0
    while ((_29 < _8) and (_30 < _20)):
     if (_5[(_14 + _29)] < _24[(_21 + _30)]):
      _29 += 1
     elif (_5[(_14 + _29)] > _24[(_21 + _30)]): # bld/grindsted/final/default/src/fusion/Parameter.monty:1725:20-46
      _30 += 1
     else:
      _31=(_4[((_11 + _29) + 1)] - _4[(_11 + _29)])
      _26 += _31
      _28 += (((_4[(_18 + _4[((_11 + _29) + 1)])] - _4[(_18 + _4[(_11 + _29)])]) + (4 * _31)) if ((_12 > 0) ) else (3 * _31))
      _27 += 1
      _29 += 1
      _30 += 1
   else:
    _27 = _20
    for _32 in range(0,_20):
     _26 += (_4[((_11 + _24[(_21 + _32)]) + 1)] - _4[(_11 + _24[(_21 + _32)])])
    if (_12 > 0):
     for _33 in range(0,_20):
      _28 += ((_4[(_18 + _4[((_11 + _24[(_21 + _33)]) + 1)])] - _4[(_18 + _4[(_11 + _24[(_21 + _33)])])]) + (4 * (_4[((_11 + _24[(_21 + _33)]) + 1)] - _4[(_11 + _24[(_21 + _33)])])))
    else:
     for _34 in range(0,_20):
      _28 += (3 * (_4[((_11 + _24[(_21 + _34)]) + 1)] - _4[(_11 + _24[(_21 + _34)])]))
   _35=1
   for _36 in range(0,_7):
    _35 *= _4[(_13 + _36)]
   _37=(_27 < _35)
   _0.alloc_expr(_25,_27,_26,_37,_28)
   _38=(_0.ptr_base)
   _39=(_0.nidxs_base)
   _40=((_0.sp_base) if (_37 ) else _0.alloci64(_27))
   _41=(_0.cof_base)
   _42=(_0.hassp)
   _43=(_0.shape_base)
   _44=(_0.codeptr_base)
   _45=(_0.code_base)
   _46=(_0.cconst_base)
   _47=(_0.i64)
   _48=(_0.f64)
   _49=(_0.i32)
   for _50 in range(0,_7):
    _49[(_43 + _50)] = _4[(_13 + _50)]
   _49[_38] = 0
   if (_28 > 0):
    _49[_44] = 0
   if _10:
    _51=0
    _52=0
    _53=0
    _54=0
    _55=0
    while ((_54 < _8) and (_55 < _20)):
     if (_5[(_14 + _54)] < _24[(_21 + _55)]):
      _54 += 1
     elif (_5[(_14 + _54)] > _24[(_21 + _55)]): # bld/grindsted/final/default/src/fusion/Parameter.monty:1783:20-46
      _55 += 1
     else:
      for _56 in range(_4[(_11 + _54)],_4[((_11 + _54) + 1)]):
       _47[(_39 + _52)] = _5[(_15 + _56)]
       _48[(_41 + _52)] = 0.0
       _49[(_45 + _51)] = 2
       _48[(_46 + _51)] = _6[(_16 + _56)]
       _51 += 1
       if (_12 > 0):
        for _57 in range(_4[(_18 + _56)],_4[((_18 + _56) + 1)]):
         _49[(_45 + _51)] = _4[(_19 + _57)]
         _48[(_46 + _51)] = _6[(_17 + _57)]
         _51 += 1
        _49[(_45 + _51)] = 3
        _51 += 1
       _49[(_45 + _51)] = 1
       _48[(_46 + _51)] = _23[(_22 + _55)]
       _51 += 1
       _49[(_45 + _51)] = 5
       _51 += 1
       _49[((_44 + _52) + 1)] = _51
       _52 += 1
      _47[(_40 + _53)] = _5[(_14 + _54)]
      _49[((_38 + _53) + 1)] = _52
      _53 += 1
      _54 += 1
      _55 += 1
    if (_53!=_27):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: broken elmi")
    if (_52!=_26):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: broken nzi")
    if (_51!=_28):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: broken codei")
   else:
    _58=0
    _59=0
    for _60 in range(0,_20):
     _61=_60
     _62=_24[(_21 + _60)]
     for _63 in range(_4[(_11 + _62)],_4[((_11 + _62) + 1)]):
      _47[(_39 + _59)] = _5[(_15 + _63)]
      _48[(_41 + _59)] = 0.0
      _49[(_45 + _58)] = 2
      _48[(_46 + _58)] = _6[(_16 + _63)]
      _58 += 1
      if (_12 > 0):
       for _64 in range(_4[(_18 + _63)],_4[((_18 + _63) + 1)]):
        _49[(_45 + _58)] = _4[(_19 + _64)]
        _48[(_46 + _58)] = _6[(_17 + _64)]
        _58 += 1
       _49[(_45 + _58)] = 3
       _58 += 1
      _49[(_45 + _58)] = 1
      _48[(_46 + _58)] = _23[(_22 + _60)]
      _58 += 1
      _49[(_45 + _58)] = 5
      _58 += 1
      _49[((_44 + _59) + 1)] = _58
      _59 += 1
     _47[(_40 + _61)] = _62
     _49[((_38 + _61) + 1)] = _59
    if (_28!=_58):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal! Invalid code list result")
   if (not _42):
    _0.popi64(_27)
   _2.clear()
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprMulParamElem(")._a_S(self.__p.toString())._a_S(",")._a_S(self.__e.toString())._a_S(")")._toString_())
 return ExprMulParamElem
mosek_fusion_ExprMulParamElem=__mk_mosek_fusion_ExprMulParamElem()
del __mk_mosek_fusion_ExprMulParamElem
def __mk_mosek_fusion_ExprMulParamRight():
 class ExprMulParamRight(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprMulParamRight__e','_ExprMulParamRight__p']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprMulParamRight.ctor(mosek.fusion.Expression,mosek.fusion.Parameter)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulParamRight._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulParamRight._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulParamRight._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprMulParamRight._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulParamRight.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprMulParamRight.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulParamRight._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprMulParamRight._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulParamRight.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprMulParamRight: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(e,p):
    o = ExprMulParamRight.__new__(ExprMulParamRight)
    o._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(e,p)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    e,p, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(e) and __arg_match_Lmosek_4fusion_4Parameter_2__(p))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    e,p, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(e) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(p))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(self,e,p):
    self._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(e,p)
  def _ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(self,e,p):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,p.getModel(),numpy.array([e.getDim(0),p.getDim(1)], dtype=numpy.dtype(numpy.int32)))
   (self.__p) = p
   (self.__e) = e
   if ((p.getND()!=2) or (e.getND()!=2)):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions for multiplication")
   if (p.getDim(0)!=e.getDim(1)):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand dimensions")
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__e.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.i32)
   _5=(_1.i64)
   _6=(_1.f64)
   _7=(_1.nd)
   _8=(_1.nelem)
   _9=(_1.nnz)
   _10=(_1.hassp)
   _11=(_1.ptr_base)
   _12=(_1.ncodeatom)
   _13=(_1.shape_base)
   _14=(_1.sp_base)
   _15=(_1.nidxs_base)
   _16=(_1.cof_base)
   _17=(_1.cconst_base)
   _18=(_1.codeptr_base)
   _19=(_1.code_base)
   if ((_7!=2) or (self.__p.getDim(0)!=_4[(_13 + 1)])):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand dimensions")
   _20=_4[_13]
   _21=_4[(_13 + 1)]
   _22=self.__p.getDim(0)
   _23=self.__p.getDim(1)
   _24=self.__p.getNumNonzero()
   _25=_2.alloci32(self.__p.getNumNonzero())
   _26=(_2.i32)
   self.__p.getAllIndexes(_26,_25)
   _27=_2.alloci32(_24)
   _28=_2.alloci64(_24)
   self.__p.getSp((_2.i64),_28)
   _29=_2.alloci32((_23 + 1))
   _30=(_2.i32)
   _31=(_2.i64)
   for _32 in range(0,(_23 + 1)):
    _30[(_29 + _32)] = 0
   for _33 in range(0,_24):
    _30[((_29 + (_31[(_28 + _33)] % _23)) + 1)] += 1
   for _34 in range(0,_23):
    _30[((_29 + _34) + 1)] += _30[(_29 + _34)]
   for _35 in range(0,_24):
    _30[(_27 + _30[(_29 + (_31[(_28 + _35)] % _23))])] = _35
    _30[(_29 + (_31[(_28 + _35)] % _23))] += 1
   _36=(_2.i32)
   _37=(_2.i64)
   _38=0
   _39=0
   _40=0
   if ((not self.__p.isSparse()) and (not _10)):
    _40 = (_9 * _23)
    _39 = (_20 * _23)
    _38 = (((_12 + (_9 * 4)) * _23) if ((_12 > 0) ) else ((_9 * _23) * 3))
   elif (not _10): # bld/grindsted/final/default/src/fusion/Parameter.monty:1301:16-25
    _41=0
    while (_41 < _24):
     _42=(_37[(_28 + _36[(_27 + _41)])] % _23)
     _43=_41
     while ((_41 < _24) and ((_37[(_28 + _36[(_27 + _41)])] % _23)==_42)):
      _44=(_37[(_28 + _36[(_27 + _41)])] // _23)
      for _45 in range(0,_20):
       _46=((_45 * _21) + _44)
       _47=(_4[((_11 + _46) + 1)] - _4[(_11 + _46)])
       _40 += _47
       _38 += (((_4[(_18 + _4[((_11 + _46) + 1)])] - _4[(_18 + _4[(_11 + _46)])]) + (_47 * 4)) if ((_12 > 0) ) else (_47 * 3))
      _41 += 1
     _39 += _20
   else:
    _48=0
    while (_48 < _8):
     _49=(_5[(_14 + _48)] // _21)
     _50=_48
     _51=((_49 + 1) * _21)
     while ((_48 < _8) and (_5[(_14 + _48)] < _51)):
      _48 += 1
     _52=0
     while (_52 < _24):
      _53=(_37[(_28 + _36[(_27 + _52)])] % _23)
      _54=_52
      while ((_52 < _24) and (_53==(_37[(_28 + _36[(_27 + _52)])] % _23))):
       _52 += 1
      _55=0
      _56=_54
      _57=_50
      while ((_57 < _48) and (_56 < _52)):
       _58=(_5[(_14 + _57)] % _21)
       _59=(_37[(_28 + _36[(_27 + _56)])] // _23)
       if (_58 < _59):
        _57 += 1
       elif (_58 > _59): # bld/grindsted/final/default/src/fusion/Parameter.monty:1349:24-35
        _56 += 1
       else:
        _60=(_4[((_11 + _57) + 1)] - _4[(_11 + _57)])
        _40 += _60
        _38 += (((_4[(_18 + _4[((_11 + _57) + 1)])] - _4[(_18 + _4[(_11 + _57)])]) + (_60 * 4)) if ((_12 > 0) ) else (_60 * 3))
        _57 += 1
        _56 += 1
        _55 += 1
      if (_55 > 0):
       _39 += 1
   _61=2
   _62=(_39 < (_23 * _20))
   _0.alloc_expr(_61,_39,_40,_62,_38)
   _63=(_0.ptr_base)
   _64=(_0.nidxs_base)
   _65=((_0.sp_base) if (_62 ) else _0.alloci64(_39))
   _66=(_0.cof_base)
   _67=(_0.hassp)
   _68=(_0.shape_base)
   _69=(_0.codeptr_base)
   _70=(_0.code_base)
   _71=(_0.cconst_base)
   _72=(_0.i64)
   _73=(_0.f64)
   _74=(_0.i32)
   _74[_63] = 0
   if (_38 > 0):
    _74[_69] = 0
   _74[_68] = _20
   _74[(_68 + 1)] = _23
   _75=0
   _76=0
   _77=0
   if (not _10):
    for _78 in range(0,_20):
     _79=0
     while (_79 < _24):
      _80=_79
      _81=(_37[(_28 + _36[(_27 + _79)])] % _23)
      while ((_79 < _24) and (_81==(_37[(_28 + _36[(_27 + _79)])] % _23))):
       _79 += 1
      _82=_80
      while (_82 < _79):
       _83=(_37[(_28 + _36[(_27 + _82)])] // _23)
       _84=((_78 * _21) + _83)
       _85=_36[(_25 + _36[(_27 + _82)])]
       for _86 in range(_4[(_11 + _84)],_4[((_11 + _84) + 1)]):
        _72[(_64 + _77)] = _5[(_15 + _86)]
        _73[(_66 + _77)] = 0
        _74[(_70 + _75)] = 2
        _73[(_71 + _75)] = _6[(_16 + _86)]
        _75 += 1
        if (_12 > 0):
         for _87 in range(_4[(_18 + _86)],_4[((_18 + _86) + 1)]):
          _74[(_70 + _75)] = _4[(_19 + _87)]
          _73[(_71 + _75)] = _6[(_17 + _87)]
          _75 += 1
         _74[(_70 + _75)] = 3
         _75 += 1
        _74[(_70 + _75)] = 1
        _73[(_71 + _75)] = _85
        _75 += 1
        _74[(_70 + _75)] = 5
        _75 += 1
        _74[((_69 + _77) + 1)] = _75
        _77 += 1
       _82 += 1
      _74[((_63 + _76) + 1)] = _77
      _72[(_65 + _76)] = ((_78 * _23) + _81)
      _76 += 1
   else:
    _88=0
    while (_88 < _8):
     _89=(_5[(_14 + _88)] // _21)
     _90=_88
     _91=((_89 + 1) * _21)
     while ((_88 < _8) and (_5[(_14 + _88)] < _91)):
      _88 += 1
     _92=0
     while (_92 < _24):
      _93=(_37[(_28 + _36[(_27 + _92)])] % _23)
      _94=_92
      while ((_92 < _24) and (_93==(_37[(_28 + _36[(_27 + _92)])] % _23))):
       _92 += 1
      _95=0
      _96=_94
      _97=_90
      while ((_97 < _88) and (_96 < _92)):
       _98=(_5[(_14 + _97)] % _21)
       _99=(_37[(_28 + _36[(_27 + _96)])] // _23)
       if (_98 < _99):
        _97 += 1
       elif (_98 > _99): # bld/grindsted/final/default/src/fusion/Parameter.monty:1473:24-35
        _96 += 1
       else:
        _100=_36[(_25 + _36[(_27 + _96)])]
        for _101 in range(_4[(_11 + _97)],_4[((_11 + _97) + 1)]):
         _72[(_64 + _77)] = _5[(_15 + _101)]
         _73[(_66 + _77)] = 0
         _74[(_70 + _75)] = 2
         _73[(_71 + _75)] = _6[(_16 + _101)]
         _75 += 1
         if (_12 > 0):
          for _102 in range(_4[(_18 + _101)],_4[((_18 + _101) + 1)]):
           _74[(_70 + _75)] = _4[(_19 + _102)]
           _73[(_71 + _75)] = _6[(_17 + _102)]
           _75 += 1
          _74[(_70 + _75)] = 3
          _75 += 1
         _74[(_70 + _75)] = 1
         _73[(_71 + _75)] = _100
         _75 += 1
         _74[(_70 + _75)] = 5
         _75 += 1
         _74[((_69 + _77) + 1)] = _75
         _77 += 1
        _97 += 1
        _96 += 1
        _95 += 1
      if (_95 > 0):
       _74[((_63 + _76) + 1)] = _77
       _72[(_65 + _76)] = ((_89 * _23) + _93)
       _76 += 1
   if (not _67):
    _0.popi64(_39)
   if (_76!=_39):
    raise mosek_fusion_UnexpectedError._ctor_S("broken elmi")
   if (_77!=_40):
    raise mosek_fusion_UnexpectedError._ctor_S("broken nzi")
   if (_75!=_38):
    raise mosek_fusion_UnexpectedError._ctor_S("broken codei")
   _2.clear()
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprMulParamRight(")._a_S(self.__e.toString())._a_S(",")._a_S(self.__p.toString())._a_S(")")._toString_())
 return ExprMulParamRight
mosek_fusion_ExprMulParamRight=__mk_mosek_fusion_ExprMulParamRight()
del __mk_mosek_fusion_ExprMulParamRight
def __mk_mosek_fusion_ExprMulParamLeft():
 class ExprMulParamLeft(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprMulParamLeft__e','_ExprMulParamLeft__p']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprMulParamLeft.ctor(mosek.fusion.Parameter,mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulParamLeft._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulParamLeft._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulParamLeft._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprMulParamLeft._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulParamLeft.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprMulParamLeft.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulParamLeft._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprMulParamLeft._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulParamLeft.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprMulParamLeft: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e):
    o = ExprMulParamLeft.__new__(ExprMulParamLeft)
    o._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    p,e, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(p) and __arg_match_Lmosek_4fusion_4Expression_2__(e))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    p,e, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(p) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(e))
  def _ctor_alt_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(self,p,e):
    self._ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(p,e)
  def _ctor_init_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(self,p,e):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,p.getModel(),numpy.array([p.getDim(0),e.getDim(1)], dtype=numpy.dtype(numpy.int32)))
   (self.__p) = p
   (self.__e) = e
   if ((p.getND()!=2) or (e.getND()!=2)):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions for multiplication")
   if (p.getDim(1)!=e.getDim(0)):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand dimensions")
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__e.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.i32)
   _5=(_1.i64)
   _6=(_1.f64)
   _7=(_1.nd)
   _8=(_1.nelem)
   _9=(_1.nnz)
   _10=(_1.hassp)
   _11=(_1.ncodeatom)
   _12=(_1.ptr_base)
   _13=(_1.code_base)
   _14=(_1.cconst_base)
   _15=(_1.codeptr_base)
   _16=(_1.shape_base)
   _17=(_1.sp_base)
   _18=(_1.nidxs_base)
   _19=(_1.cof_base)
   _20=(_1.cconst_base)
   if ((_7!=2) or (_4[_16]!=self.__p.getDim(1))):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand dimensions")
   _21=self.__p.getDim(0)
   _22=self.__p.getDim(1)
   _23=_4[_16]
   _24=_4[(_16 + 1)]
   _25=self.__p.getNumNonzero()
   _26=_2.alloci32(self.__p.getNumNonzero())
   _27=(_2.i32)
   self.__p.getAllIndexes(_27,_26)
   if ((not _10) and (not self.__p.isSparse())):
    _28=2
    _29=(_24 * self.__p.getDim(0))
    _30=(_9 * self.__p.getDim(0))
    _31=(((self.__p.getDim(0) * _11) + (4 * _30)) if ((_11 > 0) ) else (3 * _30))
    _32=False
    _0.alloc_expr(_28,_29,_30,_32,_31)
    _33=(_0.i64)
    _34=(_0.f64)
    _35=(_0.i32)
    _36=(_0.ptr_base)
    _37=(_0.nidxs_base)
    _38=(_0.cof_base)
    _39=(_0.code_base)
    _40=(_0.codeptr_base)
    _41=(_0.cconst_base)
    _42=(_0.hassp)
    _43=(_0.shape_base)
    _35[_43] = _21
    _35[(_43 + 1)] = _24
    _35[_36] = 0
    _35[_40] = 0
    _44=0
    _45=0
    _46=0
    for _47 in range(0,self.__p.getDim(0)):
     for _48 in range(0,self.__e.getDim(1)):
      for _49 in range(0,self.__p.getDim(1)):
       for _50 in range(_4[((_12 + (_49 * _24)) + _48)],_4[(((_12 + (_49 * _24)) + _48) + 1)]):
        _33[(_37 + _44)] = _5[(_18 + _50)]
        _34[(_38 + _44)] = 0.0
        _35[(_39 + _46)] = 2
        _34[(_41 + _46)] = _6[(_19 + _50)]
        _46 += 1
        if (_11 > 0):
         for _51 in range(_4[(_15 + _50)],_4[((_15 + _50) + 1)]):
          _35[(_39 + _46)] = _4[(_13 + _51)]
          _34[(_41 + _46)] = _6[(_14 + _51)]
          _46 += 1
         _35[(_39 + _46)] = 3
         _46 += 1
        _35[(_39 + _46)] = 1
        _34[(_41 + _46)] = _27[((_26 + (_47 * _22)) + _49)]
        _46 += 1
        _35[(_39 + _46)] = 5
        _46 += 1
        _35[((_40 + _44) + 1)] = _46
        _44 += 1
      _35[((_36 + _45) + 1)] = _44
      _45 += 1
    if (_46!=_31):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal! Incorrect a-code length")
    if (_44!=_30):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal! Incorrect nnz length")
    if (_45!=_29):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal! Incorrect nelem length")
    for _52 in range(0,_29):
     if (_35[(_36 + _52)] > _35[((_36 + _52) + 1)]):
      raise mosek_fusion_UnexpectedError._ctor_S("Internal! Incorrect ptr indexes")
   elif (not _10): # bld/grindsted/final/default/src/fusion/Parameter.monty:765:16-25
    _53=_8
    _54=_25
    _55=_2.alloci64(_54)
    _56=(_2.i64)
    self.__p.getSp(_56,_55)
    _57=0
    _58=0
    _59=0
    _60=0
    while (_60 < _25):
     _61=numpy.int32((_56[(_55 + _60)] // _22))
     _62=_60
     _60 += 1
     while ((_60 < _25) and (_56[(_55 + _60)] < ((_61 + 1) * _22))):
      _60 += 1
     _63=_60
     for _64 in range(0,_24):
      for _65 in range(_62,_63):
       _66=(((_56[(_55 + _65)] % _22) * _24) + _64)
       _67=(_4[((_12 + _66) + 1)] - _4[(_12 + _66)])
       _58 += _67
       if (_11 > 0):
        _59 += ((_4[(_15 + _4[((_12 + _66) + 1)])] - _4[(_15 + _4[(_12 + _66)])]) + (4 * _67))
       else:
        _59 += (3 * _67)
      _57 += 1
    _68=(_57 < (_21 * _24))
    _69=2
    _0.alloc_expr(_69,_57,_58,_68,_59)
    _70=(_0.ptr_base)
    _71=(_0.nidxs_base)
    _72=((_0.sp_base) if (_68 ) else _0.alloci64(_57))
    _73=(_0.cof_base)
    _74=(_0.hassp)
    _75=(_0.shape_base)
    _76=(_0.codeptr_base)
    _77=(_0.code_base)
    _78=(_0.cconst_base)
    _79=(_0.i64)
    _80=(_0.f64)
    _81=(_0.i32)
    _81[_75] = _21
    _81[(_75 + 1)] = _24
    _82=0
    _83=0
    _84=0
    if (_59 > 0):
     _81[_76] = 0
    _81[_70] = 0
    for _85 in range(0,_58):
     _80[(_73 + _85)] = 0.0
    _86=0
    while (_86 < _25):
     _87=numpy.int32((_56[(_55 + _86)] // _22))
     _88=_86
     _86 += 1
     while ((_86 < _25) and (_56[(_55 + _86)] < ((_87 + 1) * _22))):
      _86 += 1
     _89=_86
     for _90 in range(0,_24):
      for _91 in range(_88,_89):
       _92=(((_56[(_55 + _91)] % _22) * _24) + _90)
       for _93 in range(_4[(_12 + _92)],_4[((_12 + _92) + 1)]):
        _79[(_71 + _82)] = _5[(_18 + _93)]
        _81[(_77 + _84)] = 2
        _80[(_78 + _84)] = _6[(_19 + _93)]
        _84 += 1
        if (_11 > 0):
         for _94 in range(_4[(_15 + _93)],_4[((_15 + _93) + 1)]):
          _81[(_77 + _84)] = _4[(_13 + _94)]
          _80[(_78 + _84)] = _6[(_14 + _94)]
          _84 += 1
         _81[(_77 + _84)] = 3
         _84 += 1
        _81[(_77 + _84)] = 1
        _80[(_78 + _84)] = _27[(_26 + _91)]
        _84 += 1
        _81[(_77 + _84)] = 5
        _84 += 1
        _81[((_76 + _82) + 1)] = _84
        _82 += 1
      _81[((_70 + _83) + 1)] = _82
      _79[(_72 + _83)] = ((numpy.int64(_87) * _24) + _90)
      _83 += 1
    if (_84!=_59):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal! Incorrect code list")
    if (_82!=_58):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal! Incorrect nnz length")
    if (_83!=_57):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal! Incorrect nelem length")
    if (_81[(_70 + _57)]!=_58):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal! Incorrect ptr")
    if (not _74):
     _0.popi64(_57)
    _2.clear()
   else:
    _95=_8
    _96=_2.alloci32(_95)
    _97=self.__p.getNumNonzero()
    _98=_2.alloci64(_97)
    _99=_2.alloci32((_4[(_16 + 1)] + 1))
    _100=(_2.i32)
    _101=(_2.i64)
    self.__p.getSp(_101,_98)
    _102=_4[(_16 + 1)]
    for _103 in range(0,(_4[(_16 + 1)] + 1)):
     _100[(_99 + _103)] = 0
    for _104 in range(0,_8):
     _100[((_99 + (_5[(_17 + _104)] % _102)) + 1)] += 1
    for _105 in range(0,_102):
     _100[((_99 + _105) + 1)] += _100[(_99 + _105)]
    for _106 in range(0,_8):
     _100[(_96 + _100[(_99 + (_5[(_17 + _106)] % _102))])] = _106
     _100[(_99 + (_5[(_17 + _106)] % _102))] += 1
    _107=0
    _108=0
    _109=0
    _110=_4[(_16 + 1)]
    _111=_4[_16]
    _112=self.__p.getDim(1)
    _113=self.__p.getDim(0)
    _114=0
    while (_114 < _97):
     _115=_114
     _116=(_101[(_98 + _114)] // _112)
     while ((_114 < _97) and (_101[(_98 + _114)] < ((_116 + 1) * _112))):
      _114 += 1
     _117=0
     while (_117 < _8):
      _118=_117
      _119=(_5[(_17 + _100[(_96 + _117)])] % _110)
      _117 += 1
      while ((_117 < _8) and ((_5[(_17 + _100[(_96 + _117)])] % _110)==_119)):
       _117 += 1
      _120=_118
      _121=_115
      _122=False
      _123=0
      while ((_121 < _114) and (_120 < _117)):
       _124=_100[(_96 + _120)]
       if ((_101[(_98 + _121)] % _112) < (_5[(_17 + _124)] // _110)):
        _121 += 1
       elif ((_101[(_98 + _121)] % _112) > (_5[(_17 + _124)] // _110)): # bld/grindsted/final/default/src/fusion/Parameter.monty:953:26-71
        _120 += 1
       else:
        _125=(_4[((_12 + _124) + 1)] - _4[(_12 + _124)])
        _108 += _125
        _109 += (((_4[(_15 + _4[((_12 + _124) + 1)])] - _4[(_15 + _4[(_12 + _124)])]) + (4 * _125)) if ((_11 > 0) ) else (3 * _125))
        _120 += 1
        _121 += 1
        _123 += 1
      if (_123 > 0):
       _107 += 1
    _126=2
    _127=(_107 < (_113 * _110))
    _0.alloc_expr(_126,_107,_108,_127,_109)
    _128=(_0.ptr_base)
    _129=(_0.nidxs_base)
    _130=((_0.sp_base) if (_127 ) else _0.alloci64(_107))
    _131=(_0.cof_base)
    _132=(_0.shape_base)
    _133=(_0.codeptr_base)
    _134=(_0.code_base)
    _135=(_0.cconst_base)
    _136=(_0.i64)
    _137=(_0.f64)
    _138=(_0.i32)
    for _139 in range(0,(_107 + 1)):
     _138[(_128 + _139)] = (- 9999)
    _138[_128] = 0
    if (_109 > 0):
     _138[_133] = 0
    _138[_132] = _113
    _138[(_132 + 1)] = _110
    _140=0
    _141=0
    _142=0
    for _143 in range(0,_108):
     _137[(_131 + _143)] = 0.0
    _144=0
    while (_144 < _97):
     _145=_144
     _146=(_101[(_98 + _144)] // _112)
     while ((_144 < _97) and (_101[(_98 + _144)] < ((_146 + 1) * _112))):
      _144 += 1
     _147=0
     while (_147 < _8):
      _148=_147
      _149=(_5[(_17 + _100[(_96 + _147)])] % _110)
      _147 += 1
      while ((_147 < _8) and ((_5[(_17 + _100[(_96 + _147)])] % _110)==_149)):
       _147 += 1
      _150=_148
      _151=_145
      _152=0
      while ((_151 < _144) and (_150 < _147)):
       _153=_100[(_96 + _150)]
       if ((_101[(_98 + _151)] % _112) < (_5[(_17 + _153)] // _110)):
        _151 += 1
       elif ((_101[(_98 + _151)] % _112) > (_5[(_17 + _153)] // _110)): # bld/grindsted/final/default/src/fusion/Parameter.monty:1030:26-71
        _150 += 1
       else:
        for _154 in range(_4[(_12 + _153)],_4[((_12 + _153) + 1)]):
         _136[(_129 + _140)] = _5[(_18 + _154)]
         _138[(_134 + _142)] = 2
         _137[(_135 + _142)] = _6[(_19 + _154)]
         _142 += 1
         if (_11 > 0):
          for _155 in range(_4[(_15 + _154)],_4[((_15 + _154) + 1)]):
           _138[(_134 + _142)] = _4[(_13 + _155)]
           _137[(_135 + _142)] = _6[(_14 + _155)]
           _142 += 1
          _138[(_134 + _142)] = 3
          _142 += 1
         _138[(_134 + _142)] = 1
         _137[(_135 + _142)] = _100[(_26 + _151)]
         _142 += 1
         _138[(_134 + _142)] = 5
         _142 += 1
         _138[((_133 + _140) + 1)] = _142
         _140 += 1
        _152 += 1
        _151 += 1
        _150 += 1
      if (_152 > 0):
       _136[(_130 + _141)] = ((_146 * _110) + _149)
       _138[((_128 + _141) + 1)] = _140
       _141 += 1
    if (_142!=_109):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal! Incorrect a-code length")
    if (_140!=_108):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal! Incorrect nnz length")
    if (_141!=_107):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal! Incorrect nelem length")
    if (_138[(_128 + _141)]!=_108):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal! Incorrect ptr")
    if (not _127):
     _0.popi64(_107)
   _2.clear()
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprMulParamLeft(")._a_S(self.__p.toString())._a_S(",")._a_S(self.__e.toString())._a_S(")")._toString_())
 return ExprMulParamLeft
mosek_fusion_ExprMulParamLeft=__mk_mosek_fusion_ExprMulParamLeft()
del __mk_mosek_fusion_ExprMulParamLeft
def __mk_mosek_fusion_ExprOptimizeCode():
 class ExprOptimizeCode(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprOptimizeCode__expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprOptimizeCode.ctor(mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprOptimizeCode._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprOptimizeCode._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprOptimizeCode._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprOptimizeCode._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprOptimizeCode.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprOptimizeCode.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprOptimizeCode._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprOptimizeCode._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprOptimizeCode.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprOptimizeCode: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2(expr):
    o = ExprOptimizeCode.__new__(ExprOptimizeCode)
    o._ctor_init_Lmosek_4fusion_4Expression_2(expr)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    expr, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(expr))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    expr, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(expr))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2(self,expr):
    self._ctor_init_Lmosek_4fusion_4Expression_2(expr)
  def _ctor_init_Lmosek_4fusion_4Expression_2(self,expr):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),expr.getShape())
   (self.__expr) = expr
  @staticmethod
  def __compress_1code_alt_Lmosek_4fusion_4WorkStack_2I_3II_3II_3DI_3DIIII(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5,_t__6,_t__7,_t__8,_t__9,_t__10,_t__11,_t__12):
   _0=_t__0
   _1=numpy.int32(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.int32(_t__3)
   _4=numpy.array(_t__4,dtype=numpy.dtype(numpy.int32))
   _5=numpy.int32(_t__5)
   _6=numpy.array(_t__6,dtype=numpy.dtype(numpy.float64))
   _7=numpy.int32(_t__7)
   _8=numpy.array(_t__8,dtype=numpy.dtype(numpy.float64))
   _9=numpy.int32(_t__9)
   _10=numpy.int32(_t__10)
   _11=numpy.int32(_t__11)
   _12=numpy.int32(_t__12)
   _1_res = mosek_fusion_ExprOptimizeCode.__compress_1code_Lmosek_4fusion_4WorkStack_2I_3II_3II_3DI_3DIIII(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12)
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__6[:] = _6
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__8[:] = _8
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __compress_1code_Lmosek_4fusion_4WorkStack_2I_3II_3II_3DI_3DIIII(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12):
   _13=_4[(_5 + _1)]
   _14=_0.alloci32((_13 + 2))
   _15=0
   _16=_0.alloci32((_13 + 2))
   _17=_0.alloci32((_13 + 3))
   _18=_0.allocf64((_13 + 2))
   _19=_0.alloci32((_13 + 2))
   _20=0
   _21=(- 1)
   _22=(_0.i32)
   _23=(_0.f64)
   _24=_22
   _25=_23
   _26=_22
   _27=(_0.pi32)
   _28=(_0.pi64)
   _29=(_0.pf64)
   _26[_12] = 0
   _30=0
   for _31 in range(0,_1):
    _32=_4[((_5 + _31) + 1)]
    _33=_4[(_5 + _31)]
    if (_21 < 0):
     _15 = 0
     _20 = 0
     _22[_17] = 0
     for _34 in range(0,(_32 - _33)):
      _24[(_19 + _34)] = (- 9999)
     for _35 in range(_33,_32):
      _36=_2[(_3 + _35)]
      _37=_8[(_9 + _35)]
      if (_36==0):
       pass
      elif (_36==2): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:795:22-48
       _24[(_19 + _20)] = 2
       _23[(_18 + _20)] = _37
       _22[((_17 + _20) + 1)] = _22[(_17 + _20)]
       _22[(_14 + _15)] = _20
       _15 += 1
       _20 += 1
      elif (_36==1): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:803:22-44
       _22[(_19 + _20)] = _36
       _23[(_18 + _20)] = _37
       _22[((_17 + _20) + 1)] = _22[(_17 + _20)]
       _22[(_14 + _15)] = _20
       _15 += 1
       _20 += 1
      elif (_36==3): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:811:22-54
       if (_15 >= 2):
        _38=_22[((_14 + _15) - 1)]
        _15 -= 1
        _39=_22[((_14 + _15) - 1)]
        _15 -= 1
        if ((_22[(_19 + _39)]==2) and (_22[(_19 + _38)]==2)):
         _22[(_19 + _20)] = 2
         _23[(_18 + _20)] = (_23[(_18 + _39)] + _23[(_18 + _38)])
         _22[((_17 + _20) + 1)] = _22[(_17 + _20)]
         _22[(_14 + _15)] = _20
         _15 += 1
         _20 += 1
        elif ((_22[(_19 + _39)]==2) and ((_23[(_18 + _39)] <= 0.0) and (_23[(_18 + _39)] >= 0.0))): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:829:26-831:49
         _22[((_17 + _20) + 1)] = _22[(_17 + _20)]
         _23[(_18 + _20)] = 0.0
         _22[(_14 + _15)] = _38
         _15 += 1
         _20 += 1
        elif ((_22[(_19 + _38)]==2) and ((_23[(_18 + _38)] <= 0.0) and (_23[(_18 + _38)] >= 0.0))): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:839:26-841:49
         _22[((_17 + _20) + 1)] = _22[(_17 + _20)]
         _22[(_14 + _15)] = _39
         _15 += 1
         _20 += 1
        else:
         _22[((_17 + _20) + 1)] = (_22[(_17 + _20)] + 2)
         _22[(_16 + _22[(_17 + _20)])] = _39
         _22[((_16 + _22[(_17 + _20)]) + 1)] = _38
         _22[(_19 + _20)] = _36
         _23[(_18 + _20)] = _37
         _22[(_14 + _15)] = _20
         _15 += 1
         _20 += 1
       else:
        _21 = _35
      elif (_36==5): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:865:22-54
       if (_15 >= 2):
        _40=_22[((_14 + _15) - 1)]
        _15 -= 1
        _41=_22[((_14 + _15) - 1)]
        _15 -= 1
        if ((_22[(_19 + _41)]==2) and (_22[(_19 + _40)]==2)):
         _22[(_19 + _20)] = 2
         _23[(_18 + _20)] = (_23[(_18 + _41)] * _23[(_18 + _40)])
         _22[((_17 + _20) + 1)] = _22[(_17 + _20)]
         _22[(_14 + _15)] = _20
         _15 += 1
         _20 += 1
        elif ((_22[(_19 + _41)]==2) and ((_23[(_18 + _41)] <= 0.0) and (_23[(_18 + _41)] >= 0.0))): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:883:26-885:49
         _22[((_17 + _20) + 1)] = _22[(_17 + _20)]
         _22[(_19 + _20)] = 2
         _23[(_18 + _20)] = 0.0
         _22[(_14 + _15)] = _20
         _15 += 1
         _20 += 1
        elif ((_22[(_19 + _40)]==2) and ((_23[(_18 + _40)] <= 0.0) and (_23[(_18 + _40)] >= 0.0))): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:894:26-896:49
         _22[((_17 + _20) + 1)] = _22[(_17 + _20)]
         _22[(_19 + _20)] = 2
         _23[(_18 + _20)] = 0.0
         _22[(_14 + _15)] = _20
         _15 += 1
         _20 += 1
        elif ((_22[(_19 + _40)]==2) and ((_23[(_18 + _40)] <= 1.0) and (_23[(_18 + _40)] >= 1.0))): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:905:26-907:49
         _22[((_17 + _20) + 1)] = (_22[(_17 + _20)] + 1)
         _22[(_14 + _15)] = _41
         _15 += 1
         _20 += 1
        elif ((_22[(_19 + _41)]==2) and ((_23[(_18 + _41)] <= 1.0) and (_23[(_18 + _41)] >= 1.0))): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:914:26-916:49
         _22[((_17 + _20) + 1)] = (_22[(_17 + _20)] + 1)
         _22[(_14 + _15)] = _40
         _15 += 1
         _20 += 1
        else:
         _22[((_17 + _20) + 1)] = (_22[(_17 + _20)] + 2)
         _22[(_16 + _22[(_17 + _20)])] = _41
         _22[((_16 + _22[(_17 + _20)]) + 1)] = _40
         _22[(_19 + _20)] = 5
         _23[(_18 + _20)] = _37
         _22[(_14 + _15)] = _20
         _15 += 1
         _20 += 1
       else:
        _21 = _35
      elif (_36==4): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:937:22-54
       if (_15 >= 1):
        _42=_22[((_14 + _15) - 1)]
        _15 -= 1
        if (_22[(_19 + _42)]==2):
         _22[(_19 + _20)] = 2
         _23[(_18 + _20)] = (- _23[(_18 + _42)])
         _22[((_17 + _20) + 1)] = _22[(_17 + _20)]
         _22[(_14 + _15)] = _20
         _15 += 1
         _20 += 1
        else:
         _22[(_19 + _20)] = _2[(_3 + _35)]
         _22[((_17 + _20) + 1)] = (_22[(_17 + _20)] + 1)
         _22[(_16 + _22[(_17 + _20)])] = _42
         _22[(_14 + _15)] = _20
         _15 += 1
         _20 += 1
       else:
        _21 = _35
      elif (_36==6): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:964:22-54
       if (_15 >= 1):
        _43=_22[((_14 + _15) - 1)]
        _15 -= 1
        if (_22[(_19 + _43)]==2):
         _22[(_19 + _20)] = 2
         _23[(_18 + _20)] = (1.0 / _23[(_18 + _43)])
         _22[((_17 + _20) + 1)] = _22[(_17 + _20)]
         _22[(_14 + _15)] = _20
         _15 += 1
         _20 += 1
        else:
         _22[(_19 + _20)] = _2[(_3 + _35)]
         _22[((_17 + _20) + 1)] = (_22[(_17 + _20)] + 1)
         _22[(_16 + _22[(_17 + _20)])] = _43
         _22[(_14 + _15)] = _20
         _15 += 1
         _20 += 1
       else:
        _21 = _35
      elif (_36==8): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:991:22-42
       _44=numpy.int32(_37)
       if (_44 < 0):
        _21 = _35
       elif (_44 > _15): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:997:24-36
        _21 = _35
       elif (_44==0): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:1002:24-32
        _22[(_19 + _20)] = 2
        _23[(_18 + _20)] = 0.0
        _22[((_17 + _20) + 1)] = _22[(_17 + _20)]
        _22[(_14 + _15)] = _20
        _15 += 1
        _20 += 1
       elif (_44==1): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:1010:24-32
        _22[(_19 + _20)] = 0
        _22[((_17 + _20) + 1)] = _22[(_17 + _20)]
        _22[(_14 + _15)] = _20
        _15 += 1
        _20 += 1
       else:
        _45=numpy.array([_22[(((_14 + _15) - 1) - _46)] for _46 in range(0,_44)], dtype=numpy.dtype(numpy.int32))
        _15 -= _44
        _47=(_44 - 1)
        _48=0
        while (_48 < _47):
         while ((_48 < _47) and (_22[(_19 + _45[_48])]==2)):
          _48 += 1
         while ((_48 < _47) and (_22[(_19 + _45[_47])]!=2)):
          _47 -= 1
         if (_48 < _47):
          _49=_45[_48]
          _45[_48] = _45[_47]
          _45[_47] = _49
          _48 += 1
          _47 -= 1
        _50=0.0
        _51=0
        while ((_51 < _44) and (_22[(_19 + _45[_51])]==2)):
         _50 += _23[(_18 + _45[_51])]
         _51 += 1
        _52=(((_44 - _51) + 1) if ((_51 > 0) ) else _44)
        _53=0
        if (_51 < 2):
         for _54 in range(0,_44):
          _22[((_16 + _22[(_17 + _20)]) + _54)] = _45[_54]
         _22[((_17 + _20) + 1)] = (_22[(_17 + _20)] + _44)
         _22[(_19 + _20)] = 8
         _23[(_18 + _20)] = _44
         _22[(_14 + _15)] = _20
         _15 += 1
         _20 += 1
        else:
         _22[(_19 + _20)] = 2
         _23[(_18 + _20)] = _50
         _22[((_17 + _20) + 1)] = _22[(_17 + _20)]
         _20 += 1
         if (_51==_44):
          _22[(_14 + _15)] = (_20 - 1)
          _15 += 1
         else:
          _22[(_16 + _22[(_17 + _20)])] = (_20 - 1)
          for _55 in range(_51,_44):
           _22[((((_16 + _22[(_17 + _20)]) + _55) - _51) + 1)] = _45[_55]
          _22[((_17 + _20) + 1)] = (_22[(_17 + _20)] + _52)
          _22[(_19 + _20)] = 8
          _23[(_18 + _20)] = _52
          _22[(_14 + _15)] = _20
          _15 += 1
          _20 += 1
      else:
       _21 = _35
    if ((_21 < 0) and (_15!=1)):
     _21 = _20
    if (_21 < 0):
     _56=_30
     _57=_56
     if (_22[(_19 + _22[((_14 + _15) - 1)])]==2):
      _6[(_7 + _31)] += _23[(_18 + _22[((_14 + _15) - 1)])]
      _24[(_10 + _57)] = 10
      _25[(_11 + _57)] = 0.0
      _57 += 1
     else:
      if ((_6[(_7 + _31)] < 0) or (0 < _6[(_7 + _31)])):
       _24[(_10 + _57)] = 3
       _57 += 1
       _24[(_10 + _57)] = 2
       _25[(_11 + _57)] = _6[(_7 + _31)]
       _57 += 1
       _6[(_7 + _31)] = 0
      while (_15 > 0):
       _58=_22[((_14 + _15) - 1)]
       _15 -= 1
       _59=_22[(_19 + _58)]
       _60=_23[(_18 + _58)]
       _24[(_10 + _57)] = _59
       _25[(_11 + _57)] = _60
       _57 += 1
       for _61 in range(_22[(_17 + _58)],_22[((_17 + _58) + 1)]):
        _22[(_14 + _15)] = _22[(_16 + _61)]
        _15 += 1
      _62=_57
      _62 -= 1
      while (_56 < _62):
       _63=_24[(_10 + _56)]
       _64=_25[(_11 + _56)]
       _24[(_10 + _56)] = _24[(_10 + _62)]
       _25[(_11 + _56)] = _25[(_11 + _62)]
       _24[(_10 + _62)] = _63
       _25[(_11 + _62)] = _64
       _56 += 1
       _62 -= 1
     _26[((_12 + _31) + 1)] = _57
     _30 = _57
   (_0.pi32) = _27
   (_0.pi64) = _28
   (_0.pf64) = _29
   if (_21 >= 0):
    raise mosek_fusion_UnexpectedError._ctor_S("Internal error: Invalid parameterization code list")
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__expr.recursive_eval(_1,_0,_2,_3)
   _1.peek_expr()
   _1.pop_expr()
   _4=(_1.nd)
   _5=(_1.shape_base)
   _6=(_1.nelem)
   _7=(_1.nnz)
   _8=(_1.hassp)
   _9=(_1.ncodeatom)
   _10=(_1.ptr_base)
   _11=(_1.sp_base)
   _12=(_1.nidxs_base)
   _13=(_1.cof_base)
   _14=(_1.code_base)
   _15=(_1.codeptr_base)
   _16=(_1.cconst_base)
   _17=(_1.i32)
   _18=(_1.i64)
   _19=(_1.f64)
   if (_9==0):
    _0.alloc_expr(_4,_6,_7,_8,0)
    _20=(_0.ptr_base)
    _21=(_0.sp_base)
    _22=(_0.nidxs_base)
    _23=(_0.cof_base)
    _24=(_0.shape_base)
    _25=(_0.i32)
    _26=(_0.i64)
    _27=(_0.f64)
    for _28 in range(0,(_6 + 1)):
     _25[(_20 + _28)] = _17[(_10 + _28)]
    for _29 in range(0,_4):
     _25[(_24 + _29)] = _17[(_5 + _29)]
    for _30 in range(0,_7):
     _26[(_22 + _30)] = _18[(_12 + _30)]
    for _31 in range(0,_7):
     _27[(_23 + _31)] = _19[(_13 + _31)]
    if _8:
     for _32 in range(0,_6):
      _26[(_21 + _32)] = _18[(_11 + _32)]
   else:
    _33=_2.alloci32((_9 + (_7 * 2)))
    _34=_2.alloci32((_7 + 1))
    _35=_2.allocf64((_9 + (_7 * 2)))
    mosek.fusion.ExprOptimizeCode.__compress_1code_Lmosek_4fusion_4WorkStack_2I_3II_3II_3DI_3DIIII(_2,_7,_17,_14,_17,_15,_19,_13,_19,_16,_33,_35,_34)
    _36=(_2.i32)
    _37=(_2.f64)
    _38=0
    _39=0
    _40=0
    for _41 in range(0,_6):
     _42=0
     for _43 in range(_17[(_10 + _41)],_17[((_10 + _41) + 1)]):
      if ((_19[(_13 + _43)] < 0) or (0 < _19[(_13 + _43)])):
       _39 += 1
       _42 += 1
       _38 += 1
      else:
       if ((_36[((_34 + _43) + 1)] - _36[(_34 + _43)]) > 1):
        _39 += 1
        _42 += 1
        _38 += (_36[((_34 + _43) + 1)] - _36[(_34 + _43)])
       else:
        if (_36[(_33 + _36[(_34 + _43)])]!=10):
         _39 += 1
         _42 += 1
         _38 += 1
     if (_42 > 0):
      _40 += 1
    _44=False
    _45=1
    for _46 in range(0,_4):
     _45 *= _17[(_5 + _46)]
    _44 = (_45 > _40)
    _0.alloc_expr(_4,_40,_39,_44,_38)
    _47=(_0.ptr_base)
    _48=(_0.sp_base)
    _49=(_0.shape_base)
    _50=(_0.nidxs_base)
    _51=(_0.cof_base)
    _52=(_0.code_base)
    _53=(_0.codeptr_base)
    _54=(_0.cconst_base)
    _55=(_0.i32)
    _56=(_0.i64)
    _57=(_0.f64)
    for _58 in range(0,_4):
     _55[(_49 + _58)] = _17[(_5 + _58)]
    if (_9==0):
     for _59 in range(0,_7):
      _56[(_50 + _59)] = _18[(_12 + _59)]
     for _60 in range(0,_7):
      _57[(_51 + _60)] = _19[(_13 + _60)]
     for _61 in range(0,(_6 + 1)):
      _55[(_47 + _61)] = _55[(_10 + _61)]
     if _8:
      for _62 in range(0,_6):
       _56[(_48 + _62)] = _56[(_11 + _62)]
    else:
     _63=0
     _64=0
     _65=0
     _55[_47] = 0
     if (_38 > 0):
      _55[_53] = 0
     for _66 in range(0,_6):
      _67=0
      for _68 in range(_17[(_10 + _66)],_17[((_10 + _66) + 1)]):
       if ((_19[(_13 + _68)] < 0) or (0 < _19[(_13 + _68)])):
        _56[(_50 + _65)] = _18[(_12 + _68)]
        _57[(_51 + _65)] = _19[(_13 + _68)]
        _55[(_52 + _63)] = _36[(_33 + _36[(_34 + _68)])]
        _57[(_54 + _63)] = _37[(_35 + _36[(_34 + _68)])]
        _63 += 1
        _55[((_53 + _65) + 1)] = _63
        _65 += 1
        _67 += 1
       else:
        if (((_36[((_34 + _68) + 1)] - _36[(_34 + _68)]) > 1) or (_36[(_33 + _36[(_34 + _68)])]!=10)):
         _56[(_50 + _65)] = _18[(_12 + _68)]
         _57[(_51 + _65)] = 0.0
         for _69 in range(_36[(_34 + _68)],_36[((_34 + _68) + 1)]):
          _55[(_52 + _63)] = _36[(_33 + _69)]
          _57[(_54 + _63)] = _37[(_35 + _69)]
          _63 += 1
         _55[((_53 + _65) + 1)] = _63
         _65 += 1
         _67 += 1
      if (_67 > 0):
       _55[((_47 + _64) + 1)] = _65
       if _44:
        if _8:
         _56[(_48 + _64)] = _18[(_11 + _66)]
        else:
         _56[(_48 + _64)] = _66
       _64 += 1
     if (_64!=_40):
      raise mosek_fusion_UnexpectedError._ctor_S("Internal: Incorrect result nelem")
     if (_65!=_39):
      raise mosek_fusion_UnexpectedError._ctor_S("Internal: Incorrect result nnz")
     if (_63!=_38):
      raise mosek_fusion_UnexpectedError._ctor_S("Internal: Incorrect result num code atoms")
     if (_38 > 0):
      if (_55[(_53 + _39)]!=_38):
       raise mosek_fusion_UnexpectedError._ctor_S("Internal: Incorrect codeptr")
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprOptimizeCode(")._a_S(self.__expr.toString())._a_S(")")._toString_())
 return ExprOptimizeCode
mosek_fusion_ExprOptimizeCode=__mk_mosek_fusion_ExprOptimizeCode()
del __mk_mosek_fusion_ExprOptimizeCode
def __mk_mosek_fusion_ExprCompress():
 class ExprCompress(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprCompress__expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprCompress.ctor(mosek.fusion.Expression)')
  def eval_continue(self,*args):
    if False: pass
    elif mosek_fusion_ExprCompress._match_eval_1continue_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_1continue_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprCompress._match_alt_eval_1continue_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_1continue_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    else:
      raise ValueError('Invalid argument list eval_continue('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprCompress.eval_continue(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)')
  @staticmethod
  def merge_sort(*args):
    if False: pass
    elif mosek_fusion_ExprCompress._match_merge_1sort_IIIIII_3I_3J(*args): 
      return mosek_fusion_ExprCompress._merge_1sort_IIIIII_3I_3J(*args)
    elif mosek_fusion_ExprCompress._match_alt_merge_1sort_IIIIII_3I_3J(*args): 
      return mosek_fusion_ExprCompress._merge_1sort_alt_IIIIII_3I_3J(*args)
    else:
      raise ValueError('Invalid argument list merge_sort('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprCompress.merge_sort(int32,int32,int32,int32,int32,int32,array(int32,ndim=1),array(int64,ndim=1))')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprCompress._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprCompress._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprCompress.toString()')
  @staticmethod
  def arg_sort(*args):
    if False: pass
    elif mosek_fusion_ExprCompress._match_arg_1sort_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2IIIII(*args): 
      return mosek_fusion_ExprCompress._arg_1sort_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2IIIII(*args)
    elif mosek_fusion_ExprCompress._match_alt_arg_1sort_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2IIIII(*args): 
      return mosek_fusion_ExprCompress._arg_1sort_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2IIIII(*args)
    else:
      raise ValueError('Invalid argument list arg_sort('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprCompress.arg_sort(mosek.fusion.WorkStack,mosek.fusion.WorkStack,int32,int32,int32,int32,int32)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprCompress._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprCompress._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprCompress._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprCompress._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprCompress.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprCompress.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprCompress: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2(expr):
    o = ExprCompress.__new__(ExprCompress)
    o._ctor_init_Lmosek_4fusion_4Expression_2(expr)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    expr, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(expr))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    expr, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(expr))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2(self,expr):
    self._ctor_init_Lmosek_4fusion_4Expression_2(expr)
  def _ctor_init_Lmosek_4fusion_4Expression_2(self,expr):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),expr.getShape())
   (self.__expr) = expr
  @staticmethod
  def _match_arg_1sort_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2IIIII(*args):
    if len(args) != 7: return False
    _0,_1,_2,_3,_4,_5,_6, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_I__(_2) and __arg_match_I__(_3) and __arg_match_I__(_4) and __arg_match_I__(_5) and __arg_match_I__(_6))
  @staticmethod
  def _match_alt_arg_1sort_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2IIIII(*args):
    if len(args) != 7: return False
    _0,_1,_2,_3,_4,_5,_6, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_I__(_2) and __arg_alt_match_I__(_3) and __arg_alt_match_I__(_4) and __arg_alt_match_I__(_5) and __arg_alt_match_I__(_6))
  @staticmethod
  def _arg_1sort_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2IIIII(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5,_t__6):
    return mosek_fusion_ExprCompress._arg_1sort_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2IIIII(_0,_1,numpy.int32(__2),numpy.int32(__3),numpy.int32(__4),numpy.int32(__5),numpy.int32(__6))
  @staticmethod
  def _arg_1sort_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2IIIII(_0,_1,_2,_3,_4,_5,_6):
   _7=0
   _8=(_0.i32)
   for _9 in range(0,_3):
    if ((_8[((_5 + _9) + 1)] - _8[(_5 + _9)]) > _7):
     _7 = (_8[((_5 + _9) + 1)] - _8[(_5 + _9)])
   _10=(_1.alloci32((_7 * 2)) if ((_7 > 2) ) else 99999)
   _11=(_1.i32)
   _8 = (_0.i32)
   _12=(_0.i64)
   for _13 in range(0,_3):
    _14=_8[(_5 + _13)]
    _15=_8[((_5 + _13) + 1)]
    _16=(_15 - _14)
    if (_16==0):
     pass
    elif (_16==1): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:343:18-24
     _11[(_2 + _14)] = _14
    elif (_16==2): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:346:18-24
     if (_12[(_6 + _14)] <= _12[((_6 + _14) + 1)]):
      _11[(_2 + _14)] = _14
      _11[((_2 + _14) + 1)] = (_14 + 1)
     else:
      _11[(_2 + _14)] = (_14 + 1)
      _11[((_2 + _14) + 1)] = _14
    else:
     _17=_12[(_6 + _14)]
     _18=_12[(_6 + _14)]
     _19=False
     for _20 in range((_14 + 1),_15):
      _19 = (_19 and (_12[((_6 + _20) - 1)] <= _12[(_6 + _20)]))
      if (_17 > _12[(_6 + _20)]):
       _17 = _12[(_6 + _20)]
      if (_18 < _12[(_6 + _20)]):
       _18 = _12[(_6 + _20)]
     if _19:
      for _21 in range(_14,_15):
       _11[(_2 + _21)] = _21
     elif (((_18 - _17) + 1) <= _16): # bld/grindsted/final/default/src/fusion/ExprCompress.monty:371:20-40
      _22=((_18 - _17) + 1)
      for _23 in range(0,(_22 + 1)):
       _11[(_10 + _23)] = 0
      for _24 in range(_14,_15):
       _11[(((_10 + _12[(_6 + _24)]) - _17) + 1)] += 1
      for _25 in range(0,_22):
       _11[((_10 + _25) + 1)] += _11[(_10 + _25)]
      for _26 in range(_14,_15):
       _11[((_2 + _14) + _11[((_10 + _12[(_6 + _26)]) - _17)])] = _26
       _11[((_10 + _12[(_6 + _26)]) - _17)] += 1
     else:
      _27=1
      _28=_10
      _29=(_10 + _16)
      for _30 in range(0,_16):
       _11[(_28 + _30)] = _30
      while (_27 < _16):
       _31=(_27 * 2)
       _32=(_16 // _31)
       if (((_32 * _31) + _27) < _16):
        _32 += 1
       _33=0
       for _34 in range(0,_32):
        _35=(_34 * _31)
        _36=(_35 + _27)
        _37=_36
        _38=(_37 + _27)
        if (_38 > _16):
         _38 = _16
        while ((_35 < _36) and (_37 < _38)):
         if (_12[((_6 + _11[(_28 + _35)]) + _14)] <= _12[((_6 + _11[(_28 + _37)]) + _14)]):
          _11[(_29 + _33)] = _11[(_28 + _35)]
          _33 += 1
          _35 += 1
         else:
          _11[(_29 + _33)] = _11[(_28 + _37)]
          _33 += 1
          _37 += 1
        while (_35 < _36):
         _11[(_29 + _33)] = _11[(_28 + _35)]
         _33 += 1
         _35 += 1
        while (_37 < _38):
         _11[(_29 + _33)] = _11[(_28 + _37)]
         _33 += 1
         _37 += 1
       if ((_32 * _31) < _16):
        _39=(_32 * _31)
        while (_39 < _16):
         _11[(_29 + _33)] = _11[(_28 + _39)]
         _39 += 1
         _33 += 1
       _40=_28
       _28 = _29
       _29 = _40
       _27 *= 2
      for _41 in range(0,_16):
       _11[((_2 + _14) + _41)] = (_11[(_28 + _41)] + _14)
  @staticmethod
  def _match_merge_1sort_IIIIII_3I_3J(*args):
    if len(args) != 8: return False
    _0,_1,_2,_3,_4,_5,_6,_7, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2) and __arg_match_I__(_3) and __arg_match_I__(_4) and __arg_match_I__(_5) and __arg_match__3I__(_6) and __arg_match__3J__(_7))
  @staticmethod
  def _match_alt_merge_1sort_IIIIII_3I_3J(*args):
    if len(args) != 8: return False
    _0,_1,_2,_3,_4,_5,_6,_7, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2) and __arg_alt_match_I__(_3) and __arg_alt_match_I__(_4) and __arg_alt_match_I__(_5) and __arg_alt_match__3I__(_6) and __arg_alt_match__3J__(_7))
  @staticmethod
  def _merge_1sort_alt_IIIIII_3I_3J(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5,_t__6,_t__7):
   _0=numpy.int32(_t__0)
   _1=numpy.int32(_t__1)
   _2=numpy.int32(_t__2)
   _3=numpy.int32(_t__3)
   _4=numpy.int32(_t__4)
   _5=numpy.int32(_t__5)
   _6=numpy.array(_t__6,dtype=numpy.dtype(numpy.int32))
   _7=numpy.array(_t__7,dtype=numpy.dtype(numpy.int64))
   _1_res = mosek_fusion_ExprCompress._merge_1sort_IIIIII_3I_3J(_0,_1,_2,_3,_4,_5,_6,_7)
   try:
     _t__6[:] = _6
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__7[:] = _7
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _merge_1sort_IIIIII_3I_3J(_0,_1,_2,_3,_4,_5,_6,_7):
   _8=_0
   _9=_1
   for _10 in range(0,_3):
    _6[(_8 + _10)] = _10
   for _11 in range(0,_2):
    _8 = _0
    _9 = _1
    _12=_6[((_4 + _11) + 1)]
    _13=_6[(_4 + _11)]
    if ((_13 + 1) < _12):
     _14=(_12 - _13)
     _15=0
     while (_14 > 1):
      _15 += 1
      _14 /= 2
     _14 = (_12 - _13)
     _16=1
     for _17 in range(0,(_15 + 1)):
      _18=(((_14 + _16) - 1) // _16)
      _19=(_18 // 2)
      _20=_13
      for _21 in range(0,_19):
       _22=((_21 * _16) * 2)
       _23=(((_13 + _22) + (2 * _16)) if ((((_13 + _22) + (2 * _16)) < _12) ) else _12)
       _24=((_13 + _22) + _16)
       _25=((_13 + _22) + _16)
       _26=(_13 + _22)
       while ((_26 < _25) and (_24 < _23)):
        if (_7[(_5 + _6[(_8 + _26)])] <= _7[(_5 + _6[(_8 + _24)])]):
         _6[(_9 + _20)] = _6[(_8 + _26)]
         _20 += 1
         _26 += 1
        else:
         _6[(_9 + _20)] = _6[(_8 + _24)]
         _20 += 1
         _24 += 1
       while (_26 < _25):
        _6[(_9 + _20)] = _6[(_8 + _26)]
        _20 += 1
        _26 += 1
       while (_24 < _23):
        _6[(_9 + _20)] = _6[(_8 + _24)]
        _20 += 1
        _24 += 1
      for _27 in range(_20,_12):
       _6[(_9 + _27)] = _6[(_8 + _27)]
      _28=_8
      _8 = _9
      _9 = _28
      _16 *= 2
    for _29 in range(_13,_12):
     _6[(_0 + _29)] = _6[(_8 + _29)]
  @staticmethod
  def _match_eval_1continue_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2))
  @staticmethod
  def _match_alt_eval_1continue_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2))
  def _eval_1continue_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(self,_t__0,_t__1,_t__2):
    return self._eval_1continue_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(_0,_1,_2)
  def _eval_1continue_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(self,_0,_1,_2):
   _1.pop_expr()
   _3=(_1.nd)
   _4=(_1.shape_base)
   _5=(_1.nelem)
   _6=(_1.nnz)
   _7=(_1.hassp)
   _8=(_1.ncodeatom)
   _9=(_1.ptr_base)
   _10=(_1.sp_base)
   _11=(_1.nidxs_base)
   _12=(_1.cof_base)
   _13=(_1.code_base)
   _14=(_1.codeptr_base)
   _15=(_1.cconst_base)
   _16=(_1.i32)
   _17=(_1.i64)
   _18=(_1.f64)
   _19=True
   _20=(_2.i32)
   _21=(_2.i64)
   _22=(_2.f64)
   for _23 in range(0,_5):
    for _24 in range(_16[(_9 + _23)],(_16[((_9 + _23) + 1)] - 1)):
     _19 = (_19 and (_17[(_11 + _24)] < _17[((_11 + _24) + 1)]))
   if _19:
    if (_8 > 0):
     for _25 in range(0,_6):
      _19 = (_19 and ((not ((_18[(_12 + _25)] >= 0.0) and (0.0 >= _18[(_12 + _25)]))) or (((_16[((_14 + _25) + 1)] - _16[(_14 + _25)])==0) or (not (((_16[((_14 + _25) + 1)] - _16[(_14 + _25)])==1) and ((_16[(_13 + _16[(_14 + _25)])]==2) and (not ((_18[(_15 + _16[(_14 + _25)])] <= 0.0) and (_18[(_15 + _16[(_14 + _25)])] >= 0.0)))))))))
    else:
     for _26 in range(0,_6):
      _19 = (_19 and (not ((_18[(_12 + _26)] <= 0.0) and (0.0 <= _18[(_12 + _26)]))))
   if _19:
    _0.alloc_expr(_3,_5,_6,_7,_8)
    _27=(_0.ptr_base)
    _28=(_0.nidxs_base)
    _29=(_0.sp_base)
    _30=(_0.cof_base)
    _31=(_0.shape_base)
    _32=(_0.code_base)
    _33=(_0.codeptr_base)
    _34=(_0.cconst_base)
    _35=(_0.i32)
    _36=(_0.i64)
    _37=(_0.f64)
    for _38 in range(0,_3):
     _35[(_31 + _38)] = _16[(_4 + _38)]
    for _39 in range(0,(_5 + 1)):
     _35[(_27 + _39)] = _16[(_9 + _39)]
    for _40 in range(0,_6):
     _36[(_28 + _40)] = _17[(_11 + _40)]
    for _41 in range(0,_6):
     _37[(_30 + _41)] = _18[(_12 + _41)]
    if _7:
     for _42 in range(0,_5):
      _36[(_29 + _42)] = _17[(_10 + _42)]
    if (_8 > 0):
     for _43 in range(0,_8):
      _35[(_32 + _43)] = _16[(_13 + _43)]
     for _44 in range(0,_8):
      _37[(_34 + _44)] = _18[(_15 + _44)]
     for _45 in range(0,(_6 + 1)):
      _35[(_33 + _45)] = _16[(_14 + _45)]
    if (_8 > 0):
     if (_35[(_33 + _6)]!=_8):
      raise mosek_fusion_UnexpectedError._ctor_S("Internal: Incorrect codeptr")
   else:
    _46=_2.alloci32(_6)
    mosek.fusion.ExprCompress._arg_1sort_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2IIIII(_1,_2,_46,_5,_6,_9,_11)
    _47=(_2.i32)
    _48=0
    _49=_8
    _50=(_0.i32)
    for _51 in range(0,_5):
     _52=_16[((_9 + _51) + 1)]
     _53=_16[(_9 + _51)]
     if (_53 < _52):
      _54=_53
      while (_54 < _52):
       _55=0.0
       _56=False
       _57=_17[(_11 + _47[(_46 + _54)])]
       _58=_54
       while ((_54 < _52) and (_17[(_11 + _47[(_46 + _54)])]==_57)):
        _59=_18[(_12 + _47[(_46 + _54)])]
        _56 = (_56 or (not ((_59 <= 0.0) and (_59 >= 0.0))))
        _55 += _59
        _54 += 1
       if (_56 or (_8 > 0)):
        _48 += 1
        if (((_58 + 1) < _54) and (_8 > 0)):
         _49 += 1
    _0.alloc_expr(_3,_5,_48,_7,_49)
    _60=(_0.nidxs_base)
    _61=(_0.shape_base)
    _62=(_0.sp_base)
    _63=(_0.cof_base)
    _64=(_0.ptr_base)
    _65=(_0.code_base)
    _66=(_0.codeptr_base)
    _67=(_0.cconst_base)
    _68=(_0.i32)
    _69=(_0.i64)
    _70=(_0.f64)
    for _71 in range(0,_3):
     _68[(_61 + _71)] = _16[(_4 + _71)]
    if _7:
     for _72 in range(0,_5):
      _69[(_62 + _72)] = _17[(_10 + _72)]
    _73=0
    _74=0
    _68[_64] = 0
    if (_49 > 0):
     _68[_66] = 0
    for _75 in range(0,_5):
     _76=_16[((_9 + _75) + 1)]
     _77=_16[(_9 + _75)]
     if (_77 < _76):
      _78=_77
      _79=_78
      while (_78 < _76):
       _80=0.0
       _81=False
       _82=(_78 + 1)
       _83=_78
       _84=_17[(_11 + _47[(_46 + _83)])]
       while ((_82 < _76) and (_17[(_11 + _47[(_46 + _82)])]==_84)):
        _82 += 1
       if (_8 > 0):
        while (_78 < _82):
         _85=_18[(_12 + _47[(_46 + _78)])]
         _81 = (_81 or (not ((_85 <= 0.0) and (_85 >= 0.0))))
         _80 += _85
         for _86 in range(_16[(_14 + _47[(_46 + _78)])],_16[((_14 + _47[(_46 + _78)]) + 1)]):
          _68[(_65 + _74)] = _16[(_13 + _86)]
          _70[(_67 + _74)] = _18[(_15 + _86)]
          _74 += 1
         _78 += 1
        if ((_82 - _83) > 1):
         _68[(_65 + _74)] = 8
         _70[(_67 + _74)] = (_82 - _83)
         _74 += 1
        _68[((_66 + _73) + 1)] = _74
        _69[(_60 + _73)] = _84
        _70[(_63 + _73)] = _80
        _73 += 1
       else:
        while (_78 < _82):
         _87=_18[(_12 + _47[(_46 + _78)])]
         _81 = (_81 or (not ((_87 <= 0.0) and (_87 >= 0.0))))
         _80 += _87
         _78 += 1
        if _81:
         _69[(_60 + _73)] = _84
         _70[(_63 + _73)] = _80
         _73 += 1
     _68[((_64 + _75) + 1)] = _73
    if (_49!=_74):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: Invalid ncodeatom")
    if (_73!=_48):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: Invalid nnz")
    if (_48!=_68[(_64 + _5)]):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: Invalid ptr")
    if (_49 > 0):
     if (_68[(_66 + _48)]!=_49):
      raise mosek_fusion_UnexpectedError._ctor_S("Internal: Incorrect codeptr")
   _2.clear()
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__expr.recursive_eval(_1,_0,_2,_3)
   self._eval_1continue_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(_0,_1,_2)
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprCompress(")._a_S(self.__expr.toString())._a_S(")")._toString_())
 return ExprCompress
mosek_fusion_ExprCompress=__mk_mosek_fusion_ExprCompress()
del __mk_mosek_fusion_ExprCompress
def __mk_mosek_fusion_ExprConst():
 class ExprConst(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprConst__sparsity','_ExprConst__bfix']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor__3I_3J_3D(*args): 
      self._ctor_init__3I_3J_3D(*args)
    elif self.__match_alt_ctor__3I_3J_3D(*args):
      self._ctor_alt_init__3I_3J_3D(*args)
    elif self.__match_ctor__3I_3JD(*args): 
      self._ctor_init__3I_3JD(*args)
    elif self.__match_alt_ctor__3I_3JD(*args):
      self._ctor_alt_init__3I_3JD(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprConst.ctor(array(int32,ndim=1),array(int64,ndim=1),array(double,ndim=1))\n\tmosek.fusion.ExprConst.ctor(array(int32,ndim=1),array(int64,ndim=1),double)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprConst._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprConst._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprConst._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprConst._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprConst.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprConst.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def recursive_eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprConst._match_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprConst._match_alt_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._recursive_1eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list recursive_eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprConst.recursive_eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprConst._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprConst._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprConst.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprConst: '+self._toString_()
  @staticmethod
  def _ctor__3I_3J_3D(shape,sparsity,bfix):
    o = ExprConst.__new__(ExprConst)
    o._ctor_init__3I_3J_3D(shape,sparsity,bfix)
    return o
  @staticmethod
  def __match_ctor__3I_3J_3D(*args):
    if len(args) != 3: return False
    shape,sparsity,bfix, = args
    return (__arg_match__3I__(shape) and __arg_match__3J__(sparsity) and __arg_match__3D__(bfix))
  @staticmethod
  def __match_alt_ctor__3I_3J_3D(*args):
    if len(args) != 3: return False
    shape,sparsity,bfix, = args
    return (__arg_alt_match__3I__(shape) and __arg_alt_match__3J__(sparsity) and __arg_alt_match__3D__(bfix))
  def _ctor_alt_init__3I_3J_3D(self,shape,sparsity,bfix):
    self._ctor_init__3I_3J_3D(numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.array(sparsity,dtype=numpy.dtype(numpy.int64)),numpy.array(bfix,dtype=numpy.dtype(numpy.float64)))
  def _ctor_init__3I_3J_3D(self,shape,sparsity,bfix):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,None,shape)
   (self.__bfix) = mosek.fusion.Utils.Tools._arraycopy__3D(bfix)
   (self.__sparsity) = (mosek.fusion.Utils.Tools._arraycopy__3J(sparsity) if ((sparsity is not None) ) else None)
   mosek.fusion.ExprConst.__validate__3I_3D_3J(shape,bfix,sparsity)
  @staticmethod
  def _ctor__3I_3JD(shape,sparsity,bfix):
    o = ExprConst.__new__(ExprConst)
    o._ctor_init__3I_3JD(shape,sparsity,bfix)
    return o
  @staticmethod
  def __match_ctor__3I_3JD(*args):
    if len(args) != 3: return False
    shape,sparsity,bfix, = args
    return (__arg_match__3I__(shape) and __arg_match__3J__(sparsity) and __arg_match_D__(bfix))
  @staticmethod
  def __match_alt_ctor__3I_3JD(*args):
    if len(args) != 3: return False
    shape,sparsity,bfix, = args
    return (__arg_alt_match__3I__(shape) and __arg_alt_match__3J__(sparsity) and __arg_alt_match_D__(bfix))
  def _ctor_alt_init__3I_3JD(self,shape,sparsity,bfix):
    self._ctor_init__3I_3JD(numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.array(sparsity,dtype=numpy.dtype(numpy.int64)),numpy.float64(bfix))
  def _ctor_init__3I_3JD(self,shape,sparsity,bfix):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,None,shape)
   _0=(mosek.fusion.Set._size__3I(shape) if ((sparsity is None) ) else int((sparsity).shape[0]))
   (self.__bfix) = numpy.array([bfix for _1 in range(0,_0)], dtype=numpy.dtype(numpy.float64))
   (self.__sparsity) = (mosek.fusion.Utils.Tools._arraycopy__3J(sparsity) if ((sparsity is not None) ) else None)
   mosek.fusion.ExprConst.__validate__3I_3D_3J(shape,(self.__bfix),sparsity)
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   _4=self.getShape()
   _5=int((_4).shape[0])
   _6=0
   for _7 in range(0,int((self.__bfix).shape[0])):
    if (not ((self.__bfix[_7] <= 0.0) and (self.__bfix[_7] >= 0.0))):
     _6 += 1
   _8=int((self.__bfix).shape[0])
   _9=((self.__sparsity is not None) and (int((self.__sparsity).shape[0]) < mosek.fusion.Set._size__3I(_4)))
   _0.alloc_expr(_5,_8,_6,_9,0)
   _10=(_0.shape_base)
   _11=(_0.ptr_base)
   _12=(_0.sp_base)
   _13=(_0.nidxs_base)
   _14=(_0.cof_base)
   _15=(_0.i32)
   _16=(_0.i64)
   _17=(_0.f64)
   for _18 in range(0,_5):
    _15[(_10 + _18)] = _4[_18]
   _19=0
   _15[_11] = 0
   if _9:
    for _20 in range(0,_8):
     _16[(_12 + _20)] = self.__sparsity[_20]
   for _21 in range(0,_8):
    if (not ((self.__bfix[_21] <= 0.0) and (self.__bfix[_21] >= 0.0))):
     _16[(_13 + _19)] = 0
     _17[(_14 + _19)] = self.__bfix[_21]
     _19 += 1
    _15[((_11 + _21) + 1)] = _19
  @staticmethod
  def _match_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _recursive_1eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  @staticmethod
  def __validate_alt__3I_3D_3J(_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int64))
   _1_res = mosek_fusion_ExprConst.__validate__3I_3D_3J(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __validate__3I_3D_3J(_0,_1,_2):
   _3=mosek.fusion.Set._size__3I(_0)
   if (_2 is not None):
    if (int((_2).shape[0])!=int((_1).shape[0])):
     raise mosek_fusion_LengthError._ctor_S("Mismatching data lengths")
    _4=False
    for _5 in range(0,int((_2).shape[0])):
     if ((_2[_5] < 0) or (_2[_5] >= _3)):
      _4 = True
    if _4:
     raise mosek_fusion_IndexError._ctor_S("Invalid sparsity index")
   else:
    if (int((_1).shape[0])!=_3):
     raise mosek_fusion_LengthError._ctor_S("Mismatching data length")
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return ("ExprConst()")
 return ExprConst
mosek_fusion_ExprConst=__mk_mosek_fusion_ExprConst()
del __mk_mosek_fusion_ExprConst
def __mk_mosek_fusion_ExprPick():
 class ExprPick(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprPick__idxs','_ExprPick__expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2_3_5I(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2_3_5I(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2_3_5I(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2_3_5I(*args)
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2_3J(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2_3J(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2_3J(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2_3J(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprPick.ctor(mosek.fusion.Expression,array(int32,ndim=2))\n\tmosek.fusion.ExprPick.ctor(mosek.fusion.Expression,array(int64,ndim=1))')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprPick._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprPick._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprPick._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprPick._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprPick.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprPick.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprPick._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprPick._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprPick.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprPick: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2_3_5I(expr,idxs):
    o = ExprPick.__new__(ExprPick)
    o._ctor_init_Lmosek_4fusion_4Expression_2_3_5I(expr,idxs)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2_3_5I(*args):
    if len(args) != 2: return False
    expr,idxs, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_match__3_5I__(idxs))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2_3_5I(*args):
    if len(args) != 2: return False
    expr,idxs, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_alt_match__3_5I__(idxs))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2_3_5I(self,expr,idxs):
    self._ctor_init_Lmosek_4fusion_4Expression_2_3_5I(expr,numpy.array(idxs,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_Lmosek_4fusion_4Expression_2_3_5I(self,expr,idxs):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),numpy.array([int((idxs).shape[0])], dtype=numpy.dtype(numpy.int32)))
   _0=expr.getShape()
   _1=int((_0).shape[0])
   (self.__expr) = expr
   (self.__idxs) = numpy.zeros((int((idxs).shape[0]),), dtype=numpy.dtype(numpy.int64))
   _2=(self.__idxs)
   if (int((idxs).shape[1])!=_1):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching shape and index dimensions")
   _3=False
   for _4 in range(0,int((idxs).shape[0])):
    for _5 in range(0,_1):
     if ((idxs[_4,_5] < 0) or (idxs[_4,_5] >= _0[_5])):
      _3 = True
   if _3:
    raise mosek_fusion_IndexError._ctor_S("Pick index out of bounds")
   _6=numpy.zeros((_1,), dtype=numpy.dtype(numpy.int64))
   _6[(_1 - 1)] = 1
   for _7 in range(1,_1):
    _6[((_1 - _7) - 1)] = (_6[(_1 - _7)] * _0[(_1 - _7)])
   for _8 in range(0,int((idxs).shape[0])):
    _9=0
    for _10 in range(0,_1):
     _9 += (_6[_10] * idxs[_8,_10])
    _2[_8] = _9
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2_3J(expr,idxs):
    o = ExprPick.__new__(ExprPick)
    o._ctor_init_Lmosek_4fusion_4Expression_2_3J(expr,idxs)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2_3J(*args):
    if len(args) != 2: return False
    expr,idxs, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_match__3J__(idxs))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2_3J(*args):
    if len(args) != 2: return False
    expr,idxs, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_alt_match__3J__(idxs))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2_3J(self,expr,idxs):
    self._ctor_init_Lmosek_4fusion_4Expression_2_3J(expr,numpy.array(idxs,dtype=numpy.dtype(numpy.int64)))
  def _ctor_init_Lmosek_4fusion_4Expression_2_3J(self,expr,idxs):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),numpy.array([int((idxs).shape[0])], dtype=numpy.dtype(numpy.int32)))
   (self.__expr) = expr
   _0=expr.getShape()
   _1=mosek.fusion.Set._size__3I(_0)
   _2=False
   for _3 in range(0,int((idxs).shape[0])):
    if ((idxs[_3] < 0) or (idxs[_3] >= _1)):
     _2 = True
   if _2:
    raise mosek_fusion_IndexError._ctor_S("Pick index out of bounds")
   (self.__idxs) = mosek.fusion.Utils.Tools._arraycopy__3J(idxs)
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__expr.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.nd)
   _5=(_1.shape_base)
   _6=(_1.nelem)
   _7=(_1.nnz)
   _8=(_1.ncodeatom)
   _9=(_1.hassp)
   _10=(_1.ptr_base)
   _11=(_1.sp_base)
   _12=(_1.nidxs_base)
   _13=(_1.cof_base)
   _14=(_1.code_base)
   _15=(_1.codeptr_base)
   _16=(_1.cconst_base)
   _17=(_1.i32)
   _18=(_1.i64)
   _19=(_1.f64)
   _20=(self.__idxs)
   if (not _9):
    _21=int((_20).shape[0])
    _22=1
    _23=0
    _24=0
    for _25 in range(0,int((_20).shape[0])):
     _23 += (_17[((_10 + _20[_25]) + 1)] - _17[(_10 + _20[_25])])
     if (_8 > 0):
      _24 += (_17[(_15 + _17[((_10 + _20[_25]) + 1)])] - _17[(_15 + _17[(_10 + _20[_25])])])
    _0.alloc_expr(_22,_21,_23,False,_24)
    _26=(_0.cof_base)
    _27=(_0.nidxs_base)
    _28=(_0.ptr_base)
    _29=(_0.shape_base)
    _30=(_0.code_base)
    _31=(_0.codeptr_base)
    _32=(_0.cconst_base)
    pass
    _33=(_0.i32)
    _34=(_0.i64)
    _35=(_0.f64)
    _33[_29] = int((_20).shape[0])
    _36=0
    _37=0
    _33[_28] = 0
    if (_24 > 0):
     _33[_31] = 0
    for _38 in range(0,int((_20).shape[0])):
     for _39 in range(_17[(_10 + _20[_38])],_17[((_10 + _20[_38]) + 1)]):
      _34[(_27 + _37)] = _18[(_12 + _39)]
      _35[(_26 + _37)] = _19[(_13 + _39)]
      if (_24 > 0):
       for _40 in range(_17[(_15 + _39)],_17[((_15 + _39) + 1)]):
        _33[(_30 + _36)] = _17[(_14 + _40)]
        _35[(_32 + _36)] = _19[(_16 + _40)]
        _36 += 1
       _33[((_31 + _37) + 1)] = _36
      _37 += 1
     _33[((_28 + _38) + 1)] = _37
   else:
    _41=1
    _42=int((_20).shape[0])
    _43=0
    _44=0
    _45=(self.__idxs)
    _46=_2.alloci32(int((_45).shape[0]))
    _47=(_2.i32)
    for _48 in range(0,int((_45).shape[0])):
     _49=_6
     _50=0
     while (_50 < _49):
      _51=((_49 + _50) // 2)
      if (_18[(_11 + _51)] >= _45[_48]):
       _49 = _51
      else:
       _50 = (_51 + 1)
     if ((_50 < _6) and (_18[(_11 + _50)]==_45[_48])):
      _47[(_46 + _48)] = _50
      _43 += (_17[((_10 + _50) + 1)] - _17[(_10 + _50)])
      if (_8 > 0):
       _44 += (_17[(_15 + _17[((_10 + _45[_48]) + 1)])] - _17[(_15 + _17[(_10 + _45[_48])])])
     else:
      _47[(_46 + _48)] = (- 1)
    _0.alloc_expr(_41,_42,_43,False,_44)
    _52=(_0.ptr_base)
    _53=(_0.nidxs_base)
    _54=(_0.cof_base)
    _55=(_0.shape_base)
    _56=(_0.code_base)
    _57=(_0.codeptr_base)
    _58=(_0.cconst_base)
    _59=(_0.i32)
    _60=(_0.i64)
    _61=(_0.f64)
    _59[_55] = int((_45).shape[0])
    _59[_52] = 0
    if (_44 > 0):
     _59[_57] = 0
    _62=0
    _63=0
    for _64 in range(0,int((_45).shape[0])):
     if (_47[(_46 + _64)] >= 0):
      _65=_47[(_46 + _64)]
      for _66 in range(_17[(_10 + _65)],_17[((_10 + _65) + 1)]):
       _60[(_53 + _63)] = _18[(_12 + _66)]
       _61[(_54 + _63)] = _19[(_13 + _66)]
       if (_44 > 0):
        for _67 in range(_17[(_15 + _66)],_17[((_15 + _66) + 1)]):
         _59[(_56 + _62)] = _17[(_14 + _67)]
         _61[(_58 + _62)] = _19[(_16 + _67)]
         _62 += 1
        _59[((_57 + _63) + 1)] = _62
       _63 += 1
     _59[((_52 + _64) + 1)] = _63
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return ("ExprPick()")
 return ExprPick
mosek_fusion_ExprPick=__mk_mosek_fusion_ExprPick()
del __mk_mosek_fusion_ExprPick
def __mk_mosek_fusion_ExprSlice():
 class ExprSlice(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprSlice__last','_ExprSlice__first','_ExprSlice__expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2_3I_3I(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2_3I_3I(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2_3I_3I(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2_3I_3I(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprSlice.ctor(mosek.fusion.Expression,array(int32,ndim=1),array(int32,ndim=1))')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprSlice._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprSlice._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprSlice._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprSlice._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprSlice.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprSlice.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprSlice._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprSlice._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprSlice.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprSlice: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2_3I_3I(expr,first,last):
    o = ExprSlice.__new__(ExprSlice)
    o._ctor_init_Lmosek_4fusion_4Expression_2_3I_3I(expr,first,last)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2_3I_3I(*args):
    if len(args) != 3: return False
    expr,first,last, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_match__3I__(first) and __arg_match__3I__(last))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2_3I_3I(*args):
    if len(args) != 3: return False
    expr,first,last, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_alt_match__3I__(first) and __arg_alt_match__3I__(last))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2_3I_3I(self,expr,first,last):
    self._ctor_init_Lmosek_4fusion_4Expression_2_3I_3I(expr,numpy.array(first,dtype=numpy.dtype(numpy.int32)),numpy.array(last,dtype=numpy.dtype(numpy.int32)))
  def _ctor_init_Lmosek_4fusion_4Expression_2_3I_3I(self,expr,first,last):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),mosek.fusion.ExprSlice.__makeShape__3I_3I_3I(expr.getShape(),first,last))
   (self.__expr) = expr
   (self.__first) = first
   (self.__last) = last
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__expr.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.nd)
   _5=(_1.nelem)
   _6=(_1.nnz)
   _7=(_1.ncodeatom)
   _8=(_1.hassp)
   _9=(_1.shape_base)
   _10=(_1.ptr_base)
   _11=(_1.sp_base)
   _12=(_1.nidxs_base)
   _13=(_1.cof_base)
   _14=(_1.code_base)
   _15=(_1.codeptr_base)
   _16=(_1.cconst_base)
   _17=(_1.i32)
   _18=(_1.i64)
   _19=(_1.f64)
   _20=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int64))
   _20[(_4 - 1)] = 1
   for _21 in range(1,_4):
    _20[((_4 - _21) - 1)] = (_20[(_4 - _21)] * _17[((_9 + _4) - _21)])
   _22=0
   _23=0
   _24=0
   if _8:
    for _25 in range(0,_5):
     _26=True
     for _27 in range(0,_4):
      _28=((_18[(_11 + _25)] // _20[_27]) % _17[(_9 + _27)])
      _26 = (_26 and ((_28 >= self.__first[_27]) and (_28 < self.__last[_27])))
     if _26:
      _24 += (_17[((_10 + _25) + 1)] - _17[(_10 + _25)])
      if (_7 > 0):
       _22 += (_17[(_15 + _17[((_10 + _25) + 1)])] - _17[(_15 + _17[(_10 + _25)])])
      _23 += 1
   else:
    _23 = 1
    for _29 in range(0,_4):
     _23 *= (self.__last[_29] - self.__first[_29])
    for _30 in range(0,_5):
     _31=True
     for _32 in range(0,_4):
      _33=((_30 // _20[_32]) % _17[(_9 + _32)])
      _31 = (_31 and ((_33 >= self.__first[_32]) and (_33 < self.__last[_32])))
     if _31:
      _24 += (_17[((_10 + _30) + 1)] - _17[(_10 + _30)])
      if (_7 > 0):
       _22 += (_17[(_15 + _17[((_10 + _30) + 1)])] - _17[(_15 + _17[(_10 + _30)])])
   _34=numpy.array([(self.__last[_35] - self.__first[_35]) for _35 in range(0,_4)], dtype=numpy.dtype(numpy.int32))
   _36=(_23 < mosek.fusion.Set._size__3I(_34))
   _0.alloc_expr(_4,_23,_24,_36,_22)
   _37=(_0.shape_base)
   _38=(_0.cof_base)
   _39=(_0.nidxs_base)
   _40=((_0.sp_base) if (_36 ) else _0.alloci64(_23))
   _41=(_0.ptr_base)
   _42=(_0.code_base)
   _43=(_0.codeptr_base)
   _44=(_0.cconst_base)
   _45=(_0.i32)
   _46=(_0.i64)
   _47=(_0.f64)
   for _48 in range(0,_4):
    _45[(_37 + _48)] = _34[_48]
   _45[_41] = 0
   if (_22 > 0):
    _45[_43] = 0
   _49=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int64))
   _49[(_4 - 1)] = 1
   for _50 in range(1,_4):
    _49[((_4 - _50) - 1)] = (_49[(_4 - _50)] * _34[(_4 - _50)])
   _51=0
   _52=0
   _53=0
   if _8:
    _54=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    for _55 in range(0,_5):
     _56=True
     for _57 in range(0,_4):
      _54[_57] = numpy.int32(((_18[(_11 + _55)] // _20[_57]) % _17[(_9 + _57)]))
      _56 = (_56 and ((_54[_57] >= self.__first[_57]) and (_54[_57] < self.__last[_57])))
     if _56:
      for _58 in range(_17[(_10 + _55)],_17[((_10 + _55) + 1)]):
       _46[(_39 + _53)] = _18[(_12 + _58)]
       _47[(_38 + _53)] = _19[(_13 + _58)]
       if (_22 > 0):
        for _59 in range(_17[(_15 + _58)],_17[((_15 + _58) + 1)]):
         _45[(_42 + _51)] = _17[(_14 + _59)]
         _47[(_44 + _51)] = _19[(_16 + _59)]
         _51 += 1
        _45[((_43 + _53) + 1)] = _51
       _53 += 1
      _60=0
      for _61 in range(0,_4):
       _60 += (_49[_61] * (_54[_61] - self.__first[_61]))
      _46[(_40 + _52)] = _60
      _45[((_41 + _52) + 1)] = _53
      _52 += 1
   else:
    for _62 in range(0,_5):
     _63=True
     for _64 in range(0,_4):
      _65=((_62 // _20[_64]) % _17[(_9 + _64)])
      _63 = (_63 and ((_65 >= self.__first[_64]) and (_65 < self.__last[_64])))
     if _63:
      for _66 in range(_17[(_10 + _62)],_17[((_10 + _62) + 1)]):
       _46[(_39 + _53)] = _18[(_12 + _66)]
       _47[(_38 + _53)] = _19[(_13 + _66)]
       if (_22 > 0):
        for _67 in range(_17[(_15 + _66)],_17[((_15 + _66) + 1)]):
         _45[(_42 + _51)] = _17[(_14 + _67)]
         _47[(_44 + _51)] = _19[(_16 + _67)]
         _51 += 1
        _45[((_43 + _53) + 1)] = _51
       _53 += 1
      _45[((_41 + _52) + 1)] = _53
      _52 += 1
   if (not _36):
    _0.popi64(_23)
  @staticmethod
  def __makeShape_alt__3I_3I_3I(_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_ExprSlice.__makeShape__3I_3I_3I(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __makeShape__3I_3I_3I(_0,_1,_2):
   if ((int((_0).shape[0])!=int((_1).shape[0])) or (int((_0).shape[0])!=int((_2).shape[0]))):
    raise mosek_fusion_LengthError._ctor_S("Invalid or mismatching index lengths")
   for _3 in range(0,int((_0).shape[0])):
    if ((_1[_3] < 0) or ((_2[_3] < _1[_3]) or (_2[_3] > _0[_3]))):
     raise mosek_fusion_IndexError._ctor_S("Slice is out of bounds")
   return (numpy.array([(_2[_4] - _1[_4]) for _4 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int32)))
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   _0=mosek.fusion.Utils.StringBuffer()._a_S("ExprSlice([")._a_I(self.__first[0])._a_S(":")._a_I(self.__last[0])
   for _1 in range(1,int((self.__first).shape[0])):
    _0._a_S(",")._a_I(self.__first[_1])._a_S(":")._a_I(self.__last[_1])
   _0._a_S("],")._a_S(self.__expr.toString())._a_S(")")
   return (_0._toString_())
 return ExprSlice
mosek_fusion_ExprSlice=__mk_mosek_fusion_ExprSlice()
del __mk_mosek_fusion_ExprSlice
def __mk_mosek_fusion_ExprPermuteDims():
 class ExprPermuteDims(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprPermuteDims__dperm','_ExprPermuteDims__expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor__3ILmosek_4fusion_4Expression_2(*args): 
      self._ctor_init__3ILmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor__3ILmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init__3ILmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprPermuteDims.ctor(array(int32,ndim=1),mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprPermuteDims._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprPermuteDims._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprPermuteDims._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprPermuteDims._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprPermuteDims.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprPermuteDims.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def __repr__(self): return 'mosek.fusion.ExprPermuteDims'
  @staticmethod
  def _ctor__3ILmosek_4fusion_4Expression_2(perm,expr):
    o = ExprPermuteDims.__new__(ExprPermuteDims)
    o._ctor_init__3ILmosek_4fusion_4Expression_2(perm,expr)
    return o
  @staticmethod
  def __match_ctor__3ILmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    perm,expr, = args
    return (__arg_match__3I__(perm) and __arg_match_Lmosek_4fusion_4Expression_2__(expr))
  @staticmethod
  def __match_alt_ctor__3ILmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    perm,expr, = args
    return (__arg_alt_match__3I__(perm) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr))
  def _ctor_alt_init__3ILmosek_4fusion_4Expression_2(self,perm,expr):
    self._ctor_init__3ILmosek_4fusion_4Expression_2(numpy.array(perm,dtype=numpy.dtype(numpy.int32)),expr)
  def _ctor_init__3ILmosek_4fusion_4Expression_2(self,perm,expr):
   mosek_fusion_ExprPermuteDims._ctor_init__3ILmosek_4fusion_4Expression_2I(self,perm,expr,1)
   _0=expr.getShape()
   if (int((perm).shape[0])!=int((_0).shape[0])):
    raise mosek_fusion_LengthError._ctor_S("Invalid dimension permutation length")
   _1=numpy.array([0 for _2 in range(0,int((perm).shape[0]))], dtype=numpy.dtype(numpy.int32))
   for _3 in range(0,int((_1).shape[0])):
    if ((perm[_3] < 0) or (perm[_3] > int((_0).shape[0]))):
     raise mosek_fusion_LengthError._ctor_S("Invalid dimension permutation index")
    _1[perm[_3]] += 1
   for _4 in range(0,int((_1).shape[0])):
    if ((_1[_4] < 1) or (_1[_4] > 1)):
     raise mosek_fusion_LengthError._ctor_S("Dimension permutation contains duplicates")
  @staticmethod
  def _ctor__3ILmosek_4fusion_4Expression_2I(perm,expr,validated):
    o = ExprPermuteDims.__new__(ExprPermuteDims)
    o._ctor_init__3ILmosek_4fusion_4Expression_2I(perm,expr,validated)
    return o
  @staticmethod
  def __match_ctor__3ILmosek_4fusion_4Expression_2I(*args):
    if len(args) != 3: return False
    perm,expr,validated, = args
    return (__arg_match__3I__(perm) and __arg_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_match_I__(validated))
  @staticmethod
  def __match_alt_ctor__3ILmosek_4fusion_4Expression_2I(*args):
    if len(args) != 3: return False
    perm,expr,validated, = args
    return (__arg_alt_match__3I__(perm) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_alt_match_I__(validated))
  def _ctor_alt_init__3ILmosek_4fusion_4Expression_2I(self,perm,expr,validated):
    self._ctor_init__3ILmosek_4fusion_4Expression_2I(numpy.array(perm,dtype=numpy.dtype(numpy.int32)),expr,numpy.int32(validated))
  def _ctor_init__3ILmosek_4fusion_4Expression_2I(self,perm,expr,validated):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),mosek.fusion.ExprPermuteDims.__computeshape__3I_3I(perm,expr.getShape()))
   (self.__expr) = expr
   self.__dperm = mosek.fusion.Utils.Tools._arraycopy__3I(perm)
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__expr.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.nd)
   _5=(_1.nelem)
   _6=(_1.nnz)
   _7=(_1.ncodeatom)
   _8=(_1.hassp)
   _9=(_1.shape_base)
   _10=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int64))
   _10[(_4 - 1)] = 1
   for _11 in range(1,_4):
    _10[((_4 - _11) - 1)] = (_10[(_4 - _11)] * (_1.i32)[((_9 + _4) - _11)])
   _12=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int64))
   _12[(_4 - 1)] = 1
   for _13 in range(1,_4):
    _12[((_4 - _13) - 1)] = (_12[(_4 - _13)] * (_1.i32)[(_9 + self.__dperm[(_4 - _13)])])
   _14=(_1.ptr_base)
   _15=(_1.sp_base)
   _16=(_1.nidxs_base)
   _17=(_1.cof_base)
   _18=(_1.code_base)
   _19=(_1.codeptr_base)
   _20=(_1.cconst_base)
   _21=(_1.i32)
   _22=(_1.i64)
   _23=(_1.f64)
   _0.alloc_expr(_4,_5,_6,_8,_7)
   _24=(_0.ptr_base)
   _25=(_0.shape_base)
   _26=(_0.nidxs_base)
   _27=(_0.sp_base)
   _28=(_0.cof_base)
   _29=(_0.code_base)
   _30=(_0.codeptr_base)
   _31=(_0.cconst_base)
   _32=(_0.i32)
   _33=(_0.i64)
   _34=(_0.f64)
   for _35 in range(0,_4):
    _32[(_25 + _35)] = _21[(_9 + self.__dperm[_35])]
   if _8:
    _36=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int64))
    _37=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int64))
    for _38 in range(0,_5):
     _39=_22[(_15 + _38)]
     for _40 in range(0,_4):
      _37[_40] = (_39 // _10[_40])
      _39 %= _10[_40]
     _41=_37[self.__dperm[0]]
     for _42 in range(1,_4):
      _41 = ((_41 * _32[(_25 + _42)]) + _37[self.__dperm[_42]])
     _36[_38] = _41
    _43=numpy.array([_44 for _44 in range(0,_5)], dtype=numpy.dtype(numpy.int64))
    mosek.fusion.CommonTools._argQsort__3J_3J_3JJJ(_43,_36,None,0,_5)
    _32[_24] = 0
    if (_7 > 0):
     _32[_30] = 0
    _45=0
    _46=0
    _47=0
    for _48 in range(0,_5):
     _49=_43[_48]
     for _50 in range(_21[(_14 + _49)],_21[((_14 + _49) + 1)]):
      _33[(_26 + _47)] = _22[(_16 + _50)]
      _34[(_28 + _47)] = _23[(_17 + _50)]
      if (_7 > 0):
       for _51 in range(_21[(_19 + _50)],_21[((_19 + _50) + 1)]):
        _32[(_29 + _45)] = _21[(_18 + _51)]
        _34[(_31 + _45)] = _23[(_20 + _51)]
        _45 += 1
       _32[((_30 + _47) + 1)] = _45
      _47 += 1
     _33[(_27 + _48)] = _36[_49]
     _46 += 1
     _32[((_24 + _48) + 1)] = _47
   else:
    _32[_24] = 0
    if (_7 > 0):
     _32[_30] = 0
    _52=0
    _53=0
    _54=0
    for _55 in range(0,_5):
     _56=0
     _57=_55
     for _58 in range(0,_4):
      _56 += ((_57 // _12[_58]) * _10[self.__dperm[_58]])
      _57 %= _12[_58]
     for _59 in range(_21[(_14 + _56)],_21[((_14 + _56) + 1)]):
      _33[(_26 + _54)] = _22[(_16 + _59)]
      _34[(_28 + _54)] = _23[(_17 + _59)]
      if (_7 > 0):
       for _60 in range(_21[(_19 + _59)],_21[((_19 + _59) + 1)]):
        _32[(_29 + _52)] = _21[(_18 + _60)]
        _34[(_31 + _52)] = _23[(_20 + _60)]
        _52 += 1
       _32[((_30 + _54) + 1)] = _52
      _54 += 1
     _53 += 1
     _32[(_24 + _53)] = _54
  @staticmethod
  def __computeshape_alt__3I_3I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_ExprPermuteDims.__computeshape__3I_3I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __computeshape__3I_3I(_0,_1):
   return (numpy.array([_1[_0[_2]] for _2 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int32)))
 return ExprPermuteDims
mosek_fusion_ExprPermuteDims=__mk_mosek_fusion_ExprPermuteDims()
del __mk_mosek_fusion_ExprPermuteDims
def __mk_mosek_fusion_ExprTranspose():
 class ExprTranspose(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprTranspose__expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprTranspose.ctor(mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprTranspose._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprTranspose._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprTranspose._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprTranspose._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprTranspose.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprTranspose.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprTranspose._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprTranspose._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprTranspose.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprTranspose: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2(expr):
    o = ExprTranspose.__new__(ExprTranspose)
    o._ctor_init_Lmosek_4fusion_4Expression_2(expr)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    expr, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(expr))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    expr, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(expr))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2(self,expr):
    self._ctor_init_Lmosek_4fusion_4Expression_2(expr)
  def _ctor_init_Lmosek_4fusion_4Expression_2(self,expr):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),mosek.fusion.ExprTranspose.__transposeShape__3I(expr.getShape()))
   (self.__expr) = expr
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   _5=self.__expr
   if   isinstance(_5,mosek_fusion_ExprTranspose):
    e=_5
    (e.__expr).recursive_eval(_0,_1,_2,_3)
   else:
    expr=_5
    expr.recursive_eval(_1,_0,_2,_3)
    _1.pop_expr()
    if ((_1.nd)!=2):
     raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions")
    else:
     _5=(_1.shape_base)
     _6=(_1.nelem)
     _7=(_1.nnz)
     _8=(_1.hassp)
     _9=(_1.ncodeatom)
     _10=(_1.ptr_base)
     _11=(_1.sp_base)
     _12=(_1.nidxs_base)
     _13=(_1.cof_base)
     _14=(_1.code_base)
     _15=(_1.codeptr_base)
     _16=(_1.cconst_base)
     _17=(_1.i32)[_5]
     _18=(_1.i32)[(_5 + 1)]
     _19=(_1.i32)
     _20=(_1.i64)
     _21=(_1.f64)
     _0.alloc_expr(2,_6,_7,_8,_9)
     _22=(_0.ptr_base)
     _23=(_0.nidxs_base)
     _24=(_0.sp_base)
     _25=(_0.cof_base)
     _26=(_0.shape_base)
     _27=(_0.code_base)
     _28=(_0.codeptr_base)
     _29=(_0.cconst_base)
     _30=(_0.i32)
     _31=(_0.i64)
     _32=(_0.f64)
     _30[_26] = _18
     _30[(_26 + 1)] = _17
     _30[_22] = 0
     if (_9 > 0):
      _30[_28] = 0
     if _8:
      _33=_2.alloci32(_6)
      _34=_2.alloci32((_18 + 1))
      _35=(_2.i32)
      for _36 in range(0,(_18 + 1)):
       _35[(_34 + _36)] = 0
      for _37 in range(0,_6):
       _35[((_34 + (_20[(_11 + _37)] % _18)) + 1)] += 1
      for _38 in range(0,_18):
       _35[((_34 + _38) + 1)] += _35[(_34 + _38)]
      for _39 in range(0,_6):
       _40=(_20[(_11 + _39)] % _18)
       _35[(_33 + _35[(_34 + _40)])] = _39
       _35[(_34 + _40)] += 1
      _30[_22] = 0
      _41=0
      _42=0
      for _43 in range(0,_6):
       _44=_35[(_33 + _43)]
       for _45 in range(_19[(_10 + _44)],_19[((_10 + _44) + 1)]):
        _31[(_23 + _42)] = _20[(_12 + _45)]
        _32[(_25 + _42)] = _21[(_13 + _45)]
        if (_9 > 0):
         for _46 in range(_19[(_15 + _45)],_19[((_15 + _45) + 1)]):
          _30[(_27 + _41)] = _19[(_14 + _46)]
          _32[(_29 + _41)] = _21[(_16 + _46)]
          _41 += 1
         _30[((_28 + _42) + 1)] = _41
        _42 += 1
       _47=(_20[(_11 + _44)] // _18)
       _48=(_20[(_11 + _44)] % _18)
       _30[((_22 + _43) + 1)] = _42
       _31[(_24 + _43)] = ((_48 * _17) + _47)
     else:
      _30[_22] = 0
      _49=0
      _50=0
      _51=0
      for _52 in range(0,_18):
       for _53 in range(0,_17):
        _54=((_53 * _18) + _52)
        for _55 in range(_19[(_10 + _54)],_19[((_10 + _54) + 1)]):
         _31[(_23 + _50)] = _20[(_12 + _55)]
         _32[(_25 + _50)] = _21[(_13 + _55)]
         if (_9 > 0):
          for _56 in range(_19[(_15 + _55)],_19[((_15 + _55) + 1)]):
           _30[(_27 + _49)] = _19[(_14 + _56)]
           _32[(_29 + _49)] = _21[(_16 + _56)]
           _49 += 1
          _30[((_28 + _50) + 1)] = _49
         _50 += 1
        _30[((_22 + _51) + 1)] = _50
        _51 += 1
     _2.clear()
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprTranspose(")._a_S(self.__expr.toString())._a_S(")")._toString_())
  @staticmethod
  def __transposeShape_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_ExprTranspose.__transposeShape__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __transposeShape__3I(_0):
   if (int((_0).shape[0])!=2):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions")
   else:
    return (numpy.array([_0[1],_0[0]], dtype=numpy.dtype(numpy.int32)))
 return ExprTranspose
mosek_fusion_ExprTranspose=__mk_mosek_fusion_ExprTranspose()
del __mk_mosek_fusion_ExprTranspose
def __mk_mosek_fusion_ExprRepeat():
 class ExprRepeat(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprRepeat__n','_ExprRepeat__dim','_ExprRepeat__expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2II(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2II(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2II(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2II(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprRepeat.ctor(mosek.fusion.Expression,int32,int32)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprRepeat._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprRepeat._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprRepeat._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprRepeat._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprRepeat.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprRepeat.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprRepeat._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprRepeat._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprRepeat.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprRepeat: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2II(expr,dim,n):
    o = ExprRepeat.__new__(ExprRepeat)
    o._ctor_init_Lmosek_4fusion_4Expression_2II(expr,dim,n)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2II(*args):
    if len(args) != 3: return False
    expr,dim,n, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_match_I__(dim) and __arg_match_I__(n))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2II(*args):
    if len(args) != 3: return False
    expr,dim,n, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_alt_match_I__(dim) and __arg_alt_match_I__(n))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2II(self,expr,dim,n):
    self._ctor_init_Lmosek_4fusion_4Expression_2II(expr,numpy.int32(dim),numpy.int32(n))
  def _ctor_init_Lmosek_4fusion_4Expression_2II(self,expr,dim,n):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),mosek.fusion.ExprRepeat.__getshape_Lmosek_4fusion_4Expression_2II(expr,dim,n))
   (self.__expr) = expr
   (self.__dim) = dim
   (self.__n) = n
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__expr.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.nd)
   _5=(_1.shape_base)
   _6=(_1.nelem)
   _7=(_1.nnz)
   _8=(_1.ncodeatom)
   _9=(_1.hassp)
   _10=(_1.ptr_base)
   _11=(_1.sp_base)
   _12=(_1.nidxs_base)
   _13=(_1.cof_base)
   _14=(_1.code_base)
   _15=(_1.codeptr_base)
   _16=(_1.cconst_base)
   _17=(_1.i32)
   _18=(_1.i64)
   _19=(_1.f64)
   _20=(_4 if ((self.__dim < _4) ) else (_4 + 1))
   _21=(_6 * self.__n)
   _22=(_7 * self.__n)
   _23=(_8 * self.__n)
   _0.alloc_expr(_20,_21,_22,_9,_23)
   _24=(_0.i32)
   _25=(_0.i64)
   _26=(_0.f64)
   _27=(_0.shape_base)
   _28=(_0.ptr_base)
   _29=(_0.sp_base)
   _30=(_0.nidxs_base)
   _31=(_0.cof_base)
   _32=(_0.code_base)
   _33=(_0.codeptr_base)
   _34=(_0.cconst_base)
   _35=1
   for _36 in range(0,self.__dim):
    _35 *= _17[(_5 + _36)]
   _37=(_17[(_5 + self.__dim)] if ((self.__dim < _4) ) else 1)
   _38=(self.__n * _37)
   _39=1
   for _40 in range((self.__dim + 1),_4):
    _39 *= _17[(_5 + _40)]
   for _41 in range(0,_4):
    _24[(_27 + _41)] = _17[(_5 + _41)]
   _24[(_27 + self.__dim)] = _38
   _24[_28] = 0
   if (_23!=0):
    _24[_33] = 0
   if _9:
    _42=0
    _43=0
    _44=0
    _45=0
    _46=0
    while (_44 < _6):
     _47=_18[(_11 + _44)]
     _48=((_47 - (_47 % (_37 * _39))) + (_37 * _39))
     _49=_44
     _44 += 1
     while ((_44 < _6) and (_18[(_11 + _44)] < _48)):
      _44 += 1
     _50=_44
     for _51 in range(0,self.__n):
      for _52 in range(_49,_50):
       _53=(_18[(_11 + _52)] // (_37 * _39))
       _54=((_18[(_11 + _52)] // _39) % _37)
       _55=(_18[(_11 + _52)] % _39)
       for _56 in range(_17[(_10 + _52)],_17[((_10 + _52) + 1)]):
        _25[(_30 + _46)] = _18[(_12 + _56)]
        _26[(_31 + _46)] = _19[(_13 + _56)]
        if (_8 > 0):
         for _57 in range(_17[(_15 + _56)],_17[((_15 + _56) + 1)]):
          _24[(_32 + _42)] = _17[(_14 + _57)]
          _26[(_34 + _42)] = _19[(_16 + _57)]
          _42 += 1
         _24[((_33 + _46) + 1)] = _42
        _46 += 1
       _24[((_28 + _45) + 1)] = _46
       _25[(_29 + _45)] = (((((_53 * _38) + (_51 * _37)) + _54) * _39) + _55)
       _45 += 1
   else:
    _58=0
    _59=0
    _60=0
    _61=0
    for _62 in range(0,_35):
     for _63 in range(0,self.__n):
      _64=((_62 * _37) * _39)
      for _65 in range(0,(_37 * _39)):
       for _66 in range(_17[(_10 + _64)],_17[((_10 + _64) + 1)]):
        _25[(_30 + _60)] = _18[(_12 + _66)]
        _26[(_31 + _60)] = _19[(_13 + _66)]
        if (_8 > 0):
         for _67 in range(_17[(_15 + _66)],_17[((_15 + _66) + 1)]):
          _24[(_32 + _58)] = _17[(_14 + _67)]
          _26[(_34 + _58)] = _19[(_16 + _67)]
          _58 += 1
         _24[((_33 + _60) + 1)] = _58
        _60 += 1
       _24[((_28 + _59) + 1)] = _60
       _59 += 1
       _64 += 1
  @staticmethod
  def __getshape_alt_Lmosek_4fusion_4Expression_2II(_t__0,_t__1,_t__2):
    return mosek_fusion_ExprRepeat.__getshape_Lmosek_4fusion_4Expression_2II(_0,numpy.int32(__1),numpy.int32(__2))
  @staticmethod
  def __getshape_Lmosek_4fusion_4Expression_2II(_0,_1,_2):
   _3=_0.getShape()
   _4=int((_3).shape[0])
   if (_1 < _4):
    _3[_1] *= _2
    return (_3)
   else:
    _5=(numpy.zeros(((_4 + 1),), dtype=numpy.dtype(numpy.int32)) if ((_1==_4) ) else _3)
    for _6 in range(0,_4):
     _5[_6] = _3[_6]
    _5[_1] = _2
    return (_5)
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprRepeat(dim=")._a_I(self.__dim)._a_S(",")._a_S(self.__expr.toString())._a_S(")")._toString_())
 return ExprRepeat
mosek_fusion_ExprRepeat=__mk_mosek_fusion_ExprRepeat()
del __mk_mosek_fusion_ExprRepeat
def __mk_mosek_fusion_ExprStack():
 class ExprStack(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprStack__dim','_ExprStack__exprs']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor__3Lmosek_4fusion_4Expression_2I(*args): 
      self._ctor_init__3Lmosek_4fusion_4Expression_2I(*args)
    elif self.__match_alt_ctor__3Lmosek_4fusion_4Expression_2I(*args):
      self._ctor_alt_init__3Lmosek_4fusion_4Expression_2I(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprStack.ctor(array(mosek.fusion.Expression,ndim=1),int32)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprStack._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprStack._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprStack._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprStack._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprStack.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprStack.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprStack._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprStack._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprStack.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprStack: '+self._toString_()
  @staticmethod
  def _ctor__3Lmosek_4fusion_4Expression_2I(exprs,dim):
    o = ExprStack.__new__(ExprStack)
    o._ctor_init__3Lmosek_4fusion_4Expression_2I(exprs,dim)
    return o
  @staticmethod
  def __match_ctor__3Lmosek_4fusion_4Expression_2I(*args):
    if len(args) != 2: return False
    exprs,dim, = args
    return (__arg_match__3Lmosek_4fusion_4Expression_2__(exprs) and __arg_match_I__(dim))
  @staticmethod
  def __match_alt_ctor__3Lmosek_4fusion_4Expression_2I(*args):
    if len(args) != 2: return False
    exprs,dim, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Expression_2__(exprs) and __arg_alt_match_I__(dim))
  def _ctor_alt_init__3Lmosek_4fusion_4Expression_2I(self,exprs,dim):
    self._ctor_init__3Lmosek_4fusion_4Expression_2I(numpy.array(exprs,dtype=numpy.dtype(object)),numpy.int32(dim))
  def _ctor_init__3Lmosek_4fusion_4Expression_2I(self,exprs,dim):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,mosek.fusion.BaseExpression._modelFrom__3Lmosek_4fusion_4Expression_2(exprs),mosek.fusion.ExprStack.__getshape__3Lmosek_4fusion_4Expression_2I(exprs,dim))
   (self.__exprs) = numpy.array([exprs[_0] for _0 in range(0,int((exprs).shape[0]))], dtype=numpy.dtype(object))
   (self.__dim) = dim
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   _4=int((self.__exprs).shape[0])
   if (_4==1):
    self.__exprs[0].recursive_eval(_0,_1,_2,_3)
   else:
    for _5 in range(0,_4):
     self.__exprs[((_4 - _5) - 1)].recursive_eval(_1,_0,_2,_3)
    _6=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    _7=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    _8=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    _9=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    _10=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    _11=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    _12=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    _13=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    _14=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    _15=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    _16=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    _17=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    _18=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    for _19 in range(0,_4):
     _1.pop_expr()
     _6[_19] = (_1.nd)
     _7[_19] = (_1.shape_base)
     _8[_19] = (_1.nelem)
     _9[_19] = (_1.nnz)
     _10[_19] = (_1.ncodeatom)
     _11[_19] = (1 if ((_1.hassp) ) else 0)
     _12[_19] = (_1.ptr_base)
     _14[_19] = (_1.sp_base)
     _13[_19] = (_1.nidxs_base)
     _15[_19] = (_1.cof_base)
     _16[_19] = (_1.code_base)
     _17[_19] = (_1.codeptr_base)
     _18[_19] = (_1.cconst_base)
    _20=(_1.i32)
    _21=(_1.i64)
    _22=(_1.f64)
    _23=_6[0]
    _24=_7[0]
    _25=(_11[0]==0)
    _26=False
    for _27 in range(1,_4):
     _26 = (_26 or ((self.__dim!=_27) and (_6[_27]!=_23)))
     if (not _26):
      for _28 in range(0,self.__dim):
       _26 = (_26 or (_20[(_24 + _28)]!=_20[(_7[_27] + _28)]))
     if (not _26):
      for _29 in range((self.__dim + 1),_23):
       _26 = (_26 or (_20[(_24 + _29)]!=_20[(_7[_27] + _29)]))
     _25 = (_25 and (0==_11[_27]))
    if _26:
     raise mosek_fusion_DimensionError._ctor_S("Mismatching expression dimensions")
    _30=0
    if (self.__dim < _23):
     for _31 in range(0,_4):
      _30 += _20[(_7[_31] + self.__dim)]
    else:
     _30 = _4
    _32=(_23 if ((self.__dim < _23) ) else (_23 + 1))
    if (_32!=self.getND()):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: Mismatching dimensions")
    _33=0
    _34=0
    _35=0
    _36=False
    for _37 in range(0,_4):
     _36 = (_36 or (_10[_37] > 0))
    for _38 in range(0,_4):
     _35 += _9[_38]
    for _39 in range(0,_4):
     _34 += _8[_39]
    if _36:
     for _40 in range(0,_4):
      _33 += (_10[_40] if ((_10[_40] > 0) ) else _9[_40])
    _41=1
    for _42 in range(0,self.__dim):
     _41 *= _20[(_24 + _42)]
    _43=(numpy.array([_20[(_7[_44] + self.__dim)] for _44 in range(0,_4)], dtype=numpy.dtype(numpy.int32)) if ((self.__dim < _23) ) else numpy.array([1 for _45 in range(0,_4)], dtype=numpy.dtype(numpy.int32)))
    _46=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    _46[0] = 0
    for _47 in range(1,_4):
     _46[_47] = (_46[(_47 - 1)] + _43[(_47 - 1)])
    _48=0
    for _49 in range(0,_4):
     _48 += _43[_49]
    _50=1
    for _51 in range((self.__dim + 1),_23):
     _50 *= _20[(_24 + _51)]
    if _25:
     _0.alloc_expr(_32,_34,_35,False,_33)
     _52=(_0.ptr_base)
     _53=(_0.shape_base)
     _54=(_0.nidxs_base)
     _55=(_0.cof_base)
     _56=(_0.code_base)
     _57=(_0.codeptr_base)
     _58=(_0.cconst_base)
     _59=(_0.i32)
     _60=(_0.i64)
     _61=(_0.f64)
     _62=(_2.alloci32((_34 + 1)) if ((_33 > 0) ) else (- 9999))
     _63=(_2.i32)
     for _64 in range(0,_23):
      _59[(_53 + _64)] = _20[(_24 + _64)]
     _59[(_53 + self.__dim)] = _30
     _65=0
     _66=0
     _67=0
     _59[_52] = 0
     if _36:
      _59[_57] = 0
     for _68 in range(0,_41):
      for _69 in range(0,_4):
       for _70 in range(0,_43[_69]):
        for _71 in range(0,_50):
         _72=((((_68 * _43[_69]) * _50) + (_70 * _50)) + _71)
         for _73 in range(_20[(_12[_69] + _72)],_20[((_12[_69] + _72) + 1)]):
          _60[(_54 + _67)] = _21[(_13[_69] + _73)]
          _61[(_55 + _67)] = _22[(_15[_69] + _73)]
          if (_10[_69] > 0):
           for _74 in range(_20[(_17[_69] + _73)],_20[((_17[_69] + _73) + 1)]):
            _59[(_56 + _65)] = _20[(_16[_69] + _74)]
            _61[(_58 + _65)] = _22[(_18[_69] + _74)]
            _65 += 1
           _59[((_57 + _67) + 1)] = _65
          elif _36: # bld/grindsted/final/default/src/fusion/ExprStack.monty:189:32-45
           _59[(_56 + _65)] = 2
           _61[(_58 + _65)] = 0.0
           _65 += 1
           _59[((_57 + _67) + 1)] = _65
          _67 += 1
         _59[((_52 + _66) + 1)] = _67
         _66 += 1
    else:
     _75=1
     for _76 in range(0,self.__dim):
      _75 *= _20[(_24 + _76)]
     _75 *= _30
     for _77 in range((self.__dim + 1),_23):
      _75 *= _20[(_24 + _77)]
     _78=(_34 < _75)
     _0.alloc_expr(_32,_34,_35,_78,_33)
     _79=(_0.ptr_base)
     _80=(_0.nidxs_base)
     _81=((_0.sp_base) if (_78 ) else _0.alloci64(_34))
     _82=(_0.cof_base)
     _83=(_0.code_base)
     _84=(_0.codeptr_base)
     _85=(_0.cconst_base)
     _86=(_0.shape_base)
     for _87 in range(0,_23):
      (_0.i32)[(_86 + _87)] = _20[(_24 + _87)]
     (_0.i32)[(_86 + self.__dim)] = _30
     _88=(_0.i32)
     _89=(_0.i64)
     _90=(_0.f64)
     if (self.__dim==0):
      _91=0
      _92=0
      _93=0
      _94=0
      _88[_79] = 0
      if (_33 > 0):
       _88[_84] = 0
      for _95 in range(0,_4):
       for _96 in range(0,_8[_95]):
        for _97 in range(_20[(_12[_95] + _96)],_20[((_12[_95] + _96) + 1)]):
         _89[(_80 + _92)] = _21[(_13[_95] + _97)]
         _90[(_82 + _92)] = _22[(_15[_95] + _97)]
         if (_10[_95] > 0):
          for _98 in range(_20[(_17[_95] + _97)],_20[((_17[_95] + _97) + 1)]):
           _88[(_83 + _91)] = _20[(_16[_95] + _98)]
           _90[(_85 + _91)] = _22[(_18[_95] + _98)]
           _91 += 1
          _88[((_84 + _92) + 1)] = _91
         elif (_33 > 0): # bld/grindsted/final/default/src/fusion/ExprStack.monty:247:28-42
          _88[(_83 + _91)] = 2
          _90[(_85 + _91)] = 0.0
          _91 += 1
          _88[((_84 + _92) + 1)] = _91
         _92 += 1
        _88[((_79 + _93) + 1)] = _92
        if (_11[_95]!=0):
         _89[(_81 + _93)] = (_94 + _21[(_14[_95] + _96)])
        else:
         _89[(_81 + _93)] = (_94 + _96)
        _93 += 1
       _99=1
       for _100 in range(0,_23):
        _99 *= _20[(_7[_95] + _100)]
       _94 += _99
     else:
      _101=0
      for _102 in range(0,_32):
       if (_101 < _88[(_86 + _102)]):
        _101 = _88[(_86 + _102)]
      _103=_2.alloci64(_34)
      _104=_2.alloci32(_34)
      _105=_2.alloci32(_34)
      _106=_2.alloci32(_34)
      _107=_2.alloci32(_34)
      _108=_2.alloci32((_101 + 1))
      _109=(_2.i32)
      _110=(_2.i64)
      _111=0
      for _112 in range(0,_4):
       _113=_43[_112]
       _114=(_113 * _50)
       _115=_50
       if (_11[_112]!=0):
        for _116 in range(0,_8[_112]):
         _117=(_21[(_14[_112] + _116)] // _114)
         _118=((_21[(_14[_112] + _116)] // _115) % _113)
         _119=(_21[(_14[_112] + _116)] % _50)
         _110[(_103 + _111)] = (((((_117 * _30) + _118) + _46[_112]) * _50) + _119)
         _109[(_104 + _111)] = _112
         _109[(_105 + _111)] = _116
         _111 += 1
       else:
        for _120 in range(0,_8[_112]):
         _121=(numpy.int64(_120) // _114)
         _122=((numpy.int64(_120) // _115) % _113)
         _123=(numpy.int64(_120) % _50)
         _110[(_103 + _111)] = (((((_121 * _30) + _122) + _46[_112]) * _50) + _123)
         _109[(_104 + _111)] = _112
         _109[(_105 + _111)] = _120
         _111 += 1
      _124=numpy.zeros((_32,), dtype=numpy.dtype(numpy.int64))
      _124[(_32 - 1)] = 1
      for _125 in range(1,_32):
       _124[((_32 - _125) - 1)] = (_124[(_32 - _125)] * _88[((_86 + _32) - _125)])
      for _126 in range(0,_34):
       _109[(_106 + _126)] = _126
      for _127 in range(0,_32):
       _128=((_32 - _127) - 1)
       _129=_88[(_86 + _128)]
       for _130 in range(0,(_129 + 1)):
        _109[(_108 + _130)] = 0
       for _131 in range(0,_34):
        _132=_109[(_106 + _131)]
        _133=((_110[(_103 + _132)] // _124[_128]) % _129)
        _109[((_108 + _133) + 1)] += 1
       for _134 in range(0,_129):
        _109[((_108 + _134) + 1)] += _109[(_108 + _134)]
       for _135 in range(0,_34):
        _136=_109[(_106 + _135)]
        _137=((_110[(_103 + _136)] // _124[_128]) % _129)
        _109[(_107 + _109[(_108 + _137)])] = _136
        _109[(_108 + _137)] += 1
       _138=_106
       _106 = _107
       _107 = _138
      _139=0
      _140=0
      _88[_79] = 0
      if (_33 > 0):
       _88[_84] = 0
      for _141 in range(0,_34):
       _142=_109[(_106 + _141)]
       _143=_109[(_104 + _142)]
       _144=_109[(_105 + _142)]
       for _145 in range(_20[(_12[_143] + _144)],_20[((_12[_143] + _144) + 1)]):
        _89[(_80 + _140)] = _21[(_13[_143] + _145)]
        _90[(_82 + _140)] = _22[(_15[_143] + _145)]
        if (_10[_143] > 0):
         for _146 in range(_20[(_17[_143] + _145)],_20[((_17[_143] + _145) + 1)]):
          _88[(_83 + _139)] = _20[(_16[_143] + _146)]
          _90[(_85 + _139)] = _22[(_18[_143] + _146)]
          _139 += 1
         _88[((_84 + _140) + 1)] = _139
        elif _36: # bld/grindsted/final/default/src/fusion/ExprStack.monty:370:28-41
         _88[(_83 + _139)] = 2
         _90[(_85 + _139)] = 0.0
         _139 += 1
         _88[((_84 + _140) + 1)] = _139
        _140 += 1
       _88[((_79 + _141) + 1)] = _140
       _89[(_81 + _141)] = _110[(_103 + _142)]
     if (not _78):
      _0.popi64(_34)
  @staticmethod
  def __getshape_alt__3Lmosek_4fusion_4Expression_2I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1=numpy.int32(_t__1)
   _1_res = mosek_fusion_ExprStack.__getshape__3Lmosek_4fusion_4Expression_2I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __getshape__3Lmosek_4fusion_4Expression_2I(_0,_1):
   if (int((_0).shape[0])==0):
    raise mosek_fusion_LengthError._ctor_S("Cannot stack empty list")
   elif (int((_0).shape[0])==1): # bld/grindsted/final/default/src/fusion/ExprStack.monty:19:16-28
    return (_0[0].getShape())
   else:
    _2=_monty.initJaggedArray([_0[_3].getShape() for _3 in range(0,int((_0).shape[0]))], 1)
    _4=_2[0]
    _5=int((_4).shape[0])
    for _6 in range(1,int((_2).shape[0])):
     if (_5!=int((_2[_6]).shape[0])):
      raise mosek_fusion_DimensionError._ctor_S("Mismatching expression dimensions")
     for _7 in range(0,_1):
      if (_4[_7]!=_2[_6][_7]):
       raise mosek_fusion_DimensionError._ctor_S("mismatching expression dimensions")
     for _8 in range((_1 + 1),_5):
      if (_4[_8]!=_2[_6][_8]):
       raise mosek_fusion_DimensionError._ctor_S("mismatching expression dimensions")
    if (_1==_5):
     _9=numpy.zeros(((_5 + 1),), dtype=numpy.dtype(numpy.int32))
     for _10 in range(0,_5):
      _9[_10] = _4[_10]
     _9[_5] = int((_2).shape[0])
     return (_9)
    else:
     _11=_4
     for _12 in range(1,int((_2).shape[0])):
      _11[_1] += _2[_12][_1]
     return (_11)
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   _0=mosek.fusion.Utils.StringBuffer()._a_S("ExprStack(dim=")._a_I(self.__dim)._a_S(",[")._a_S(self.__exprs[0].toString())
   for _1 in range(1,int((self.__exprs).shape[0])):
    _0._a_S(",")._a_S(self.__exprs[_1].toString())
   _0._a_S("])")
   return (_0._toString_())
 return ExprStack
mosek_fusion_ExprStack=__mk_mosek_fusion_ExprStack()
del __mk_mosek_fusion_ExprStack
def __mk_mosek_fusion_ExprInner():
 class ExprInner(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprInner__vcof','_ExprInner__vsub','_ExprInner__expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2_3D(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2_3D(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2_3D(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2_3D(*args)
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2_3J_3D(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2_3J_3D(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2_3J_3D(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2_3J_3D(*args)
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2_3_5I_3D(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2_3_5I_3D(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2_3_5I_3D(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2_3_5I_3D(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprInner.ctor(mosek.fusion.Expression,array(double,ndim=1))\n\tmosek.fusion.ExprInner.ctor(mosek.fusion.Expression,array(int64,ndim=1),array(double,ndim=1))\n\tmosek.fusion.ExprInner.ctor(mosek.fusion.Expression,array(int32,ndim=2),array(double,ndim=1))')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprInner._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprInner._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprInner._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprInner._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprInner.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprInner.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprInner._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprInner._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprInner.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprInner: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2_3J_3D(expr3,vsub3,vcof3):
    o = ExprInner.__new__(ExprInner)
    o._ctor_init_Lmosek_4fusion_4Expression_2_3J_3D(expr3,vsub3,vcof3)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2_3J_3D(*args):
    if len(args) != 3: return False
    expr3,vsub3,vcof3, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(expr3) and __arg_match__3J__(vsub3) and __arg_match__3D__(vcof3))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2_3J_3D(*args):
    if len(args) != 3: return False
    expr3,vsub3,vcof3, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(expr3) and __arg_alt_match__3J__(vsub3) and __arg_alt_match__3D__(vcof3))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2_3J_3D(self,expr3,vsub3,vcof3):
    self._ctor_init_Lmosek_4fusion_4Expression_2_3J_3D(expr3,numpy.array(vsub3,dtype=numpy.dtype(numpy.int64)),numpy.array(vcof3,dtype=numpy.dtype(numpy.float64)))
  def _ctor_init_Lmosek_4fusion_4Expression_2_3J_3D(self,expr3,vsub3,vcof3):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr3.getModel(),numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)))
   (self.__expr) = expr3
   (self.__vsub) = vsub3
   (self.__vcof) = vcof3
   if (int((vsub3).shape[0])!=int((vcof3).shape[0])):
    raise mosek_fusion_LengthError._ctor_S("Mismatching lengths of vcof and vsub")
   _0=expr3.getShape()
   _1=mosek.fusion.Set._size__3I(_0)
   _2=False
   _3=False
   for _4 in range(1,int((vsub3).shape[0])):
    if (vsub3[_4] <= vsub3[(_4 - 1)]):
     _2 = True
   if (int((vsub3).shape[0]) > 0):
    if ((vsub3[0] < 0) or (vsub3[(int((vsub3).shape[0]) - 1)] > _1)):
     _3 = True
   if _2:
    raise mosek_fusion_IndexError._ctor_S("Unordered coefficcient subscripts")
   if _3:
    raise mosek_fusion_IndexError._ctor_S("Coefficient subscript out of bounds")
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2_3D(expr2,vcof2):
    o = ExprInner.__new__(ExprInner)
    o._ctor_init_Lmosek_4fusion_4Expression_2_3D(expr2,vcof2)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2_3D(*args):
    if len(args) != 2: return False
    expr2,vcof2, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(expr2) and __arg_match__3D__(vcof2))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2_3D(*args):
    if len(args) != 2: return False
    expr2,vcof2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(expr2) and __arg_alt_match__3D__(vcof2))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2_3D(self,expr2,vcof2):
    self._ctor_init_Lmosek_4fusion_4Expression_2_3D(expr2,numpy.array(vcof2,dtype=numpy.dtype(numpy.float64)))
  def _ctor_init_Lmosek_4fusion_4Expression_2_3D(self,expr2,vcof2):
   mosek_fusion_ExprInner._ctor_init_Lmosek_4fusion_4Expression_2_3J_3D(self,expr2,mosek.fusion.ExprInner.__range_I(int((vcof2).shape[0])),vcof2)
   _0=expr2.getShape()
   if ((int((_0).shape[0])!=1) or (_0[0]!=int((vcof2).shape[0]))):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching dimensions of operands")
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2_3_5I_3D(expr1,vsub1,vcof1):
    o = ExprInner.__new__(ExprInner)
    o._ctor_init_Lmosek_4fusion_4Expression_2_3_5I_3D(expr1,vsub1,vcof1)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2_3_5I_3D(*args):
    if len(args) != 3: return False
    expr1,vsub1,vcof1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(expr1) and __arg_match__3_5I__(vsub1) and __arg_match__3D__(vcof1))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2_3_5I_3D(*args):
    if len(args) != 3: return False
    expr1,vsub1,vcof1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(expr1) and __arg_alt_match__3_5I__(vsub1) and __arg_alt_match__3D__(vcof1))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2_3_5I_3D(self,expr1,vsub1,vcof1):
    self._ctor_init_Lmosek_4fusion_4Expression_2_3_5I_3D(expr1,numpy.array(vsub1,dtype=numpy.dtype(numpy.int32)),numpy.array(vcof1,dtype=numpy.dtype(numpy.float64)))
  def _ctor_init_Lmosek_4fusion_4Expression_2_3_5I_3D(self,expr1,vsub1,vcof1):
   mosek_fusion_ExprInner._ctor_init_Lmosek_4fusion_4Expression_2_3J_3D(self,expr1,mosek.fusion.ExprInner.__convert__3I_3_5I(expr1.getShape(),vsub1),vcof1)
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__expr.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.nd)
   _5=(_1.nelem)
   _6=(_1.nnz)
   _7=(_1.ncodeatom)
   _8=(_1.hassp)
   _9=(_1.shape_base)
   _10=(_1.ptr_base)
   _11=(_1.nidxs_base)
   _12=(_1.sp_base)
   _13=(_1.cof_base)
   _14=(_1.code_base)
   _15=(_1.codeptr_base)
   _16=(_1.cconst_base)
   _17=(_1.i32)
   _18=(_1.i64)
   _19=(_1.f64)
   _20=0
   if _8:
    _21=0
    _22=0
    while ((_22 < int((self.__vsub).shape[0])) and (_21 < _5)):
     if (_18[(_12 + _21)] < self.__vsub[_22]):
      _21 += 1
     elif (_18[(_12 + _21)] > self.__vsub[_22]): # bld/grindsted/final/default/src/fusion/ExprMul.monty:2190:20-42
      _22 += 1
     else:
      _20 += (_17[((_10 + _21) + 1)] - _17[(_10 + _21)])
      _22 += 1
      _21 += 1
   else:
    for _23 in range(0,int((self.__vsub).shape[0])):
     _20 += (_17[((_10 + self.__vsub[_23]) + 1)] - _17[(_10 + self.__vsub[_23])])
   _24=((_7 + (2 * _6)) if ((_7 > 0) ) else 0)
   _0.alloc_expr(0,1,_20,False,_24)
   _25=(_0.ptr_base)
   _26=(_0.nidxs_base)
   _27=(_0.cof_base)
   _28=(_0.code_base)
   _29=(_0.codeptr_base)
   _30=(_0.cconst_base)
   _31=(_0.i32)
   _32=(_0.i64)
   _33=(_0.f64)
   _31[_25] = 0
   _31[(_25 + 1)] = _20
   if (_24 > 0):
    _31[_29] = 0
   _34=0
   _35=0
   if _8:
    _36=0
    _37=0
    while ((_37 < int((self.__vsub).shape[0])) and (_36 < _5)):
     if (_18[(_12 + _36)] < self.__vsub[_37]):
      _36 += 1
     elif (_18[(_12 + _36)] > self.__vsub[_37]): # bld/grindsted/final/default/src/fusion/ExprMul.monty:2230:20-42
      _37 += 1
     else:
      _38=_17[(_10 + _36)]
      _39=_17[((_10 + _36) + 1)]
      for _40 in range(_38,_39):
       _32[(_26 + _35)] = _18[(_11 + _40)]
       _33[(_27 + _35)] = (self.__vcof[_37] * _19[(_13 + _40)])
       if (_24 > 0):
        for _41 in range(_17[(_15 + _40)],_17[((_15 + _40) + 1)]):
         _31[(_28 + _34)] = _17[(_14 + _41)]
         _33[(_30 + _34)] = _19[(_16 + _41)]
         _34 += 1
        _31[(_28 + _34)] = 2
        _33[(_30 + _34)] = self.__vcof[_37]
        _34 += 1
        _31[(_28 + _34)] = 5
        _34 += 1
        _31[((_29 + _35) + 1)] = _34
       _35 += 1
      _37 += 1
      _36 += 1
   else:
    for _42 in range(0,int((self.__vsub).shape[0])):
     _43=_17[(_10 + self.__vsub[_42])]
     _44=_17[((_10 + self.__vsub[_42]) + 1)]
     for _45 in range(_43,_44):
      _32[(_26 + _35)] = _18[(_11 + _45)]
      _33[(_27 + _35)] = (self.__vcof[_42] * _19[(_13 + _45)])
      if (_24 > 0):
       for _46 in range(_17[(_15 + _45)],_17[((_15 + _45) + 1)]):
        _31[(_28 + _34)] = _17[(_14 + _46)]
        _33[(_30 + _34)] = _19[(_16 + _46)]
        _34 += 1
       _31[(_28 + _34)] = 2
       _33[(_30 + _34)] = self.__vcof[_42]
       _34 += 1
       _31[(_28 + _34)] = 5
       _34 += 1
       _31[((_29 + _35) + 1)] = _34
      _35 += 1
  @staticmethod
  def __range_alt_I(_t__0):
    return mosek_fusion_ExprInner.__range_I(numpy.int32(__0))
  @staticmethod
  def __range_I(_0):
   return (numpy.array([_1 for _1 in range(0,_0)], dtype=numpy.dtype(numpy.int64)))
  @staticmethod
  def __convert_alt__3I_3_5I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_ExprInner.__convert__3I_3_5I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __convert__3I_3_5I(_0,_1):
   _2=int((_0).shape[0])
   _3=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int64))
   _3[(_2 - 1)] = 1
   for _4 in range(1,_2):
    _3[((_2 - _4) - 1)] = (_3[(_2 - _4)] * _0[(_2 - _4)])
   _5=numpy.zeros((int((_1).shape[0]),), dtype=numpy.dtype(numpy.int64))
   for _6 in range(0,int((_1).shape[0])):
    for _7 in range(0,_2):
     _5[_6] += (_3[_7] * _1[_6,_7])
   return (_5)
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return ("ExprInner()")
 return ExprInner
mosek_fusion_ExprInner=__mk_mosek_fusion_ExprInner()
del __mk_mosek_fusion_ExprInner
def __mk_mosek_fusion_ExprMulDiagRight():
 class ExprMulDiagRight(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprMulDiagRight__expr','_ExprMulDiagRight__mval','_ExprMulDiagRight__msubj','_ExprMulDiagRight__msubi','_ExprMulDiagRight__mdim1','_ExprMulDiagRight__mdim0']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprMulDiagRight.ctor(int32,int32,array(int32,ndim=1),array(int32,ndim=1),array(double,ndim=1),mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulDiagRight._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulDiagRight._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulDiagRight._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprMulDiagRight._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulDiagRight.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprMulDiagRight.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulDiagRight._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprMulDiagRight._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulDiagRight.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprMulDiagRight: '+self._toString_()
  @staticmethod
  def _ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2I(mdim0,mdim1,msubi,msubj,mval,expr,validated):
    o = ExprMulDiagRight.__new__(ExprMulDiagRight)
    o._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(mdim0,mdim1,msubi,msubj,mval,expr,validated)
    return o
  @staticmethod
  def __match_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2I(*args):
    if len(args) != 7: return False
    mdim0,mdim1,msubi,msubj,mval,expr,validated, = args
    return (__arg_match_I__(mdim0) and __arg_match_I__(mdim1) and __arg_match__3I__(msubi) and __arg_match__3I__(msubj) and __arg_match__3D__(mval) and __arg_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_match_I__(validated))
  @staticmethod
  def __match_alt_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2I(*args):
    if len(args) != 7: return False
    mdim0,mdim1,msubi,msubj,mval,expr,validated, = args
    return (__arg_alt_match_I__(mdim0) and __arg_alt_match_I__(mdim1) and __arg_alt_match__3I__(msubi) and __arg_alt_match__3I__(msubj) and __arg_alt_match__3D__(mval) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_alt_match_I__(validated))
  def _ctor_alt_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(self,mdim0,mdim1,msubi,msubj,mval,expr,validated):
    self._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(numpy.int32(mdim0),numpy.int32(mdim1),numpy.array(msubi,dtype=numpy.dtype(numpy.int32)),numpy.array(msubj,dtype=numpy.dtype(numpy.int32)),numpy.array(mval,dtype=numpy.dtype(numpy.float64)),expr,numpy.int32(validated))
  def _ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(self,mdim0,mdim1,msubi,msubj,mval,expr,validated):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),numpy.array([mdim1], dtype=numpy.dtype(numpy.int32)))
   (self.__mdim0) = mdim0
   (self.__mdim1) = mdim1
   (self.__msubi) = msubi
   (self.__msubj) = msubj
   (self.__mval) = mval
   (self.__expr) = expr
  @staticmethod
  def _ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(mdim0,mdim1,msubi,msubj,mval,expr):
    o = ExprMulDiagRight.__new__(ExprMulDiagRight)
    o._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(mdim0,mdim1,msubi,msubj,mval,expr)
    return o
  @staticmethod
  def __match_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 6: return False
    mdim0,mdim1,msubi,msubj,mval,expr, = args
    return (__arg_match_I__(mdim0) and __arg_match_I__(mdim1) and __arg_match__3I__(msubi) and __arg_match__3I__(msubj) and __arg_match__3D__(mval) and __arg_match_Lmosek_4fusion_4Expression_2__(expr))
  @staticmethod
  def __match_alt_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 6: return False
    mdim0,mdim1,msubi,msubj,mval,expr, = args
    return (__arg_alt_match_I__(mdim0) and __arg_alt_match_I__(mdim1) and __arg_alt_match__3I__(msubi) and __arg_alt_match__3I__(msubj) and __arg_alt_match__3D__(mval) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr))
  def _ctor_alt_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(self,mdim0,mdim1,msubi,msubj,mval,expr):
    self._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(numpy.int32(mdim0),numpy.int32(mdim1),numpy.array(msubi,dtype=numpy.dtype(numpy.int32)),numpy.array(msubj,dtype=numpy.dtype(numpy.int32)),numpy.array(mval,dtype=numpy.dtype(numpy.float64)),expr)
  def _ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(self,mdim0,mdim1,msubi,msubj,mval,expr):
   mosek_fusion_ExprMulDiagRight._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(self,mdim0,mdim1,msubi,msubj,mval,expr,mosek.fusion.ExprMulDiagRight.__validate_II_3I_3I_3DLmosek_4fusion_4Expression_2(mdim0,mdim1,msubi,msubj,mval,expr))
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   (self.__expr).recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.nd)
   _5=(_1.nnz)
   _6=(_1.nelem)
   _7=(_1.ncodeatom)
   _8=(_1.hassp)
   _9=(_1.shape_base)
   _10=(_1.ptr_base)
   _11=(_1.sp_base)
   _12=(_1.nidxs_base)
   _13=(_1.cof_base)
   _14=(_1.codeptr_base)
   _15=(_1.code_base)
   _16=(_1.cconst_base)
   _17=(_1.i32)
   _18=(_1.i64)
   _19=(_1.f64)
   _20=_17[_9]
   _21=_17[(_9 + 1)]
   _22=int((self.__mval).shape[0])
   _23=_2.alloci32(_22)
   _24=_2.alloci32((self.__mdim1 + 1))
   _25=(_2.i32)
   for _26 in range(0,(self.__mdim1 + 1)):
    _25[(_24 + _26)] = 0
   for _27 in range(0,_22):
    _25[((_24 + self.__msubj[_27]) + 1)] += 1
   for _28 in range(0,self.__mdim1):
    _25[((_24 + _28) + 1)] += _25[(_24 + _28)]
   for _29 in range(0,_22):
    _25[(_23 + _25[(_24 + self.__msubj[_29])])] = _29
    _25[(_24 + self.__msubj[_29])] += 1
   for _30 in range(0,self.__mdim1):
    _25[((_24 + self.__mdim1) - _30)] = _25[(((_24 + self.__mdim1) - _30) - 1)]
   _25[_24] = 0
   _31=0
   _32=0
   _33=0
   if (not _8):
    _34=0
    while (_34 < _22):
     _35=self.__msubj[_25[(_23 + _34)]]
     _36=_34
     while ((_34 < _22) and (_35==self.__msubj[_25[(_23 + _34)]])):
      _34 += 1
     for _37 in range(_36,_34):
      _38=((self.__msubj[_25[(_23 + _37)]] * _21) + self.__msubi[_25[(_23 + _37)]])
      _32 += (_17[((_10 + _38) + 1)] - _17[(_10 + _38)])
      if (_7 > 0):
       _31 += ((_17[(_14 + _17[((_10 + _38) + 1)])] - _17[(_14 + _17[(_10 + _38)])]) + (2 * (_17[((_10 + _38) + 1)] - _17[(_10 + _38)])))
     _33 += 1
   else:
    _39=0
    _40=0
    for _41 in range(0,self.__mdim1):
     _42=_39
     _43=_40
     while ((_39 < _22) and (_41==self.__msubj[_25[(_23 + _39)]])):
      _39 += 1
     while ((_40 < _6) and (_41==(_18[(_11 + _40)] // _21))):
      _40 += 1
     _44=_42
     _45=_43
     _46=0
     while ((_45 < _40) and (_44 < _39)):
      if ((_18[(_11 + _45)] % _21) < self.__msubi[_25[(_23 + _44)]]):
       _45 += 1
      elif ((_18[(_11 + _45)] % _21) > self.__msubi[_25[(_23 + _44)]]): # bld/grindsted/final/default/src/fusion/ExprMul.monty:1923:22-68
       _44 += 1
      else:
       _32 += (_17[((_10 + _45) + 1)] - _17[(_10 + _45)])
       if (_7 > 0):
        _31 += ((_17[(_14 + _17[((_10 + _45) + 1)])] - _17[(_14 + _17[(_10 + _45)])]) + (2 * (_17[((_10 + _45) + 1)] - _17[(_10 + _45)])))
       _46 += 1
       _45 += 1
       _44 += 1
     if (_46 > 0):
      _33 += 1
   _47=(_33 < _20)
   _0.alloc_expr(1,_33,_32,_47,_31)
   _48=(_0.ptr_base)
   _49=(_0.nidxs_base)
   _50=((_0.sp_base) if (_47 ) else _0.alloci64(_33))
   _51=(_0.cof_base)
   _52=(_0.shape_base)
   _53=(_0.code_base)
   _54=(_0.codeptr_base)
   _55=(_0.cconst_base)
   _56=(_0.i64)
   _57=(_0.f64)
   _58=(_0.i32)
   _59=(_2.i32)
   _60=0
   _61=0
   _62=0
   _58[_48] = 0
   if (_31 > 0):
    _58[_54] = 0
   _58[_52] = self.__mdim1
   if (not _8):
    _63=0
    while (_63 < _22):
     _64=self.__msubj[_59[(_23 + _63)]]
     _65=_63
     while ((_63 < _22) and (_64==self.__msubj[_59[(_23 + _63)]])):
      _63 += 1
     for _66 in range(_65,_63):
      _67=_59[(_23 + _66)]
      _68=((self.__msubj[_67] * _21) + self.__msubi[_67])
      for _69 in range(_17[(_10 + _68)],_17[((_10 + _68) + 1)]):
       _56[(_49 + _61)] = _18[(_12 + _69)]
       _57[(_51 + _61)] = (_19[(_13 + _69)] * self.__mval[_67])
       if (_7 > 0):
        for _70 in range(_17[(_14 + _69)],_17[((_14 + _69) + 1)]):
         _58[(_53 + _60)] = _17[(_15 + _70)]
         _57[(_55 + _60)] = _19[(_16 + _70)]
         _60 += 1
        _58[(_53 + _60)] = 2
        _57[(_55 + _60)] = self.__mval[_67]
        _60 += 1
        _58[(_53 + _60)] = 5
        _60 += 1
        _58[((_54 + _61) + 1)] = _60
       _61 += 1
     _56[(_50 + _62)] = _64
     _58[((_48 + _62) + 1)] = _61
     _62 += 1
   else:
    _71=0
    _72=0
    for _73 in range(0,self.__mdim1):
     _74=_71
     _75=_72
     while ((_72 < _6) and (_73==(_18[(_11 + _72)] // _21))):
      _72 += 1
     while ((_71 < _22) and (_73==self.__msubj[_59[(_23 + _71)]])):
      _71 += 1
     _76=_74
     _77=_75
     _78=0
     while ((_77 < _72) and (_76 < _71)):
      if ((_18[(_11 + _77)] % _21) < self.__msubi[_59[(_23 + _76)]]):
       _77 += 1
      elif ((_18[(_11 + _77)] % _21) > self.__msubi[_59[(_23 + _76)]]): # bld/grindsted/final/default/src/fusion/ExprMul.monty:2041:24-70
       _76 += 1
      else:
       _79=_59[(_23 + _76)]
       for _80 in range(_17[(_10 + _77)],_17[((_10 + _77) + 1)]):
        _56[(_49 + _61)] = _18[(_12 + _80)]
        _57[(_51 + _61)] = (_19[(_13 + _80)] * self.__mval[_79])
        if (_7 > 0):
         for _81 in range(_17[(_14 + _80)],_17[((_14 + _80) + 1)]):
          _58[(_53 + _60)] = _17[(_15 + _81)]
          _57[(_55 + _60)] = _19[(_16 + _81)]
          _60 += 1
         _58[(_53 + _60)] = 2
         _57[(_55 + _60)] = self.__mval[_79]
         _60 += 1
         _58[(_53 + _60)] = 5
         _60 += 1
         _58[((_54 + _61) + 1)] = _60
        _61 += 1
       _78 += 1
       _77 += 1
       _76 += 1
     if (_78 > 0):
      _58[((_48 + _62) + 1)] = _61
      _56[(_50 + _62)] = _73
      _62 += 1
   if (not _47):
    _0.popi64(_33)
   if (not (_32==_61)):
    raise mosek_fusion_UnexpectedError._ctor_S("Incorrect number of non-zeros")
   if (not (_33==_62)):
    raise mosek_fusion_UnexpectedError._ctor_S("Incorrect number of elements")
   _2.clear()
  @staticmethod
  def __validate_alt_II_3I_3I_3DLmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5):
   _0=numpy.int32(_t__0)
   _1=numpy.int32(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.int32))
   _4=numpy.array(_t__4,dtype=numpy.dtype(numpy.float64))
   _5=_t__5
   _1_res = mosek_fusion_ExprMulDiagRight.__validate_II_3I_3I_3DLmosek_4fusion_4Expression_2(_0,_1,_2,_3,_4,_5)
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __validate_II_3I_3I_3DLmosek_4fusion_4Expression_2(_0,_1,_2,_3,_4,_5):
   _6=_5.getShape()
   if (int((_6).shape[0]) > 2):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions")
   _7=_6[0]
   _8=_6[1]
   if ((_0 < 0) or ((_1 < 0) or ((_7 < 0) or (_8 < 0)))):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions")
   if ((_0!=_8) or (_1!=_7)):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand dimensions")
   if ((int((_2).shape[0])!=int((_3).shape[0])) or (int((_2).shape[0])!=int((_4).shape[0]))):
    raise mosek_fusion_LengthError._ctor_S("Invalid matrix data")
   _9=int((_2).shape[0])
   _10=False
   _11=False
   for _12 in range(0,_9):
    if ((_2[_12] < 0) or ((_2[_12] >= _0) or ((_3[_12] < 0) or (_3[_12] >= _1)))):
     _10 = True
   for _13 in range(0,(_9 - 1)):
    if ((_2[_13] > _2[(_13 + 1)]) or ((_2[_13]==_2[(_13 + 1)]) and (_3[_13] >= _3[(_13 + 1)]))):
     _11 = True
   if _10:
    raise mosek_fusion_LengthError._ctor_S("Invalid matrix data")
   if _11:
    raise mosek_fusion_LengthError._ctor_S("Unsorted matrix data")
   return numpy.int32(1)
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprMulDiagRight(")._a_S(self.__expr.toString())._a_S(",m)")._toString_())
 return ExprMulDiagRight
mosek_fusion_ExprMulDiagRight=__mk_mosek_fusion_ExprMulDiagRight()
del __mk_mosek_fusion_ExprMulDiagRight
def __mk_mosek_fusion_ExprMulDiagLeft():
 class ExprMulDiagLeft(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprMulDiagLeft__expr','_ExprMulDiagLeft__mval','_ExprMulDiagLeft__msubj','_ExprMulDiagLeft__msubi','_ExprMulDiagLeft__mdim1','_ExprMulDiagLeft__mdim0']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprMulDiagLeft.ctor(int32,int32,array(int32,ndim=1),array(int32,ndim=1),array(double,ndim=1),mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulDiagLeft._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulDiagLeft._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulDiagLeft._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprMulDiagLeft._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulDiagLeft.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprMulDiagLeft.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulDiagLeft._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprMulDiagLeft._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulDiagLeft.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprMulDiagLeft: '+self._toString_()
  @staticmethod
  def _ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2I(mdim0,mdim1,msubi,msubj,mval,expr,validated):
    o = ExprMulDiagLeft.__new__(ExprMulDiagLeft)
    o._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(mdim0,mdim1,msubi,msubj,mval,expr,validated)
    return o
  @staticmethod
  def __match_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2I(*args):
    if len(args) != 7: return False
    mdim0,mdim1,msubi,msubj,mval,expr,validated, = args
    return (__arg_match_I__(mdim0) and __arg_match_I__(mdim1) and __arg_match__3I__(msubi) and __arg_match__3I__(msubj) and __arg_match__3D__(mval) and __arg_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_match_I__(validated))
  @staticmethod
  def __match_alt_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2I(*args):
    if len(args) != 7: return False
    mdim0,mdim1,msubi,msubj,mval,expr,validated, = args
    return (__arg_alt_match_I__(mdim0) and __arg_alt_match_I__(mdim1) and __arg_alt_match__3I__(msubi) and __arg_alt_match__3I__(msubj) and __arg_alt_match__3D__(mval) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_alt_match_I__(validated))
  def _ctor_alt_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(self,mdim0,mdim1,msubi,msubj,mval,expr,validated):
    self._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(numpy.int32(mdim0),numpy.int32(mdim1),numpy.array(msubi,dtype=numpy.dtype(numpy.int32)),numpy.array(msubj,dtype=numpy.dtype(numpy.int32)),numpy.array(mval,dtype=numpy.dtype(numpy.float64)),expr,numpy.int32(validated))
  def _ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(self,mdim0,mdim1,msubi,msubj,mval,expr,validated):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),numpy.array([mdim0], dtype=numpy.dtype(numpy.int32)))
   (self.__mdim0) = mdim0
   (self.__mdim1) = mdim1
   (self.__msubi) = msubi
   (self.__msubj) = msubj
   (self.__mval) = mval
   (self.__expr) = expr
  @staticmethod
  def _ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(mdim0,mdim1,msubi,msubj,mval,expr):
    o = ExprMulDiagLeft.__new__(ExprMulDiagLeft)
    o._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(mdim0,mdim1,msubi,msubj,mval,expr)
    return o
  @staticmethod
  def __match_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 6: return False
    mdim0,mdim1,msubi,msubj,mval,expr, = args
    return (__arg_match_I__(mdim0) and __arg_match_I__(mdim1) and __arg_match__3I__(msubi) and __arg_match__3I__(msubj) and __arg_match__3D__(mval) and __arg_match_Lmosek_4fusion_4Expression_2__(expr))
  @staticmethod
  def __match_alt_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 6: return False
    mdim0,mdim1,msubi,msubj,mval,expr, = args
    return (__arg_alt_match_I__(mdim0) and __arg_alt_match_I__(mdim1) and __arg_alt_match__3I__(msubi) and __arg_alt_match__3I__(msubj) and __arg_alt_match__3D__(mval) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr))
  def _ctor_alt_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(self,mdim0,mdim1,msubi,msubj,mval,expr):
    self._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(numpy.int32(mdim0),numpy.int32(mdim1),numpy.array(msubi,dtype=numpy.dtype(numpy.int32)),numpy.array(msubj,dtype=numpy.dtype(numpy.int32)),numpy.array(mval,dtype=numpy.dtype(numpy.float64)),expr)
  def _ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(self,mdim0,mdim1,msubi,msubj,mval,expr):
   mosek_fusion_ExprMulDiagLeft._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(self,mdim0,mdim1,msubi,msubj,mval,expr,mosek.fusion.ExprMulDiagLeft.__validate_II_3I_3I_3DLmosek_4fusion_4Expression_2(mdim0,mdim1,msubi,msubj,mval,expr))
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   (self.__expr).recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.i32)
   _5=(_1.i64)
   _6=(_1.f64)
   _7=(_1.nd)
   _8=(_1.nelem)
   _9=(_1.nnz)
   _10=(_1.hassp)
   _11=(_1.ncodeatom)
   _12=(_1.ptr_base)
   _13=(_1.code_base)
   _14=(_1.cconst_base)
   _15=(_1.codeptr_base)
   _16=(_1.shape_base)
   _17=(_1.sp_base)
   _18=(_1.nidxs_base)
   _19=(_1.cof_base)
   _20=(_1.cconst_base)
   if (_7!=2):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operator shape for multiplication")
   _21=_4[_16]
   _22=_4[(_16 + 1)]
   _23=int((self.__msubi).shape[0])
   if (not _10):
    _24=0
    _25=0
    _26=0
    _27=0
    while (_27 < int((self.__msubi).shape[0])):
     _28=self.__msubi[_27]
     while ((_27 < int((self.__msubi).shape[0])) and (self.__msubi[_27]==_28)):
      _29=((self.__msubj[_27] * _22) + self.__msubi[_27])
      _24 += (_4[((_12 + _29) + 1)] - _4[(_12 + _29)])
      if (_11 > 0):
       _26 += ((_4[(_15 + _4[((_12 + _29) + 1)])] - _4[(_15 + _4[(_12 + _29)])]) + (2 * (_4[((_12 + _29) + 1)] - _4[(_12 + _29)])))
      _27 += 1
     _25 += 1
    _30=(_25 < self.__mdim0)
    _0.alloc_expr(1,_25,_24,_30,_26)
    _31=(_0.ptr_base)
    _32=(_0.nidxs_base)
    _33=((_0.sp_base) if (_30 ) else _0.alloci64(_25))
    _34=(_0.cof_base)
    _35=(_0.shape_base)
    _36=(_0.code_base)
    _37=(_0.codeptr_base)
    _38=(_0.cconst_base)
    _39=(_0.i64)
    _40=(_0.f64)
    _41=(_0.i32)
    _41[_31] = 0
    if (_11 > 0):
     _41[_37] = 0
    _41[_35] = self.__mdim0
    _42=0
    _43=0
    _44=0
    pass
    _45=0
    while (_45 < int((self.__msubi).shape[0])):
     _46=self.__msubi[_45]
     while ((_45 < int((self.__msubi).shape[0])) and (self.__msubi[_45]==_46)):
      _47=((self.__msubj[_45] * _22) + self.__msubi[_45])
      for _48 in range(_4[(_12 + _47)],_4[((_12 + _47) + 1)]):
       _39[(_32 + _42)] = _5[(_18 + _48)]
       _40[(_34 + _42)] = (_6[(_19 + _48)] * self.__mval[_45])
       if (_26 > 0):
        for _49 in range(_4[(_15 + _48)],_4[((_15 + _48) + 1)]):
         _41[(_36 + _44)] = _4[(_13 + _49)]
         _40[(_38 + _44)] = _6[(_14 + _49)]
         _44 += 1
        _41[(_36 + _44)] = 2
        _40[(_38 + _44)] = self.__mval[_45]
        _44 += 1
        _41[(_36 + _44)] = 5
        _44 += 1
        _41[((_37 + _42) + 1)] = _44
       _42 += 1
      _45 += 1
     _41[((_31 + _43) + 1)] = _42
     _39[(_33 + _43)] = _46
     _43 += 1
    if (not _30):
     _0.popi64(_25)
   else:
    _50=_2.alloci32((_22 + 1))
    _51=_2.alloci32(_8)
    _52=_2.alloci32((self.__mdim0 + 1))
    _53=(_2.i32)
    _54=0
    _55=0
    _56=0
    for _57 in range(0,(_22 + 1)):
     _53[(_50 + _57)] = 0
    for _58 in range(0,_8):
     _53[((_50 + (_5[(_17 + _58)] % _22)) + 1)] += 1
    for _59 in range(0,_22):
     _53[((_50 + _59) + 1)] += _53[(_50 + _59)]
    for _60 in range(0,_8):
     _61=(_5[(_17 + _60)] % _22)
     _53[(_51 + _53[(_50 + _61)])] = _60
     _53[(_50 + _61)] += 1
    for _62 in range(0,_22):
     _53[((_50 + _22) - _62)] = _53[(((_50 + _22) - _62) - 1)]
    _53[_50] = 0
    _63=0
    _64=0
    while ((_64 < int((self.__msubi).shape[0])) and (_63 < _8)):
     if (self.__msubi[_64] < (_5[(_17 + _53[(_51 + _63)])] % _22)):
      _64 += 1
     elif (self.__msubi[_64] > (_5[(_17 + _53[(_51 + _63)])] % _22)): # bld/grindsted/final/default/src/fusion/ExprMul.monty:1603:22-66
      _63 += 1
     else:
      _65=0
      _66=(_5[(_17 + _53[(_51 + _63)])] % _22)
      _67=_64
      while ((_64 < int((self.__msubi).shape[0])) and (self.__msubi[_64]==self.__msubi[_67])):
       _64 += 1
      _68=_63
      while ((_63 < _8) and ((_5[(_17 + _53[(_51 + _63)])] % _22)==_66)):
       _63 += 1
      _69=_68
      _70=_67
      _71=0
      while ((_70 < _64) and (_69 < _63)):
       _72=_53[(_51 + _69)]
       if (self.__msubj[_70] < (_5[(_17 + _72)] // _22)):
        _70 += 1
       elif (self.__msubj[_70] > (_5[(_17 + _72)] // _22)): # bld/grindsted/final/default/src/fusion/ExprMul.monty:1616:26-59
        _69 += 1
       else:
        _55 += (_4[((_12 + _72) + 1)] - _4[(_12 + _72)])
        if (_11 > 0):
         _54 += ((_4[(_15 + _4[((_12 + _72) + 1)])] - _4[(_15 + _4[(_12 + _72)])]) + (2 * (_4[((_12 + _72) + 1)] - _4[(_12 + _72)])))
        _71 += 1
        _70 += 1
        _69 += 1
      if (_71 > 0):
       _56 += 1
    _73=(_56 < self.__mdim0)
    _0.alloc_expr(1,_56,_55,_73,_54)
    _74=(_0.ptr_base)
    _75=(_0.nidxs_base)
    _76=((_0.sp_base) if (_73 ) else _0.alloci64(_56))
    _77=(_0.cof_base)
    _78=(_0.shape_base)
    _79=(_0.code_base)
    _80=(_0.codeptr_base)
    _81=(_0.cconst_base)
    _82=(_0.i64)
    _83=(_0.f64)
    _84=(_0.i32)
    _85=0
    _86=0
    _87=0
    _88=0
    _89=0
    _84[_74] = 0
    if (_11 > 0):
     _84[_80] = 0
    _84[_78] = self.__mdim0
    while ((_89 < int((self.__msubi).shape[0])) and (_88 < _8)):
     if (self.__msubi[_89] < (_5[(_17 + _53[(_51 + _88)])] % _22)):
      _89 += 1
     elif (self.__msubi[_89] > (_5[(_17 + _53[(_51 + _88)])] % _22)): # bld/grindsted/final/default/src/fusion/ExprMul.monty:1660:22-66
      _88 += 1
     else:
      _90=0
      _91=(_5[(_17 + _53[(_51 + _88)])] % _22)
      _92=_89
      while ((_89 < int((self.__msubi).shape[0])) and (self.__msubi[_89]==self.__msubi[_92])):
       _89 += 1
      _93=_88
      while ((_88 < _8) and ((_5[(_17 + _53[(_51 + _88)])] % _22)==_91)):
       _88 += 1
      _94=_93
      _95=_92
      _96=0
      _97=self.__msubi[_92]
      while ((_95 < _89) and (_94 < _88)):
       _98=_53[(_51 + _94)]
       if (self.__msubj[_95] < (_5[(_17 + _98)] // _22)):
        _95 += 1
       elif (self.__msubj[_95] > (_5[(_17 + _98)] // _22)): # bld/grindsted/final/default/src/fusion/ExprMul.monty:1675:26-59
        _94 += 1
       else:
        for _99 in range(_4[(_12 + _98)],_4[((_12 + _98) + 1)]):
         _82[(_75 + _86)] = _5[(_18 + _99)]
         _83[(_77 + _86)] = (_6[(_19 + _99)] * self.__mval[_95])
         if (_11 > 0):
          for _100 in range(_4[(_15 + _99)],_4[((_15 + _99) + 1)]):
           _84[(_79 + _87)] = _4[(_13 + _100)]
           _83[(_81 + _87)] = _6[(_14 + _100)]
           _87 += 1
          _84[(_79 + _87)] = 2
          _83[(_81 + _87)] = self.__mval[_95]
          _87 += 1
          _84[(_79 + _87)] = 5
          _87 += 1
          _84[((_80 + _86) + 1)] = _87
         _86 += 1
         _96 += 1
        _95 += 1
        _94 += 1
      if (_96 > 0):
       _84[((_74 + _85) + 1)] = _86
       _82[(_76 + _85)] = _97
       _85 += 1
    if (_86!=_55):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: Incorrect number of non-zeros")
    if (_85!=_56):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: Incorrect number of elements")
    if (not _73):
     _0.popi64(_56)
   _2.clear()
  @staticmethod
  def __validate_alt_II_3I_3I_3DLmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5):
   _0=numpy.int32(_t__0)
   _1=numpy.int32(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.int32))
   _4=numpy.array(_t__4,dtype=numpy.dtype(numpy.float64))
   _5=_t__5
   _1_res = mosek_fusion_ExprMulDiagLeft.__validate_II_3I_3I_3DLmosek_4fusion_4Expression_2(_0,_1,_2,_3,_4,_5)
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __validate_II_3I_3I_3DLmosek_4fusion_4Expression_2(_0,_1,_2,_3,_4,_5):
   _6=_5.getShape()
   if (int((_6).shape[0])!=2):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions")
   _7=_6[0]
   _8=_6[1]
   if ((_0 < 0) or (_1 < 0)):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions")
   if ((_1!=_7) or (_0!=_8)):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand dimensions")
   if ((int((_2).shape[0])!=int((_3).shape[0])) or (int((_2).shape[0])!=int((_4).shape[0]))):
    raise mosek_fusion_LengthError._ctor_S("Invalid matrix data")
   _9=int((_2).shape[0])
   _10=False
   _11=False
   for _12 in range(0,_9):
    if ((_2[_12] < 0) or ((_2[_12] >= _0) or ((_3[_12] < 0) or (_3[_12] >= _1)))):
     _10 = True
   for _13 in range(0,(_9 - 1)):
    if ((_2[_13] > _2[(_13 + 1)]) or ((_2[_13]==_2[(_13 + 1)]) and (_3[_13] >= _3[(_13 + 1)]))):
     _11 = True
   if _10:
    raise mosek_fusion_LengthError._ctor_S("Invalid matrix data")
   if _11:
    raise mosek_fusion_LengthError._ctor_S("Unsorted matrix data")
   return numpy.int32(1)
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprMulDiagLeft(m,")._a_S(self.__expr.toString())._a_S(")")._toString_())
 return ExprMulDiagLeft
mosek_fusion_ExprMulDiagLeft=__mk_mosek_fusion_ExprMulDiagLeft()
del __mk_mosek_fusion_ExprMulDiagLeft
def __mk_mosek_fusion_ExprMulElement():
 class ExprMulElement(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprMulElement__expr','_ExprMulElement__msp','_ExprMulElement__mcof']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor__3D_3JLmosek_4fusion_4Expression_2(*args): 
      self._ctor_init__3D_3JLmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor__3D_3JLmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init__3D_3JLmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprMulElement.ctor(array(double,ndim=1),array(int64,ndim=1),mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulElement._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulElement._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulElement._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprMulElement._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulElement.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprMulElement.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulElement._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprMulElement._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulElement.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprMulElement: '+self._toString_()
  @staticmethod
  def _ctor__3D_3JLmosek_4fusion_4Expression_2(mcof,msp,expr):
    o = ExprMulElement.__new__(ExprMulElement)
    o._ctor_init__3D_3JLmosek_4fusion_4Expression_2(mcof,msp,expr)
    return o
  @staticmethod
  def __match_ctor__3D_3JLmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    mcof,msp,expr, = args
    return (__arg_match__3D__(mcof) and __arg_match__3J__(msp) and __arg_match_Lmosek_4fusion_4Expression_2__(expr))
  @staticmethod
  def __match_alt_ctor__3D_3JLmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    mcof,msp,expr, = args
    return (__arg_alt_match__3D__(mcof) and __arg_alt_match__3J__(msp) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr))
  def _ctor_alt_init__3D_3JLmosek_4fusion_4Expression_2(self,mcof,msp,expr):
    self._ctor_init__3D_3JLmosek_4fusion_4Expression_2(numpy.array(mcof,dtype=numpy.dtype(numpy.float64)),numpy.array(msp,dtype=numpy.dtype(numpy.int64)),expr)
  def _ctor_init__3D_3JLmosek_4fusion_4Expression_2(self,mcof,msp,expr):
   mosek_fusion_ExprMulElement._ctor_init__3D_3JLmosek_4fusion_4Expression_2I(self,mcof,msp,expr,1)
   _0=expr.getShape()
   if (int((mcof).shape[0])!=int((msp).shape[0])):
    raise mosek_fusion_LengthError._ctor_S("Invalid matrix specification")
   _1=mosek.fusion.Set._size__3I(_0)
   _2=False
   _3=False
   for _4 in range(0,int((msp).shape[0])):
    if ((msp[_4] < 0) or (msp[_4] >= _1)):
     _2 = True
   for _5 in range(0,(int((msp).shape[0]) - 1)):
    if (msp[_5] >= msp[(_5 + 1)]):
     _3 = True
   if _2:
    raise mosek_fusion_IndexError._ctor_S("Invalid matrix data")
   if _3:
    raise mosek_fusion_IndexError._ctor_S("Matrix data not sorted")
  @staticmethod
  def _ctor__3D_3JLmosek_4fusion_4Expression_2I(cof,msp,expr,validated):
    o = ExprMulElement.__new__(ExprMulElement)
    o._ctor_init__3D_3JLmosek_4fusion_4Expression_2I(cof,msp,expr,validated)
    return o
  @staticmethod
  def __match_ctor__3D_3JLmosek_4fusion_4Expression_2I(*args):
    if len(args) != 4: return False
    cof,msp,expr,validated, = args
    return (__arg_match__3D__(cof) and __arg_match__3J__(msp) and __arg_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_match_I__(validated))
  @staticmethod
  def __match_alt_ctor__3D_3JLmosek_4fusion_4Expression_2I(*args):
    if len(args) != 4: return False
    cof,msp,expr,validated, = args
    return (__arg_alt_match__3D__(cof) and __arg_alt_match__3J__(msp) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_alt_match_I__(validated))
  def _ctor_alt_init__3D_3JLmosek_4fusion_4Expression_2I(self,cof,msp,expr,validated):
    self._ctor_init__3D_3JLmosek_4fusion_4Expression_2I(numpy.array(cof,dtype=numpy.dtype(numpy.float64)),numpy.array(msp,dtype=numpy.dtype(numpy.int64)),expr,numpy.int32(validated))
  def _ctor_init__3D_3JLmosek_4fusion_4Expression_2I(self,cof,msp,expr,validated):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),expr.getShape())
   (self.__expr) = expr
   (self.__mcof) = cof
   (self.__msp) = msp
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__expr.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.nd)
   _5=(_1.nelem)
   _6=(_1.nnz)
   _7=(_1.ncodeatom)
   _8=(_1.hassp)
   _9=(_1.shape_base)
   _10=(_1.ptr_base)
   _11=(_1.nidxs_base)
   _12=(_1.sp_base)
   _13=(_1.cof_base)
   _14=(_1.code_base)
   _15=(_1.codeptr_base)
   _16=(_1.cconst_base)
   _17=(_1.i32)
   _18=(_1.i64)
   _19=(_1.f64)
   _20=0
   _21=0
   _22=0
   if (not _8):
    _22 = int((self.__msp).shape[0])
    for _23 in range(0,int((self.__msp).shape[0])):
     _21 += (_17[((_10 + self.__msp[_23]) + 1)] - _17[(_10 + self.__msp[_23])])
    if (_7 > 0):
     for _24 in range(0,int((self.__msp).shape[0])):
      _20 += ((_17[(_15 + _17[((_10 + self.__msp[_24]) + 1)])] - _17[(_15 + _17[(_10 + self.__msp[_24])])]) + (2 * (_17[((_10 + self.__msp[_24]) + 1)] - _17[(_10 + self.__msp[_24])])))
   else:
    _25=int((self.__msp).shape[0])
    _26=0
    _27=_5
    _28=0
    while ((_26 < _25) and (_28 < _27)):
     if (self.__msp[_26] < _18[(_12 + _28)]):
      _26 += 1
     elif (self.__msp[_26] > _18[(_12 + _28)]): # bld/grindsted/final/default/src/fusion/ExprMul.monty:1222:20-41
      _28 += 1
     else:
      _21 += (_17[((_10 + _28) + 1)] - _17[(_10 + _28)])
      if (_7 > 0):
       _20 += ((_17[(_15 + _17[((_10 + _28) + 1)])] - _17[(_15 + _17[(_10 + _28)])]) + (2 * (_17[((_10 + _28) + 1)] - _17[(_10 + _28)])))
      _26 += 1
      _28 += 1
      _22 += 1
   _29=1
   for _30 in range(0,_4):
    _29 *= _17[(_9 + _30)]
   _31=(_22 < _29)
   _32=_4
   _0.alloc_expr(_32,_22,_21,_31,_20)
   _33=(_0.ptr_base)
   _34=(_0.shape_base)
   _35=(_0.nidxs_base)
   _36=((_0.sp_base) if (_31 ) else _0.alloci64(_22))
   _37=(_0.cof_base)
   _38=(_0.code_base)
   _39=(_0.codeptr_base)
   _40=(_0.cconst_base)
   _41=(_0.i32)
   _42=(_0.i64)
   _43=(_0.f64)
   _44=0
   _45=0
   _46=0
   _41[_33] = 0
   if (_20 > 0):
    _41[_39] = 0
   for _47 in range(0,_32):
    _41[(_34 + _47)] = _17[(_9 + _47)]
   if (not _8):
    for _48 in range(0,int((self.__msp).shape[0])):
     _49=_17[(_10 + self.__msp[_48])]
     _50=_17[((_10 + self.__msp[_48]) + 1)]
     for _51 in range(_49,_50):
      _42[(_35 + _46)] = _18[(_11 + _51)]
      _43[(_37 + _46)] = (_19[(_13 + _51)] * self.__mcof[_48])
      if (_7 > 0):
       for _52 in range(_17[(_15 + _51)],_17[((_15 + _51) + 1)]):
        _41[(_38 + _44)] = _17[(_14 + _52)]
        _43[(_40 + _44)] = _19[(_16 + _52)]
        _44 += 1
       _41[(_38 + _44)] = 2
       _43[(_40 + _44)] = self.__mcof[_48]
       _44 += 1
       _41[(_38 + _44)] = 5
       _44 += 1
       _41[((_39 + _46) + 1)] = _44
      _46 += 1
     _41[((_33 + _48) + 1)] = _46
     _42[(_36 + _48)] = self.__msp[_48]
   else:
    _53=int((self.__msp).shape[0])
    _54=0
    _55=_5
    _56=0
    while ((_54 < _53) and (_56 < _55)):
     if (self.__msp[_54] < _18[(_12 + _56)]):
      _54 += 1
     elif (self.__msp[_54] > _18[(_12 + _56)]): # bld/grindsted/final/default/src/fusion/ExprMul.monty:1298:22-43
      _56 += 1
     else:
      _57=_17[(_10 + _56)]
      _58=_17[((_10 + _56) + 1)]
      for _59 in range(_57,_58):
       _42[(_35 + _46)] = _18[(_11 + _59)]
       _43[(_37 + _46)] = (_19[(_11 + _59)] * self.__mcof[_54])
       if (_7 > 0):
        for _60 in range(_17[(_15 + _59)],_17[((_15 + _59) + 1)]):
         _41[(_38 + _44)] = _17[(_14 + _60)]
         _43[(_40 + _44)] = _19[(_16 + _60)]
         _44 += 1
        _41[(_38 + _44)] = 2
        _43[(_40 + _44)] = self.__mcof[_54]
        _44 += 1
        _41[(_38 + _44)] = 5
        _44 += 1
        _41[((_39 + _46) + 1)] = _44
       _46 += 1
      _41[((_33 + _45) + 1)] = _46
      _42[(_36 + _45)] = self.__msp[_54]
      _45 += 1
      _54 += 1
      _56 += 1
   if (not _31):
    _0.popi64(_22)
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprMulElement(M,")._a_S(self.__expr.toString())._a_S(")")._toString_())
 return ExprMulElement
mosek_fusion_ExprMulElement=__mk_mosek_fusion_ExprMulElement()
del __mk_mosek_fusion_ExprMulElement
def __mk_mosek_fusion_ExprMulScalarConst():
 class ExprMulScalarConst(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprMulScalarConst__expr','_ExprMulScalarConst__c']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_DLmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_DLmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_DLmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_DLmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprMulScalarConst.ctor(double,mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulScalarConst._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulScalarConst._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulScalarConst._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprMulScalarConst._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulScalarConst.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprMulScalarConst.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulScalarConst._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprMulScalarConst._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulScalarConst.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprMulScalarConst: '+self._toString_()
  @staticmethod
  def _ctor_DLmosek_4fusion_4Expression_2(c,expr):
    o = ExprMulScalarConst.__new__(ExprMulScalarConst)
    o._ctor_init_DLmosek_4fusion_4Expression_2(c,expr)
    return o
  @staticmethod
  def __match_ctor_DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    c,expr, = args
    return (__arg_match_D__(c) and __arg_match_Lmosek_4fusion_4Expression_2__(expr))
  @staticmethod
  def __match_alt_ctor_DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    c,expr, = args
    return (__arg_alt_match_D__(c) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr))
  def _ctor_alt_init_DLmosek_4fusion_4Expression_2(self,c,expr):
    self._ctor_init_DLmosek_4fusion_4Expression_2(numpy.float64(c),expr)
  def _ctor_init_DLmosek_4fusion_4Expression_2(self,c,expr):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),expr.getShape())
   (self.__c) = c
   (self.__expr) = expr
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__expr.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.i32)
   _5=(_1.i64)
   _6=(_1.f64)
   _7=(_1.nd)
   _8=(_1.nelem)
   _9=(_1.nnz)
   _10=(_1.hassp)
   _11=(_1.ncodeatom)
   _12=(_1.ptr_base)
   _13=(_1.code_base)
   _14=(_1.cconst_base)
   _15=(_1.codeptr_base)
   _16=(_1.shape_base)
   _17=(_1.sp_base)
   _18=(_1.nidxs_base)
   _19=(_1.cof_base)
   _20=(_1.cconst_base)
   _21=(0 if ((_11==0) ) else (_11 + (2 * _9)))
   _0.alloc_expr(_7,_8,_9,_10,_21)
   _22=(_0.i64)
   _23=(_0.f64)
   _24=(_0.i32)
   _25=(_0.ptr_base)
   _26=(_0.nidxs_base)
   _27=(_0.cof_base)
   _28=(_0.code_base)
   _29=(_0.codeptr_base)
   _30=(_0.cconst_base)
   _31=(_0.hassp)
   _32=(_0.shape_base)
   _33=(_0.sp_base)
   for _34 in range(0,(_8 + 1)):
    _24[(_25 + _34)] = _4[(_12 + _34)]
   for _35 in range(0,_9):
    _22[(_26 + _35)] = _5[(_18 + _35)]
    _23[(_27 + _35)] = (_6[(_19 + _35)] * self.__c)
   if _10:
    for _36 in range(0,_8):
     _22[(_33 + _36)] = _5[(_17 + _36)]
   for _37 in range(0,_7):
    _24[(_32 + _37)] = _4[(_16 + _37)]
   if (_11 > 0):
    _24[_29] = 0
    _38=0
    for _39 in range(0,_9):
     for _40 in range(_4[(_15 + _39)],_4[((_15 + _39) + 1)]):
      _24[(_28 + _38)] = _4[(_13 + _40)]
      _23[(_30 + _38)] = _6[(_14 + _40)]
      _38 += 1
     _24[(_28 + _38)] = 2
     _23[(_30 + _38)] = self.__c
     _38 += 1
     _24[(_28 + _38)] = 5
     _38 += 1
     _24[((_29 + _39) + 1)] = _38
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return ("ExprMulScalarConst()")
 return ExprMulScalarConst
mosek_fusion_ExprMulScalarConst=__mk_mosek_fusion_ExprMulScalarConst()
del __mk_mosek_fusion_ExprMulScalarConst
def __mk_mosek_fusion_ExprScalarMul():
 class ExprScalarMul(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprScalarMul__expr','_ExprScalarMul__mval','_ExprScalarMul__msubj','_ExprScalarMul__msubi','_ExprScalarMul__mdim1','_ExprScalarMul__mdim0']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprScalarMul.ctor(int32,int32,array(int32,ndim=1),array(int32,ndim=1),array(double,ndim=1),mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprScalarMul._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprScalarMul._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprScalarMul._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprScalarMul._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprScalarMul.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprScalarMul.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprScalarMul._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprScalarMul._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprScalarMul.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprScalarMul: '+self._toString_()
  @staticmethod
  def _ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2I(mdim0,mdim1,msubi,msubj,mval,expr,validated):
    o = ExprScalarMul.__new__(ExprScalarMul)
    o._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(mdim0,mdim1,msubi,msubj,mval,expr,validated)
    return o
  @staticmethod
  def __match_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2I(*args):
    if len(args) != 7: return False
    mdim0,mdim1,msubi,msubj,mval,expr,validated, = args
    return (__arg_match_I__(mdim0) and __arg_match_I__(mdim1) and __arg_match__3I__(msubi) and __arg_match__3I__(msubj) and __arg_match__3D__(mval) and __arg_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_match_I__(validated))
  @staticmethod
  def __match_alt_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2I(*args):
    if len(args) != 7: return False
    mdim0,mdim1,msubi,msubj,mval,expr,validated, = args
    return (__arg_alt_match_I__(mdim0) and __arg_alt_match_I__(mdim1) and __arg_alt_match__3I__(msubi) and __arg_alt_match__3I__(msubj) and __arg_alt_match__3D__(mval) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_alt_match_I__(validated))
  def _ctor_alt_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(self,mdim0,mdim1,msubi,msubj,mval,expr,validated):
    self._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(numpy.int32(mdim0),numpy.int32(mdim1),numpy.array(msubi,dtype=numpy.dtype(numpy.int32)),numpy.array(msubj,dtype=numpy.dtype(numpy.int32)),numpy.array(mval,dtype=numpy.dtype(numpy.float64)),expr,numpy.int32(validated))
  def _ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(self,mdim0,mdim1,msubi,msubj,mval,expr,validated):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),numpy.array([mdim0,mdim1], dtype=numpy.dtype(numpy.int32)))
   (self.__mdim0) = mdim0
   (self.__mdim1) = mdim1
   (self.__msubi) = msubi
   (self.__msubj) = msubj
   (self.__mval) = mval
   (self.__expr) = expr
  @staticmethod
  def _ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(mdim0,mdim1,msubi,msubj,mval,expr):
    o = ExprScalarMul.__new__(ExprScalarMul)
    o._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(mdim0,mdim1,msubi,msubj,mval,expr)
    return o
  @staticmethod
  def __match_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 6: return False
    mdim0,mdim1,msubi,msubj,mval,expr, = args
    return (__arg_match_I__(mdim0) and __arg_match_I__(mdim1) and __arg_match__3I__(msubi) and __arg_match__3I__(msubj) and __arg_match__3D__(mval) and __arg_match_Lmosek_4fusion_4Expression_2__(expr))
  @staticmethod
  def __match_alt_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 6: return False
    mdim0,mdim1,msubi,msubj,mval,expr, = args
    return (__arg_alt_match_I__(mdim0) and __arg_alt_match_I__(mdim1) and __arg_alt_match__3I__(msubi) and __arg_alt_match__3I__(msubj) and __arg_alt_match__3D__(mval) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr))
  def _ctor_alt_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(self,mdim0,mdim1,msubi,msubj,mval,expr):
    self._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(numpy.int32(mdim0),numpy.int32(mdim1),numpy.array(msubi,dtype=numpy.dtype(numpy.int32)),numpy.array(msubj,dtype=numpy.dtype(numpy.int32)),numpy.array(mval,dtype=numpy.dtype(numpy.float64)),expr)
  def _ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(self,mdim0,mdim1,msubi,msubj,mval,expr):
   mosek_fusion_ExprScalarMul._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(self,mdim0,mdim1,msubi,msubj,mval,expr,mosek.fusion.ExprScalarMul.__validate_II_3I_3I_3DLmosek_4fusion_4Expression_2(mdim0,mdim1,msubi,msubj,mval,expr))
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   (self.__expr).recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.nd)
   _5=(_1.nelem)
   _6=(_1.nnz)
   _7=(_1.hassp)
   _8=(_1.ncodeatom)
   _9=(_1.ptr_base)
   _10=(_1.sp_base)
   _11=(_1.nidxs_base)
   _12=(_1.cof_base)
   _13=(_1.code_base)
   _14=(_1.codeptr_base)
   _15=(_1.cconst_base)
   _16=(_1.i32)
   _17=(_1.i64)
   _18=(_1.f64)
   _19=int((self.__mval).shape[0])
   if (_4!=0):
    raise mosek_fusion_DimensionError._ctor_S("Invalid expression shape")
   if (_5==0):
    _0.alloc_expr(2,0,0,True)
    (_0.i32)[(_0.shape_base)] = self.__mdim0
    (_0.i32)[((_0.shape_base) + 1)] = self.__mdim1
   else:
    _20=(_19 * (_8 + ((2 * _6) if ((_8 > 0) ) else 0)))
    _0.alloc_expr(2,_19,(_19 * _6),True,_20)
    _21=(_0.ptr_base)
    _22=(_0.nidxs_base)
    _23=(_0.sp_base)
    _24=(_0.cof_base)
    _25=(_0.shape_base)
    _26=(_0.code_base)
    _27=(_0.codeptr_base)
    _28=(_0.cconst_base)
    _29=(_0.i32)
    _30=(_0.i64)
    _31=(_0.f64)
    _29[_25] = self.__mdim0
    _29[(_25 + 1)] = self.__mdim1
    _32=0
    _33=0
    _29[_21] = 0
    if (_8 > 0):
     _29[_27] = 0
     for _34 in range(0,_19):
      for _35 in range(0,_6):
       _30[(_22 + _33)] = _17[(_11 + _35)]
       _31[(_24 + _33)] = (_18[(_12 + _35)] * self.__mval[_34])
       for _36 in range(_16[(_14 + _35)],_16[((_14 + _35) + 1)]):
        _29[(_26 + _32)] = _16[(_13 + _36)]
        _31[(_28 + _32)] = _18[(_15 + _36)]
        _32 += 1
       _29[(_26 + _32)] = 2
       _31[(_28 + _32)] = self.__mval[_34]
       _32 += 1
       _29[(_26 + _32)] = 5
       _32 += 1
       _29[((_27 + _33) + 1)] = _32
       _33 += 1
      _30[(_23 + _34)] = ((self.__msubi[_34] * self.__mdim1) + self.__msubj[_34])
      _29[((_21 + _34) + 1)] = _33
    else:
     for _37 in range(0,_19):
      for _38 in range(0,_6):
       _30[(_22 + _33)] = _17[(_11 + _38)]
       _31[(_24 + _33)] = (_18[(_12 + _38)] * self.__mval[_37])
       _33 += 1
      _30[(_23 + _37)] = ((self.__msubi[_37] * self.__mdim1) + self.__msubj[_37])
      _29[((_21 + _37) + 1)] = _33
  @staticmethod
  def __validate_alt_II_3I_3I_3DLmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5):
   _0=numpy.int32(_t__0)
   _1=numpy.int32(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.int32))
   _4=numpy.array(_t__4,dtype=numpy.dtype(numpy.float64))
   _5=_t__5
   _1_res = mosek_fusion_ExprScalarMul.__validate_II_3I_3I_3DLmosek_4fusion_4Expression_2(_0,_1,_2,_3,_4,_5)
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __validate_II_3I_3I_3DLmosek_4fusion_4Expression_2(_0,_1,_2,_3,_4,_5):
   _6=_5.getND()
   if (_6!=0):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions")
   if ((_0 < 0) or (_1 < 0)):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions")
   if ((int((_2).shape[0])!=int((_3).shape[0])) or (int((_2).shape[0])!=int((_4).shape[0]))):
    raise mosek_fusion_LengthError._ctor_S("Invalid matrix data")
   _7=int((_2).shape[0])
   _8=False
   _9=False
   for _10 in range(0,_7):
    if ((_2[_10] < 0) or ((_2[_10] >= _0) or ((_3[_10] < 0) or (_3[_10] >= _1)))):
     _8 = True
   for _11 in range(0,(_7 - 1)):
    if ((_2[_11] > _2[(_11 + 1)]) or ((_2[_11]==_2[(_11 + 1)]) and (_3[_11] >= _3[(_11 + 1)]))):
     _9 = True
   if _8:
    raise mosek_fusion_LengthError._ctor_S("Invalid matrix data")
   if _9:
    raise mosek_fusion_LengthError._ctor_S("Unsorted matrix data")
   return numpy.int32(1)
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprScalarMul(M,")._a_S(self.__expr.toString())._a_S(")")._toString_())
 return ExprScalarMul
mosek_fusion_ExprScalarMul=__mk_mosek_fusion_ExprScalarMul()
del __mk_mosek_fusion_ExprScalarMul
def __mk_mosek_fusion_ExprCrossDot():
 class ExprCrossDot(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprCrossDot__expr','_ExprCrossDot__mval','_ExprCrossDot__msubj','_ExprCrossDot__msubi','_ExprCrossDot__mdim1','_ExprCrossDot__mdim0']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args)
    elif self.__match_ctor_II_3DLmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_II_3DLmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_II_3DLmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_II_3DLmosek_4fusion_4Expression_2(*args)
    elif self.__match_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprCrossDot.ctor(mosek.fusion.Matrix,mosek.fusion.Expression)\n\tmosek.fusion.ExprCrossDot.ctor(int32,int32,array(double,ndim=1),mosek.fusion.Expression)\n\tmosek.fusion.ExprCrossDot.ctor(int32,int32,array(int32,ndim=1),array(int32,ndim=1),array(double,ndim=1),mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprCrossDot._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprCrossDot._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprCrossDot._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprCrossDot._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprCrossDot.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprCrossDot.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprCrossDot._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprCrossDot._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprCrossDot.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprCrossDot: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(m,expr):
    o = ExprCrossDot.__new__(ExprCrossDot)
    o._ctor_init_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(m,expr)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    m,expr, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(m) and __arg_match_Lmosek_4fusion_4Expression_2__(expr))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    m,expr, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(m) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr))
  def _ctor_alt_init_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(self,m,expr):
    self._ctor_init_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(m,expr)
  def _ctor_init_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(self,m,expr):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),mosek.fusion.ExprCrossDot.__computeshape_II_3I(m.numRows(),m.numColumns(),expr.getShape()))
   _0=m.numNonzeros()
   self.__mdim0 = m.numRows()
   self.__mdim1 = m.numColumns()
   if m.isSparse():
    self.__msubi = numpy.zeros((_0,), dtype=numpy.dtype(numpy.int32))
    self.__msubj = numpy.zeros((_0,), dtype=numpy.dtype(numpy.int32))
    self.__mval = numpy.zeros((_0,), dtype=numpy.dtype(numpy.float64))
    m.getDataAsTriplets(self.__msubi,self.__msubj,self.__mval)
   else:
    self.__mval = m.getDataAsArray()
    self.__msubi = None
    self.__msubj = None
   mosek.fusion.ExprCrossDot.__validate_II_3I_3I_3DLmosek_4fusion_4Expression_2(self.__mdim0,self.__mdim1,self.__msubi,self.__msubj,self.__mval,expr)
   (self.__expr) = expr
  @staticmethod
  def _ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2I(mdim0,mdim1,msubi,msubj,mval,expr,validated):
    o = ExprCrossDot.__new__(ExprCrossDot)
    o._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(mdim0,mdim1,msubi,msubj,mval,expr,validated)
    return o
  @staticmethod
  def __match_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2I(*args):
    if len(args) != 7: return False
    mdim0,mdim1,msubi,msubj,mval,expr,validated, = args
    return (__arg_match_I__(mdim0) and __arg_match_I__(mdim1) and __arg_match__3I__(msubi) and __arg_match__3I__(msubj) and __arg_match__3D__(mval) and __arg_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_match_I__(validated))
  @staticmethod
  def __match_alt_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2I(*args):
    if len(args) != 7: return False
    mdim0,mdim1,msubi,msubj,mval,expr,validated, = args
    return (__arg_alt_match_I__(mdim0) and __arg_alt_match_I__(mdim1) and __arg_alt_match__3I__(msubi) and __arg_alt_match__3I__(msubj) and __arg_alt_match__3D__(mval) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_alt_match_I__(validated))
  def _ctor_alt_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(self,mdim0,mdim1,msubi,msubj,mval,expr,validated):
    self._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(numpy.int32(mdim0),numpy.int32(mdim1),numpy.array(msubi,dtype=numpy.dtype(numpy.int32)),numpy.array(msubj,dtype=numpy.dtype(numpy.int32)),numpy.array(mval,dtype=numpy.dtype(numpy.float64)),expr,numpy.int32(validated))
  def _ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(self,mdim0,mdim1,msubi,msubj,mval,expr,validated):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),mosek.fusion.ExprCrossDot.__computeshape_II_3I(mdim0,mdim1,expr.getShape()))
   (self.__mdim0) = mdim0
   (self.__mdim1) = mdim1
   (self.__msubi) = msubi
   (self.__msubj) = msubj
   (self.__mval) = mval
   (self.__expr) = expr
  @staticmethod
  def _ctor_II_3DLmosek_4fusion_4Expression_2(mdim0__,mdim1__,mval__,expr__):
    o = ExprCrossDot.__new__(ExprCrossDot)
    o._ctor_init_II_3DLmosek_4fusion_4Expression_2(mdim0__,mdim1__,mval__,expr__)
    return o
  @staticmethod
  def __match_ctor_II_3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 4: return False
    mdim0__,mdim1__,mval__,expr__, = args
    return (__arg_match_I__(mdim0__) and __arg_match_I__(mdim1__) and __arg_match__3D__(mval__) and __arg_match_Lmosek_4fusion_4Expression_2__(expr__))
  @staticmethod
  def __match_alt_ctor_II_3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 4: return False
    mdim0__,mdim1__,mval__,expr__, = args
    return (__arg_alt_match_I__(mdim0__) and __arg_alt_match_I__(mdim1__) and __arg_alt_match__3D__(mval__) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr__))
  def _ctor_alt_init_II_3DLmosek_4fusion_4Expression_2(self,mdim0__,mdim1__,mval__,expr__):
    self._ctor_init_II_3DLmosek_4fusion_4Expression_2(numpy.int32(mdim0__),numpy.int32(mdim1__),numpy.array(mval__,dtype=numpy.dtype(numpy.float64)),expr__)
  def _ctor_init_II_3DLmosek_4fusion_4Expression_2(self,mdim0__,mdim1__,mval__,expr__):
   mosek_fusion_ExprCrossDot._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(self,mdim0__,mdim1__,None,None,mval__,expr__,mosek.fusion.ExprCrossDot.__validate_II_3I_3I_3DLmosek_4fusion_4Expression_2(mdim0__,mdim1__,None,None,mval__,expr__))
  @staticmethod
  def _ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(mdim0_,mdim1_,msubi_,msubj_,mval_,expr_):
    o = ExprCrossDot.__new__(ExprCrossDot)
    o._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(mdim0_,mdim1_,msubi_,msubj_,mval_,expr_)
    return o
  @staticmethod
  def __match_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 6: return False
    mdim0_,mdim1_,msubi_,msubj_,mval_,expr_, = args
    return (__arg_match_I__(mdim0_) and __arg_match_I__(mdim1_) and __arg_match__3I__(msubi_) and __arg_match__3I__(msubj_) and __arg_match__3D__(mval_) and __arg_match_Lmosek_4fusion_4Expression_2__(expr_))
  @staticmethod
  def __match_alt_ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 6: return False
    mdim0_,mdim1_,msubi_,msubj_,mval_,expr_, = args
    return (__arg_alt_match_I__(mdim0_) and __arg_alt_match_I__(mdim1_) and __arg_alt_match__3I__(msubi_) and __arg_alt_match__3I__(msubj_) and __arg_alt_match__3D__(mval_) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr_))
  def _ctor_alt_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(self,mdim0_,mdim1_,msubi_,msubj_,mval_,expr_):
    self._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(numpy.int32(mdim0_),numpy.int32(mdim1_),numpy.array(msubi_,dtype=numpy.dtype(numpy.int32)),numpy.array(msubj_,dtype=numpy.dtype(numpy.int32)),numpy.array(mval_,dtype=numpy.dtype(numpy.float64)),expr_)
  def _ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2(self,mdim0_,mdim1_,msubi_,msubj_,mval_,expr_):
   mosek_fusion_ExprCrossDot._ctor_init_II_3I_3I_3DLmosek_4fusion_4Expression_2I(self,mdim0_,mdim1_,msubi_,msubj_,mval_,expr_,1)
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   (self.__expr).recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.nd)
   _5=(_1.nnz)
   _6=(_1.nelem)
   _7=(_1.ncodeatom)
   _8=(_1.hassp)
   _9=(_1.shape_base)
   _10=(_1.ptr_base)
   _11=(_1.sp_base)
   _12=(_1.nidxs_base)
   _13=(_1.cof_base)
   _14=(_1.codeptr_base)
   _15=(_1.code_base)
   _16=(_1.cconst_base)
   _17=(_1.i32)
   _18=(_1.i64)
   _19=(_1.f64)
   _20=0
   _21=0
   _22=False
   _23=0
   _24=_17[(_9 + 0)]
   _25=_17[(_9 + 1)]
   _26=int((self.__mval).shape[0])
   if ((self.__msubi is None) or (self.__msubj is None)):
    if (not _8):
     _20 = (_5 * self.__mdim0)
     _21 = (self.__mdim0 * _24)
     _23 = (((_7 + (_5 * 2)) * self.__mdim0) if ((_7 > 0) ) else 0)
    else:
     _20 = (_5 * self.__mdim0)
     _23 = (((_7 + (_5 * 2)) * self.__mdim0) if ((_7 > 0) ) else 0)
     _27=(- 1)
     _28=0
     while (_28 < _6):
      _29=(_18[(_11 + _28)] // _25)
      _28 += 1
      while ((_28 < _6) and ((_18[(_11 + _28)] // _25)==_29)):
       _28 += 1
      _21 += 1
     _21 *= self.__mdim0
   elif (not _8): # bld/grindsted/final/default/src/fusion/ExprMul.monty:240:16-25
    _30=0
    while (_30 < _26):
     _21 += 1
     _31=_30
     _32=self.__msubi[_30]
     _30 += 1
     while ((_30 < _26) and (self.__msubi[_30]==_32)):
      _30 += 1
     _33=_30
     for _34 in range(0,_24):
      for _35 in range(_31,_33):
       _36=self.__msubj[_35]
       _37=_17[(((_10 + (_34 * _25)) + _36) + 1)]
       _38=_17[((_10 + (_34 * _25)) + _36)]
       _39=(_37 - _38)
       _20 += _39
       _23 += (((_17[(_14 + _37)] - _17[(_14 + _38)]) + (_39 * 2)) if ((_7 > 0) ) else 0)
    _21 *= _24
   else:
    _40=0
    while (_40 < _26):
     _41=_40
     _42=self.__msubi[_40]
     _40 += 1
     while ((_40 < _26) and (self.__msubi[_40]==_42)):
      _40 += 1
     _43=_40
     _44=0
     while (_44 < _6):
      _45=_44
      _46=(_18[(_11 + _44)] // _25)
      _44 += 1
      while ((_44 < _6) and ((_18[(_11 + _44)] // _25)==_46)):
       _44 += 1
      _47=_44
      _48=0
      _49=_45
      _50=_41
      while ((_50 < _43) and (_49 < _47)):
       if (self.__msubj[_50] < (_18[(_11 + _49)] % _25)):
        _50 += 1
       elif (self.__msubj[_50] > (_18[(_11 + _49)] % _25)): # bld/grindsted/final/default/src/fusion/ExprMul.monty:287:24-53
        _49 += 1
       else:
        _48 += 1
        _51=_17[(_10 + _49)]
        _52=_17[((_10 + _49) + 1)]
        _53=(_52 - _51)
        _20 += _53
        _23 += (((_17[(_14 + _52)] - _17[(_14 + _51)]) + (_53 * 2)) if ((_7 > 0) ) else 0)
        _50 += 1
        _49 += 1
      if (_48 > 0):
       _21 += 1
   _54=(_21 < (_24 * self.__mdim0))
   _0.alloc_expr(2,_21,_20,_54,_23)
   _55=(_0.i32)
   _56=(_0.i64)
   _57=(_0.f64)
   _58=(_0.ncodeatom)
   _59=(_0.shape_base)
   _60=(_0.ptr_base)
   _61=((_0.sp_base) if (_54 ) else (- 9999))
   _62=(_0.nidxs_base)
   _63=(_0.cof_base)
   _64=(_0.codeptr_base)
   _65=(_0.code_base)
   _66=(_0.cconst_base)
   _55[_59] = self.__mdim0
   _55[(_59 + 1)] = _24
   _55[_60] = 0
   if (_58 > 0):
    _55[_64] = 0
   if ((self.__msubi is None) or (self.__msubj is None)):
    if (not _8):
     _67=0
     _68=0
     for _69 in range(0,self.__mdim0):
      mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(_18,_12,_56,(_62 + _67),_5)
      _70=0
      for _71 in range(0,_24):
       for _72 in range(0,self.__mdim1):
        for _73 in range(_17[(_10 + _70)],_17[((_10 + _70) + 1)]):
         _57[(_63 + _67)] = (self.__mval[((_69 * self.__mdim1) + _72)] * _19[(_13 + _73)])
         _67 += 1
        _70 += 1
       _55[((_60 + _68) + 1)] = _67
       _68 += 1
     if (_58 > 0):
      _74=0
      _75=0
      for _76 in range(0,self.__mdim0):
       _77=0
       for _78 in range(0,_24):
        for _79 in range(0,self.__mdim1):
         for _80 in range(_17[(_10 + _77)],_17[((_10 + _77) + 1)]):
          for _81 in range(_17[(_14 + _80)],_17[((_14 + _80) + 1)]):
           _55[(_65 + _75)] = _17[(_15 + _81)]
           _57[(_66 + _75)] = _19[(_16 + _81)]
           _75 += 1
          _55[(_65 + _75)] = 2
          _57[(_66 + _75)] = self.__mval[((_76 * self.__mdim1) + _79)]
          _75 += 1
          _55[(_65 + _75)] = 5
          _75 += 1
          _55[((_64 + _74) + 1)] = _75
          _74 += 1
         _77 += 1
    else:
     _82=0
     _83=0
     for _84 in range(0,self.__mdim0):
      mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(_18,_12,_56,(_62 + _82),_5)
      _85=0
      _86=0
      while (_86 < _6):
       _87=(_18[(_11 + _86)] // _25)
       _88=_86
       _86 += 1
       while ((_86 < _6) and ((_18[(_11 + _86)] // _25)==_87)):
        _86 += 1
       _89=_86
       for _90 in range(_88,_89):
        _91=(_18[(_11 + _90)] % _25)
        for _92 in range(_17[(_10 + _90)],_17[((_10 + _90) + 1)]):
         _57[(_63 + _82)] = (self.__mval[((_84 * self.__mdim1) + _91)] * _19[(_13 + _92)])
         _82 += 1
       if _54:
        _56[(_61 + _83)] = ((_84 * _24) + _87)
       _83 += 1
       _55[(_60 + _83)] = _82
     if (_58 > 0):
      _93=0
      _94=0
      for _95 in range(0,self.__mdim0):
       _96=0
       _97=0
       while (_97 < _6):
        _98=(_18[(_11 + _97)] // _25)
        _99=_97
        _97 += 1
        while ((_97 < _6) and ((_18[(_11 + _97)] // _25)==_98)):
         _97 += 1
        _100=_97
        for _101 in range(_99,_100):
         _102=(_18[(_11 + _101)] % _25)
         for _103 in range(_17[(_10 + _101)],_17[((_10 + _101) + 1)]):
          for _104 in range(_17[(_14 + _103)],_17[((_14 + _103) + 1)]):
           _55[(_65 + _94)] = _17[(_15 + _104)]
           _57[(_66 + _94)] = _19[(_16 + _104)]
           _94 += 1
          _55[(_65 + _94)] = 2
          _57[(_66 + _94)] = self.__mval[((_95 * _24) + _102)]
          _94 += 1
          _55[(_65 + _94)] = 5
          _94 += 1
          _55[((_64 + _93) + 1)] = _94
          _93 += 1
   elif (not _8): # bld/grindsted/final/default/src/fusion/ExprMul.monty:530:16-25
    _105=0
    _106=0
    _107=0
    _108=0
    while (_108 < _26):
     _109=_108
     _110=self.__msubi[_108]
     _108 += 1
     while ((_108 < _26) and (self.__msubi[_108]==_110)):
      _108 += 1
     _111=_108
     for _112 in range(0,_24):
      for _113 in range(_109,_111):
       _114=((_112 * _25) + self.__msubj[_113])
       for _115 in range(_17[(_10 + _114)],_17[((_10 + _114) + 1)]):
        _56[(_62 + _105)] = _18[(_12 + _115)]
        _57[(_63 + _105)] = (_19[(_13 + _115)] * self.__mval[_113])
        if (_58 > 0):
         for _116 in range(_17[(_14 + _115)],_17[((_14 + _115) + 1)]):
          _55[(_65 + _107)] = _17[(_15 + _116)]
          _57[(_66 + _107)] = _19[(_16 + _116)]
          _107 += 1
         _55[(_65 + _107)] = 2
         _57[(_66 + _107)] = self.__mval[_113]
         _107 += 1
         _55[(_65 + _107)] = 5
         _107 += 1
         _55[((_64 + _105) + 1)] = _107
        _105 += 1
      _55[((_60 + _106) + 1)] = _105
      if _54:
       _56[(_61 + _106)] = ((_110 * _24) + _112)
      _106 += 1
    if (_105!=_20):
     raise mosek_fusion_UnexpectedError._ctor_S("Error in evaluation: Incorrect number of nonzeros")
    if (_106!=_21):
     raise mosek_fusion_UnexpectedError._ctor_S("Error in evaluation: Incorrect number of elements")
    if (_107!=_58):
     raise mosek_fusion_UnexpectedError._ctor_S("Error in evaluation: Incorrect number of code elements")
   else:
    _117=0
    _118=0
    _119=0
    while (_119 < _26):
     _120=_119
     _121=self.__msubi[_119]
     _119 += 1
     while ((_119 < _26) and (self.__msubi[_119]==_121)):
      _119 += 1
     _122=_119
     _123=0
     while (_123 < _6):
      _124=_123
      _125=(_18[(_11 + _123)] // _25)
      _123 += 1
      while ((_123 < _6) and ((_18[(_11 + _123)] // _25)==_125)):
       _123 += 1
      _126=_123
      _127=0
      _128=_124
      _129=_120
      while ((_129 < _122) and (_128 < _126)):
       if (self.__msubj[_129] < (_18[(_11 + _128)] % _25)):
        _129 += 1
       elif (self.__msubj[_129] > (_18[(_11 + _128)] % _25)): # bld/grindsted/final/default/src/fusion/ExprMul.monty:628:26-55
        _128 += 1
       else:
        _127 += 1
        for _130 in range(_17[(_10 + _128)],_17[((_10 + _128) + 1)]):
         _56[(_62 + _117)] = _18[(_12 + _130)]
         _57[(_63 + _117)] = (_19[(_13 + _130)] * self.__mval[_129])
         _117 += 1
        _129 += 1
        _128 += 1
      if (_127 > 0):
       _55[((_60 + _118) + 1)] = _117
       if _54:
        _56[(_61 + _118)] = ((_121 * _24) + _125)
       _118 += 1
    if (_117!=_20):
     raise mosek_fusion_UnexpectedError._ctor_S("Error in evaluation: Incorrect number of nonzeros")
    if (_118!=_21):
     raise mosek_fusion_UnexpectedError._ctor_S("Error in evaluation: Incorrect number of elements")
    if (_58 > 0):
     _131=0
     _132=0
     _133=0
     while (_133 < _26):
      _134=_133
      _135=self.__msubi[_133]
      _133 += 1
      while ((_133 < _26) and (self.__msubi[_133]==_135)):
       _133 += 1
      _136=_133
      _137=0
      while (_137 < _6):
       _138=_137
       _139=(_18[(_11 + _137)] // _25)
       _137 += 1
       while ((_137 < _6) and ((_18[(_11 + _137)] // _25)==_139)):
        _137 += 1
       _140=_137
       _141=0
       _142=_138
       _143=_134
       while ((_143 < _136) and (_142 < _140)):
        if (self.__msubj[_143] < (_18[(_11 + _142)] % _25)):
         _143 += 1
        elif (self.__msubj[_143] > (_18[(_11 + _142)] % _25)): # bld/grindsted/final/default/src/fusion/ExprMul.monty:676:26-55
         _142 += 1
        else:
         _141 += 1
         for _144 in range(_17[(_10 + _142)],_17[((_10 + _142) + 1)]):
          for _145 in range(_17[(_14 + _144)],_17[((_14 + _144) + 1)]):
           _55[(_65 + _132)] = _17[(_15 + _145)]
           _57[(_66 + _132)] = _19[(_16 + _145)]
           _132 += 1
          _55[(_65 + _132)] = 2
          _57[(_66 + _132)] = self.__mval[_143]
          _132 += 1
          _55[(_65 + _132)] = 5
          _132 += 1
          _55[((_64 + _131) + 1)] = _132
          _131 += 1
         _143 += 1
         _142 += 1
     if (_132!=_58):
      raise mosek_fusion_UnexpectedError._ctor_S("Error in evaluation: Incorrect number of code elements")
  @staticmethod
  def __computeshape_alt_II_3I(_t__0,_t__1,_t__2):
   _0=numpy.int32(_t__0)
   _1=numpy.int32(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_ExprCrossDot.__computeshape_II_3I(_0,_1,_2)
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __computeshape_II_3I(_0,_1,_2):
   if (int((_2).shape[0])!=2):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching dimensions")
   elif (_1!=_2[1]): # bld/grindsted/final/default/src/fusion/ExprMul.monty:117:16-27
    raise mosek_fusion_DimensionError._ctor_S("Mismatching dimensions")
   return (numpy.array([_0,_2[0]], dtype=numpy.dtype(numpy.int32)))
  @staticmethod
  def __validate_alt_II_3I_3I_3DLmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5):
   _0=numpy.int32(_t__0)
   _1=numpy.int32(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.int32))
   _4=numpy.array(_t__4,dtype=numpy.dtype(numpy.float64))
   _5=_t__5
   _1_res = mosek_fusion_ExprCrossDot.__validate_II_3I_3I_3DLmosek_4fusion_4Expression_2(_0,_1,_2,_3,_4,_5)
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __validate_II_3I_3I_3DLmosek_4fusion_4Expression_2(_0,_1,_2,_3,_4,_5):
   if (_5.getND()!=2):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions")
   _6=_5.getDim(0)
   _7=_5.getDim(1)
   if ((_0 < 0) or (_1 < 0)):
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions")
   if (_1!=_7):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand dimensions")
   if ((_2 is not None) and (_3 is not None)):
    if ((int((_2).shape[0])!=int((_3).shape[0])) or (int((_2).shape[0])!=int((_4).shape[0]))):
     raise mosek_fusion_LengthError._ctor_S("Invalid matrix data")
   else:
    if (int((_4).shape[0])!=(_0 * _1)):
     raise mosek_fusion_LengthError._ctor_S("Invalid matrix data")
   _8=int((_4).shape[0])
   _9=False
   _10=False
   if ((_2 is not None) and (_3 is not None)):
    for _11 in range(0,_8):
     _9 = (_9 or ((_2[_11] < 0) or ((_2[_11] >= _0) or ((_3[_11] < 0) or (_3[_11] >= _1)))))
    if (not _9):
     for _12 in range(0,(_8 - 1)):
      _10 = (_10 or ((_2[_12] > _2[(_12 + 1)]) or ((_2[_12]==_2[(_12 + 1)]) and (_3[_12] >= _3[(_12 + 1)]))))
   if _9:
    raise mosek_fusion_LengthError._ctor_S("Invalid matrix data")
   if _10:
    raise mosek_fusion_LengthError._ctor_S("Unsorted matrix data")
   return numpy.int32(1)
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprCrossDot(M(")._a_I(self.__mdim0)._a_S(",")._a_I(self.__mdim1)._a_S("),")._a_S(self.__expr.toString())._a_S(")")._toString_())
 return ExprCrossDot
mosek_fusion_ExprCrossDot=__mk_mosek_fusion_ExprCrossDot()
del __mk_mosek_fusion_ExprCrossDot
def __mk_mosek_fusion_ExprMulVar():
 class ExprMulVar(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprMulVar__left','_ExprMulVar__x','_ExprMulVar__mcof','_ExprMulVar__msubj','_ExprMulVar__msubi','_ExprMulVar__mdimj','_ExprMulVar__mdimi']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(*args): 
      self._ctor_init_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(*args)
    elif self.__match_alt_ctor_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(*args):
      self._ctor_alt_init_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprMulVar.ctor(bool,int32,int32,array(int32,ndim=1),array(int32,ndim=1),array(double,ndim=1),mosek.fusion.Variable)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulVar._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprMulVar._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulVar.toString()')
  def eval_right(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulVar._match_eval_1right_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_1right_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprMulVar._match_alt_eval_1right_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_1right_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval_right('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulVar.eval_right(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulVar._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulVar._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulVar._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprMulVar._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulVar.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprMulVar.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def eval_left(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulVar._match_eval_1left_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_1left_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprMulVar._match_alt_eval_1left_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_1left_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval_left('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulVar.eval_left(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprMulVar: '+self._toString_()
  @staticmethod
  def _ctor_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(left,mdimi,mdimj,msubi,msubj,mcof,x):
    o = ExprMulVar.__new__(ExprMulVar)
    o._ctor_init_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(left,mdimi,mdimj,msubi,msubj,mcof,x)
    return o
  @staticmethod
  def __match_ctor_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(*args):
    if len(args) != 7: return False
    left,mdimi,mdimj,msubi,msubj,mcof,x, = args
    return (__arg_match_Z__(left) and __arg_match_I__(mdimi) and __arg_match_I__(mdimj) and __arg_match__3I__(msubi) and __arg_match__3I__(msubj) and __arg_match__3D__(mcof) and __arg_match_Lmosek_4fusion_4Variable_2__(x))
  @staticmethod
  def __match_alt_ctor_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(*args):
    if len(args) != 7: return False
    left,mdimi,mdimj,msubi,msubj,mcof,x, = args
    return (__arg_alt_match_Z__(left) and __arg_alt_match_I__(mdimi) and __arg_alt_match_I__(mdimj) and __arg_alt_match__3I__(msubi) and __arg_alt_match__3I__(msubj) and __arg_alt_match__3D__(mcof) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(x))
  def _ctor_alt_init_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(self,left,mdimi,mdimj,msubi,msubj,mcof,x):
    self._ctor_init_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(left,numpy.int32(mdimi),numpy.int32(mdimj),numpy.array(msubi,dtype=numpy.dtype(numpy.int32)),numpy.array(msubj,dtype=numpy.dtype(numpy.int32)),numpy.array(mcof,dtype=numpy.dtype(numpy.float64)),x)
  def _ctor_init_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(self,left,mdimi,mdimj,msubi,msubj,mcof,x):
   mosek_fusion_ExprMulVar._ctor_init_ZII_3I_3I_3DLmosek_4fusion_4Variable_2I(self,left,mdimi,mdimj,msubi,msubj,mcof,x,1)
   _0=x.getShape()
   _1=int((_0).shape[0])
   if (_1!=2):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand dimensions")
   elif (left and (_0[0]!=mdimj)): # bld/grindsted/final/default/src/fusion/ExprMulVar.monty:218:16-43
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand dimensions")
   elif ((not left) and (_0[1]!=mdimi)): # bld/grindsted/final/default/src/fusion/ExprMulVar.monty:220:16-47
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand dimensions")
   if ((int((msubi).shape[0])!=int((msubj).shape[0])) or (int((msubi).shape[0])!=int((mcof).shape[0]))):
    raise mosek_fusion_LengthError._ctor_S("Mismatching matrix data lengths")
   self.__validate_II_3I_3I_3D(mdimi,mdimj,msubi,msubj,mcof)
  @staticmethod
  def _ctor_ZII_3I_3I_3DLmosek_4fusion_4Variable_2I(left,mdimi,mdimj,msubi,msubj,mcof,x,unchecked_):
    o = ExprMulVar.__new__(ExprMulVar)
    o._ctor_init_ZII_3I_3I_3DLmosek_4fusion_4Variable_2I(left,mdimi,mdimj,msubi,msubj,mcof,x,unchecked_)
    return o
  @staticmethod
  def __match_ctor_ZII_3I_3I_3DLmosek_4fusion_4Variable_2I(*args):
    if len(args) != 8: return False
    left,mdimi,mdimj,msubi,msubj,mcof,x,unchecked_, = args
    return (__arg_match_Z__(left) and __arg_match_I__(mdimi) and __arg_match_I__(mdimj) and __arg_match__3I__(msubi) and __arg_match__3I__(msubj) and __arg_match__3D__(mcof) and __arg_match_Lmosek_4fusion_4Variable_2__(x) and __arg_match_I__(unchecked_))
  @staticmethod
  def __match_alt_ctor_ZII_3I_3I_3DLmosek_4fusion_4Variable_2I(*args):
    if len(args) != 8: return False
    left,mdimi,mdimj,msubi,msubj,mcof,x,unchecked_, = args
    return (__arg_alt_match_Z__(left) and __arg_alt_match_I__(mdimi) and __arg_alt_match_I__(mdimj) and __arg_alt_match__3I__(msubi) and __arg_alt_match__3I__(msubj) and __arg_alt_match__3D__(mcof) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(x) and __arg_alt_match_I__(unchecked_))
  def _ctor_alt_init_ZII_3I_3I_3DLmosek_4fusion_4Variable_2I(self,left,mdimi,mdimj,msubi,msubj,mcof,x,unchecked_):
    self._ctor_init_ZII_3I_3I_3DLmosek_4fusion_4Variable_2I(left,numpy.int32(mdimi),numpy.int32(mdimj),numpy.array(msubi,dtype=numpy.dtype(numpy.int32)),numpy.array(msubj,dtype=numpy.dtype(numpy.int32)),numpy.array(mcof,dtype=numpy.dtype(numpy.float64)),x,numpy.int32(unchecked_))
  def _ctor_init_ZII_3I_3I_3DLmosek_4fusion_4Variable_2I(self,left,mdimi,mdimj,msubi,msubj,mcof,x,unchecked_):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,x.getModel(),mosek.fusion.ExprMulVar.__resshape_II_3IZ(mdimi,mdimj,x.getShape(),left))
   (self.__left) = left
   (self.__x) = x
   (self.__mdimi) = mdimi
   (self.__mdimj) = mdimj
   (self.__msubi) = mosek.fusion.Utils.Tools._arraycopy__3I(msubi)
   (self.__msubj) = mosek.fusion.Utils.Tools._arraycopy__3I(msubj)
   (self.__mcof) = mosek.fusion.Utils.Tools._arraycopy__3D(mcof)
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   if self.__left:
    self.eval_left(_0,_1,_2,_3)
   else:
    self.eval_right(_0,_1,_2,_3)
  @staticmethod
  def _match_eval_1right_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_1right_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_1right_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_1right_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_1right_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   _4=(_1.pi32)
   _5=(_1.pi64)
   _6=self.__x.numInst()
   _7=_1.alloci64(_6)
   _8=_1.alloci64(_6)
   _9=_1.alloci32(_6)
   _10=_1.alloci32(_6)
   _11=self.__x.getShape()
   _12=int((_11).shape[0])
   _13=(_11[0] * _11[1])
   _14=_11[1]
   _15=_11[0]
   _16=_1.alloci32((_15 + 1))
   _17=int(((self.__msubi)).shape[0])
   _18=(self.__msubi)
   _19=(self.__msubj)
   _20=(self.__mcof)
   _21=(self.__mdimi)
   _22=(self.__mdimj)
   _23=((_17 // _21)==_22)
   _24=_1.alloci32(_17)
   _25=_1.alloci32((self.__mdimj + 1))
   _26=(_1.i32)
   _27=(_1.i64)
   _28=0
   _29=0
   self.__x.inst(_8,_27,_7,_27)
   if _23:
    _30=0
    if (_6 > 0):
     _30 = 1
     if (_15 > 1):
      if (_14==1):
       for _31 in range(1,_6):
        if (_27[(_8 + _31)] > _27[((_8 + _31) - 1)]):
         _30 += 1
      else:
       for _32 in range(1,_6):
        if ((_27[(_8 + _32)] // _14) > (_27[((_8 + _32) - 1)] // _14)):
         _30 += 1
    _29 = (_30 * _22)
    _28 = (_6 * _22)
    _33=(_30 < _15)
    _0.alloc_expr(2,_29,_28,_33)
    _34=(_0.ptr_base)
    _35=(_0.shape_base)
    _36=(_0.nidxs_base)
    _37=((_0.sp_base) if (_33 ) else _0.alloci64(_29))
    _38=(_0.cof_base)
    _39=(_0.i32)
    _40=(_0.i64)
    _41=(_0.f64)
    _39[_35] = _15
    _39[(_35 + 1)] = _22
    _42=0
    _43=0
    _44=0
    _39[_34] = 0
    while (_42 < _6):
     _45=_42
     _42 += 1
     while ((_42 < _6) and ((_27[(_8 + _42)] // _14)==(_27[(_8 + _45)] // _14))):
      _42 += 1
     _46=(_27[(_8 + _45)] // _14)
     for _47 in range(0,_22):
      for _48 in range(_45,_42):
       _49=(_27[(_8 + _48)] % _14)
       _40[(_36 + _44)] = _27[(_7 + _48)]
       _41[(_38 + _44)] = _20[((_49 * _22) + _47)]
       _44 += 1
      _39[((_34 + _43) + 1)] = _44
      _40[(_37 + _43)] = ((_46 * _22) + _47)
      _43 += 1
    if (not _33):
     _0.popi64(_29)
   else:
    if (_22==1):
     for _50 in range(0,_17):
      _26[(_24 + _50)] = _50
     _26[_25] = 0
     _26[(_25 + 1)] = _17
    else:
     _26[_25] = 0
     for _51 in range(0,(_22 + 1)):
      _26[(_25 + _51)] = 0
     for _52 in range(0,_17):
      _26[((_25 + _19[_52]) + 1)] += 1
     for _53 in range(0,self.__mdimj):
      _26[((_25 + _53) + 1)] += _26[(_25 + _53)]
     for _54 in range(0,_17):
      _26[(_24 + _26[(_25 + _19[_54])])] = _54
      _26[(_25 + _19[_54])] += 1
     for _55 in range(0,_22):
      _26[((_25 + _22) - _55)] = _26[(((_25 + _22) - _55) - 1)]
     _26[_25] = 0
    if ((_6 // _15)==_14):
     _56=0
     _57=0
     while (_57 < _17):
      _57 += 1
      while ((_57 < _17) and (_19[_26[((_24 + _57) - 1)]]==_19[_26[(_24 + _57)]])):
       _57 += 1
      _56 += 1
     _29 = (_56 * _15)
     _28 = (_17 * _15)
     _58=(_56 < _22)
     _0.alloc_expr(2,_29,_28,_58)
     _59=(_0.ptr_base)
     _60=(_0.shape_base)
     _61=(_0.nidxs_base)
     _62=((_0.sp_base) if (_58 ) else _0.alloci64(_29))
     _63=(_0.cof_base)
     (_0.i32)[_60] = _15
     (_0.i32)[(_60 + 1)] = _22
     _64=(_0.i32)
     _65=(_0.i64)
     _66=(_0.f64)
     _64[_59] = 0
     _67=0
     _68=0
     for _69 in range(0,_15):
      _70=0
      while (_70 < _17):
       _71=_70
       _70 += 1
       while ((_70 < _17) and (_19[_26[(_24 + _71)]]==_19[_26[(_24 + _70)]])):
        _70 += 1
       _72=_19[_26[(_24 + _71)]]
       for _73 in range(_71,_70):
        _74=_18[_26[(_24 + _73)]]
        _65[(_61 + _68)] = _27[((_7 + (_69 * _14)) + _74)]
        _66[(_63 + _68)] = _20[_26[(_24 + _73)]]
        _68 += 1
       _65[(_62 + _67)] = ((_69 * _22) + _72)
       _64[((_59 + _67) + 1)] = _68
       _67 += 1
     if (not _58):
      _0.popi64(_29)
    else:
     for _75 in range(0,(_15 + 1)):
      _26[(_16 + _75)] = 0
     if (_12==1):
      for _76 in range(0,_6):
       _26[(_9 + _76)] = 0
      for _77 in range(0,_6):
       _26[(_10 + _77)] = numpy.int32(_27[(_8 + _77)])
      _26[_16] = 0
      _26[(_16 + 1)] = _6
     else:
      for _78 in range(0,_6):
       _26[(_9 + _78)] = numpy.int32((_27[(_8 + _78)] // _11[1]))
      for _79 in range(0,_6):
       _26[(_10 + _79)] = numpy.int32((_27[(_8 + _79)] % _11[1]))
      _26[_16] = 0
      for _80 in range(0,_6):
       _26[((_16 + _26[(_9 + _80)]) + 1)] += 1
      for _81 in range(0,_15):
       _26[((_16 + _81) + 1)] += _26[(_16 + _81)]
     for _82 in range(0,_15):
      for _83 in range(0,self.__mdimj):
       _84=0
       _85=_26[((_16 + _82) + 1)]
       _86=_26[((_25 + _83) + 1)]
       _87=_26[(_16 + _82)]
       _88=_26[(_25 + _83)]
       while ((_88 < _86) and (_87 < _85)):
        if (_18[_26[(_24 + _88)]] < _26[(_10 + _87)]):
         _88 += 1
        elif (_18[_26[(_24 + _88)]] > _26[(_10 + _87)]): # bld/grindsted/final/default/src/fusion/ExprMulVar.monty:626:26-63
         _87 += 1
        else:
         _84 += 1
         _88 += 1
         _87 += 1
       if (_84 > 0):
        _28 += _84
        _29 += 1
     _89=(_29 < (_14 * self.__mdimi))
     _0.alloc_expr(2,_29,_28,_89)
     _90=(_0.ptr_base)
     _91=(_0.shape_base)
     _92=(_0.nidxs_base)
     _93=(_0.sp_base)
     _94=(_0.cof_base)
     (_0.i32)[_91] = _15
     (_0.i32)[(_91 + 1)] = self.__mdimj
     _95=(_0.i32)
     _96=(_0.i64)
     _97=(_0.f64)
     _98=0
     _99=0
     _100=0
     _95[_90] = 0
     for _101 in range(0,_15):
      for _102 in range(0,self.__mdimj):
       _103=0
       _104=_26[((_16 + _101) + 1)]
       _105=_26[((_25 + _102) + 1)]
       _106=_26[(_16 + _101)]
       _107=_26[(_25 + _102)]
       while ((_107 < _105) and (_106 < _104)):
        if (_18[_26[(_24 + _107)]] < _26[(_10 + _106)]):
         _107 += 1
        elif (_18[_26[(_24 + _107)]] > _26[(_10 + _106)]): # bld/grindsted/final/default/src/fusion/ExprMulVar.monty:670:28-65
         _106 += 1
        else:
         _96[(_92 + _100)] = _27[(_7 + _106)]
         _97[(_94 + _100)] = _20[_26[(_24 + _107)]]
         _103 += 1
         _100 += 1
         _107 += 1
         _106 += 1
       if (_103 > 0):
        _95[((_90 + _99) + 1)] = _100
        if _89:
         _96[(_93 + _99)] = _98
        _99 += 1
       _98 += 1
   (_1.pi32) = _4
   (_1.pi64) = _5
  @staticmethod
  def _match_eval_1left_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_1left_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_1left_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_1left_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_1left_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   _4=self.__x.numInst()
   _5=self.__x.getShape()
   _6=int((_5).shape[0])
   _7=_2.alloci64(_4)
   _8=_2.alloci64(_4)
   _9=_2.alloci32(_4)
   _10=_2.alloci32(_4)
   _11=_2.alloci32(_4)
   _12=_2.alloci32((self.__mdimi + 1))
   _13=self.__x.getShape()
   _14=int((_13).shape[0])
   _15=(1 if ((_14==1) ) else _13[1])
   _16=_13[0]
   _17=_2.alloci32((_15 + 1))
   _18=(self.__msubi)
   _19=(self.__msubj)
   _20=(self.__mcof)
   _21=(self.__mdimi)
   _22=(self.__mdimj)
   _23=0
   _24=0
   _25=(_2.i32)
   _26=(_2.i64)
   _27=int((_20).shape[0])
   self.__x.inst(_8,_26,_7,_26)
   if (self.__x.numInst() < self.__x.getSize()):
    for _28 in range(0,(_21 + 1)):
     _25[(_12 + _28)] = 0
    for _29 in range(0,int((_18).shape[0])):
     _25[((_12 + _18[_29]) + 1)] += 1
    for _30 in range(0,_21):
     _25[((_12 + _30) + 1)] += _25[(_12 + _30)]
    if (_14==1):
     for _31 in range(0,_4):
      _25[(_9 + _31)] = numpy.int32(_26[(_8 + _31)])
     for _32 in range(0,_4):
      _25[(_10 + _32)] = 0
    else:
     for _33 in range(0,_4):
      _25[(_9 + _33)] = numpy.int32((_26[(_8 + _33)] // _15))
     for _34 in range(0,_4):
      _25[(_10 + _34)] = numpy.int32((_26[(_8 + _34)] % _15))
    if (_14 > 1):
     for _35 in range(0,(_15 + 1)):
      _25[(_17 + _35)] = 0
     for _36 in range(0,_4):
      _25[((_17 + _25[(_10 + _36)]) + 1)] += 1
     for _37 in range(0,_15):
      _25[((_17 + _37) + 1)] += _25[(_17 + _37)]
     for _38 in range(0,_4):
      _25[(_11 + _25[(_17 + _25[(_10 + _38)])])] = _38
      _25[(_17 + _25[(_10 + _38)])] += 1
     for _39 in range(0,_15):
      _25[((_17 + _15) - _39)] = _25[(((_17 + _15) - _39) - 1)]
     _25[_17] = 0
    else:
     _25[_17] = 0
     _25[(_17 + 1)] = _4
     for _40 in range(0,_4):
      _25[(_11 + _40)] = _40
    for _41 in range(0,_21):
     for _42 in range(0,_15):
      _43=0
      _44=_25[((_17 + _42) + 1)]
      _45=_25[((_12 + _41) + 1)]
      _46=_25[(_17 + _42)]
      _47=_25[(_12 + _41)]
      while ((_47 < _45) and (_46 < _44)):
       if (_19[_47] < _25[(_9 + _25[(_11 + _46)])]):
        _47 += 1
       elif (_19[_47] > _25[(_9 + _25[(_11 + _46)])]): # bld/grindsted/final/default/src/fusion/ExprMulVar.monty:307:24-61
        _46 += 1
       else:
        _43 += 1
        _47 += 1
        _46 += 1
      if (_43 > 0):
       _23 += _43
       _24 += 1
   else:
    _23 = (_27 * _15)
    _48=0
    while (_48 < _27):
     _49=(_48 + 1)
     while ((_49 < _27) and (_18[_48]==_18[_49])):
      _49 += 1
     _24 += 1
     _48 = _49
    _24 *= _15
   _50=(True if ((_24 < (_15 * _21)) ) else False)
   _51=_14
   _0.alloc_expr(_51,_24,_23,_50)
   _52=(_0.ptr_base)
   _53=(_0.shape_base)
   _54=(_0.nidxs_base)
   _55=((_0.sp_base) if (_50 ) else _0.alloci64(_24))
   _56=(_0.cof_base)
   _57=(_0.i32)
   _58=(_0.i64)
   _59=(_0.f64)
   _57[_53] = _21
   if (_14 > 1):
    _57[(_53 + 1)] = _15
   if (self.__x.numInst() < self.__x.getSize()):
    _60=0
    _61=0
    _62=0
    _57[_52] = 0
    for _63 in range(0,_21):
     for _64 in range(0,_15):
      _65=0
      _66=_25[((_17 + _64) + 1)]
      _67=_25[((_12 + _63) + 1)]
      _68=_25[(_17 + _64)]
      _69=_25[(_12 + _63)]
      while ((_69 < _67) and (_68 < _66)):
       if (_19[_69] < _25[(_9 + _25[(_11 + _68)])]):
        _69 += 1
       elif (_19[_69] > _25[(_9 + _25[(_11 + _68)])]): # bld/grindsted/final/default/src/fusion/ExprMulVar.monty:367:24-61
        _68 += 1
       else:
        _58[(_54 + _62)] = _26[(_7 + _25[(_11 + _68)])]
        _59[(_56 + _62)] = _20[_69]
        _65 += 1
        _62 += 1
        _69 += 1
        _68 += 1
      if (_65 > 0):
       _57[((_52 + _61) + 1)] = _62
       _58[(_55 + _61)] = _60
       _61 += 1
      _60 += 1
   else:
    _70=0
    _71=0
    _57[_52] = 0
    _72=0
    while (_72 < _27):
     _73=(_72 + 1)
     while ((_73 < _27) and (_18[_73]==_18[_72])):
      _73 += 1
     for _74 in range(0,_15):
      for _75 in range(_72,_73):
       _58[(_54 + _70)] = _26[((_7 + (_19[_75] * _15)) + _74)]
       _59[(_56 + _70)] = _20[_75]
       _70 += 1
      _57[((_52 + _71) + 1)] = _70
      _58[(_55 + _71)] = ((_18[_72] * _15) + _74)
      _71 += 1
     _72 = _73
   if (not _50):
    _0.popi64(_24)
   _2.clear()
  def __validate_alt_II_3I_3I_3D(self,_t__0,_t__1,_t__2,_t__3,_t__4):
   _0=numpy.int32(_t__0)
   _1=numpy.int32(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.int32))
   _4=numpy.array(_t__4,dtype=numpy.dtype(numpy.float64))
   _1_res = self.__validate_II_3I_3I_3D(_0,_1,_2,_3,_4)
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __validate_II_3I_3I_3D(self,_0,_1,_2,_3,_4):
   _5=True
   for _6 in range(0,int((_2).shape[0])):
    if ((_2[_6] < 0) or ((_2[_6] >= _0) or ((_3[_6] < 0) or (_3[_6] >= _1)))):
     _5 = False
   for _7 in range(1,int((_2).shape[0])):
    if ((_2[(_7 - 1)] > _2[_7]) or ((_2[(_7 - 1)]==_2[_7]) and (_3[(_7 - 1)] >= _3[_7]))):
     _5 = False
   if (not _5):
    raise mosek_fusion_IndexError._ctor_S("Invalid matrix data")
  @staticmethod
  def __resshape_alt_II_3IZ(_t__0,_t__1,_t__2,_t__3):
   _0=numpy.int32(_t__0)
   _1=numpy.int32(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=_t__3
   _1_res = mosek_fusion_ExprMulVar.__resshape_II_3IZ(_0,_1,_2,_3)
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __resshape_II_3IZ(_0,_1,_2,_3):
   if _3:
    return (numpy.array([_0,_2[1]], dtype=numpy.dtype(numpy.int32)))
   else:
    return (numpy.array([_2[0],_1], dtype=numpy.dtype(numpy.int32)))
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   if self.__left:
    return (mosek.fusion.Utils.StringBuffer()._a_S("ExprMulVar(M,")._a_S(self.__x.toString())._a_S(")")._toString_())
   else:
    return (mosek.fusion.Utils.StringBuffer()._a_S("ExprMulVar(")._a_S(self.__x.toString())._a_S(",M)")._toString_())
 return ExprMulVar
mosek_fusion_ExprMulVar=__mk_mosek_fusion_ExprMulVar()
del __mk_mosek_fusion_ExprMulVar
def __mk_mosek_fusion_ExprMulScalarVar():
 class ExprMulScalarVar(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprMulScalarVar__x','_ExprMulScalarVar__mcof','_ExprMulScalarVar__msubj','_ExprMulScalarVar__msubi','_ExprMulScalarVar__mdimj','_ExprMulScalarVar__mdimi']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_II_3I_3I_3DLmosek_4fusion_4Variable_2(*args): 
      self._ctor_init_II_3I_3I_3DLmosek_4fusion_4Variable_2(*args)
    elif self.__match_alt_ctor_II_3I_3I_3DLmosek_4fusion_4Variable_2(*args):
      self._ctor_alt_init_II_3I_3I_3DLmosek_4fusion_4Variable_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprMulScalarVar.ctor(int32,int32,array(int32,ndim=1),array(int32,ndim=1),array(double,ndim=1),mosek.fusion.Variable)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulScalarVar._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulScalarVar._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprMulScalarVar._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprMulScalarVar._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulScalarVar.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprMulScalarVar.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprMulScalarVar._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprMulScalarVar._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprMulScalarVar.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprMulScalarVar: '+self._toString_()
  @staticmethod
  def _ctor_II_3I_3I_3DLmosek_4fusion_4Variable_2(mdimi,mdimj,msubi,msubj,mcof,x):
    o = ExprMulScalarVar.__new__(ExprMulScalarVar)
    o._ctor_init_II_3I_3I_3DLmosek_4fusion_4Variable_2(mdimi,mdimj,msubi,msubj,mcof,x)
    return o
  @staticmethod
  def __match_ctor_II_3I_3I_3DLmosek_4fusion_4Variable_2(*args):
    if len(args) != 6: return False
    mdimi,mdimj,msubi,msubj,mcof,x, = args
    return (__arg_match_I__(mdimi) and __arg_match_I__(mdimj) and __arg_match__3I__(msubi) and __arg_match__3I__(msubj) and __arg_match__3D__(mcof) and __arg_match_Lmosek_4fusion_4Variable_2__(x))
  @staticmethod
  def __match_alt_ctor_II_3I_3I_3DLmosek_4fusion_4Variable_2(*args):
    if len(args) != 6: return False
    mdimi,mdimj,msubi,msubj,mcof,x, = args
    return (__arg_alt_match_I__(mdimi) and __arg_alt_match_I__(mdimj) and __arg_alt_match__3I__(msubi) and __arg_alt_match__3I__(msubj) and __arg_alt_match__3D__(mcof) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(x))
  def _ctor_alt_init_II_3I_3I_3DLmosek_4fusion_4Variable_2(self,mdimi,mdimj,msubi,msubj,mcof,x):
    self._ctor_init_II_3I_3I_3DLmosek_4fusion_4Variable_2(numpy.int32(mdimi),numpy.int32(mdimj),numpy.array(msubi,dtype=numpy.dtype(numpy.int32)),numpy.array(msubj,dtype=numpy.dtype(numpy.int32)),numpy.array(mcof,dtype=numpy.dtype(numpy.float64)),x)
  def _ctor_init_II_3I_3I_3DLmosek_4fusion_4Variable_2(self,mdimi,mdimj,msubi,msubj,mcof,x):
   mosek_fusion_ExprMulScalarVar._ctor_init_II_3I_3I_3DLmosek_4fusion_4Variable_2I(self,mdimi,mdimj,mosek.fusion.Utils.Tools._arraycopy__3I(msubi),mosek.fusion.Utils.Tools._arraycopy__3I(msubj),mosek.fusion.Utils.Tools._arraycopy__3D(mcof),x,1)
   if (x.getND()!=0):
    raise mosek_fusion_DimensionError._ctor_S("Invalid Variable size")
   if ((mdimi < 0) or ((mdimj < 0) or ((int((msubi).shape[0])!=int((msubj).shape[0])) or (int((msubi).shape[0])!=int((mcof).shape[0]))))):
    raise mosek_fusion_LengthError._ctor_S("Invalid Matrix data")
   _0=False
   for _1 in range(0,int((msubi).shape[0])):
    if ((msubi[_1] < 0) or ((msubi[_1] >= mdimi) or ((msubj[_1] < 0) or (msubj[_1] >= mdimj)))):
     _0 = True
   if _0:
    raise mosek_fusion_IndexError._ctor_S("Invalid Matrix data")
   _2=False
   for _3 in range(1,int((msubi).shape[0])):
    if ((msubi[_3] < msubi[(_3 - 1)]) or ((msubi[_3]==msubi[(_3 - 1)]) and (msubj[_3] <= msubj[(_3 - 1)]))):
     _2 = True
   if _2:
    raise mosek_fusion_IndexError._ctor_S("Matrix data not correctly sorted")
  @staticmethod
  def _ctor_II_3I_3I_3DLmosek_4fusion_4Variable_2I(mdimi,mdimj,msubi,msubj,mcof,x,unchecked_):
    o = ExprMulScalarVar.__new__(ExprMulScalarVar)
    o._ctor_init_II_3I_3I_3DLmosek_4fusion_4Variable_2I(mdimi,mdimj,msubi,msubj,mcof,x,unchecked_)
    return o
  @staticmethod
  def __match_ctor_II_3I_3I_3DLmosek_4fusion_4Variable_2I(*args):
    if len(args) != 7: return False
    mdimi,mdimj,msubi,msubj,mcof,x,unchecked_, = args
    return (__arg_match_I__(mdimi) and __arg_match_I__(mdimj) and __arg_match__3I__(msubi) and __arg_match__3I__(msubj) and __arg_match__3D__(mcof) and __arg_match_Lmosek_4fusion_4Variable_2__(x) and __arg_match_I__(unchecked_))
  @staticmethod
  def __match_alt_ctor_II_3I_3I_3DLmosek_4fusion_4Variable_2I(*args):
    if len(args) != 7: return False
    mdimi,mdimj,msubi,msubj,mcof,x,unchecked_, = args
    return (__arg_alt_match_I__(mdimi) and __arg_alt_match_I__(mdimj) and __arg_alt_match__3I__(msubi) and __arg_alt_match__3I__(msubj) and __arg_alt_match__3D__(mcof) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(x) and __arg_alt_match_I__(unchecked_))
  def _ctor_alt_init_II_3I_3I_3DLmosek_4fusion_4Variable_2I(self,mdimi,mdimj,msubi,msubj,mcof,x,unchecked_):
    self._ctor_init_II_3I_3I_3DLmosek_4fusion_4Variable_2I(numpy.int32(mdimi),numpy.int32(mdimj),numpy.array(msubi,dtype=numpy.dtype(numpy.int32)),numpy.array(msubj,dtype=numpy.dtype(numpy.int32)),numpy.array(mcof,dtype=numpy.dtype(numpy.float64)),x,numpy.int32(unchecked_))
  def _ctor_init_II_3I_3I_3DLmosek_4fusion_4Variable_2I(self,mdimi,mdimj,msubi,msubj,mcof,x,unchecked_):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,x.getModel(),numpy.array([mdimi,mdimj], dtype=numpy.dtype(numpy.int32)))
   (self.__mdimi) = mdimi
   (self.__mdimj) = mdimj
   (self.__msubi) = msubi
   (self.__msubj) = msubj
   (self.__mcof) = mcof
   (self.__x) = x
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   if (self.__x.numInst()==0):
    _0.alloc_expr(2,0,0,False)
    (_0.i32)[(_0.shape_base)] = self.__mdimi
    (_0.i32)[((_0.shape_base) + 1)] = self.__mdimj
   else:
    _4=numpy.zeros((1,), dtype=numpy.dtype(numpy.int64))
    self.__x.inst(0,_4)
    _5=_4[0]
    _6=int((self.__msubi).shape[0])
    _7=_6
    _8=(_6 < (self.__mdimi * self.__mdimj))
    _0.alloc_expr(2,_6,_7,_8)
    _9=(_0.ptr_base)
    (_0.i32)[(_0.shape_base)] = self.__mdimi
    (_0.i32)[((_0.shape_base) + 1)] = self.__mdimj
    _10=(_0.nidxs_base)
    _11=(_0.sp_base)
    _12=(_0.cof_base)
    _13=(_0.i32)
    _14=(_0.i64)
    _15=(_0.f64)
    for _16 in range(0,_7):
     _15[(_12 + _16)] = self.__mcof[_16]
    for _17 in range(0,_7):
     _14[(_10 + _17)] = _5
    if _8:
     for _18 in range(0,_6):
      _14[(_11 + _18)] = ((self.__msubi[_18] * self.__mdimj) + self.__msubj[_18])
    for _19 in range(0,(_6 + 1)):
     _13[(_9 + _19)] = _19
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprMulScalarVar(M(")._a_I(self.__mdimi)._a_S(",")._a_I(self.__mdimj)._a_S("), ")._a_S(self.__x.toString())._a_S(")")._toString_())
 return ExprMulScalarVar
mosek_fusion_ExprMulScalarVar=__mk_mosek_fusion_ExprMulScalarVar()
del __mk_mosek_fusion_ExprMulScalarVar
def __mk_mosek_fusion_ExprSumReduceEnd():
 class ExprSumReduceEnd(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprSumReduceEnd__ndim','_ExprSumReduceEnd__expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_ILmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_ILmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_ILmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_ILmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprSumReduceEnd.ctor(int32,mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprSumReduceEnd._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprSumReduceEnd._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprSumReduceEnd._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprSumReduceEnd._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprSumReduceEnd.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprSumReduceEnd.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def compress_when_caching(self,*args):
    if False: pass
    elif mosek_fusion_ExprSumReduceEnd._match_compress_1when_1caching_(*args): 
      return self._compress_1when_1caching_(*args)
    elif mosek_fusion_ExprSumReduceEnd._match_alt_compress_1when_1caching_(*args): 
      return self._compress_1when_1caching_alt_(*args)
    else:
      raise ValueError('Invalid argument list compress_when_caching('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprSumReduceEnd.compress_when_caching()')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprSumReduceEnd._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprSumReduceEnd._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprSumReduceEnd.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprSumReduceEnd: '+self._toString_()
  @staticmethod
  def _ctor_ILmosek_4fusion_4Expression_2(ndim,expr):
    o = ExprSumReduceEnd.__new__(ExprSumReduceEnd)
    o._ctor_init_ILmosek_4fusion_4Expression_2(ndim,expr)
    return o
  @staticmethod
  def __match_ctor_ILmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    ndim,expr, = args
    return (__arg_match_I__(ndim) and __arg_match_Lmosek_4fusion_4Expression_2__(expr))
  @staticmethod
  def __match_alt_ctor_ILmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    ndim,expr, = args
    return (__arg_alt_match_I__(ndim) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr))
  def _ctor_alt_init_ILmosek_4fusion_4Expression_2(self,ndim,expr):
    self._ctor_init_ILmosek_4fusion_4Expression_2(numpy.int32(ndim),expr)
  def _ctor_init_ILmosek_4fusion_4Expression_2(self,ndim,expr):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),mosek.fusion.ExprSumReduceEnd.__computeShape_I_3I(ndim,expr.getShape()))
   (self.__expr) = expr
   (self.__ndim) = ndim
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__expr.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.nd)
   _5=(_1.shape_base)
   _6=(_1.nelem)
   _7=(_1.nnz)
   _8=(_1.ncodeatom)
   _9=(_1.hassp)
   _10=(_1.ptr_base)
   _11=(_1.sp_base)
   _12=(_1.nidxs_base)
   _13=(_1.cof_base)
   _14=(_1.code_base)
   _15=(_1.codeptr_base)
   _16=(_1.cconst_base)
   _17=(_1.i32)
   _18=(_1.i64)
   _19=(_1.f64)
   _20=1
   for _21 in range(0,(_4 - self.__ndim)):
    _20 *= _17[(_5 + _21)]
   _22=1
   for _23 in range((_4 - self.__ndim),_4):
    _22 *= _17[(_5 + _23)]
   if _9:
    _24=0
    if (_6 > 0):
     _25=0
     _26=(- 1)
     while (_25 < _6):
      _24 += 1
      _26 = (((_18[(_11 + _25)] // _22) + 1) * _22)
      while ((_25 < _6) and (_18[(_11 + _25)] < _26)):
       _25 += 1
    _27=_7
    _28=(_4 - self.__ndim)
    _29=_8
    _30=1
    for _31 in range(0,(_4 - self.__ndim)):
     _30 *= _17[(_5 + _31)]
    _32=(_24 < _30)
    _0.alloc_expr(_28,_24,_27,_32,_29)
    _33=(_0.ptr_base)
    _34=(_0.nidxs_base)
    _35=((_0.sp_base) if (_32 ) else _0.alloci64(_24))
    _36=(_0.cof_base)
    _37=(_0.shape_base)
    _38=(_0.code_base)
    _39=(_0.codeptr_base)
    _40=(_0.cconst_base)
    _41=(_0.i32)
    _42=(_0.i64)
    _43=(_0.f64)
    _44=0
    _45=0
    _46=0
    _41[_33] = 0
    for _47 in range(0,_28):
     _41[(_37 + _47)] = _17[(_5 + _47)]
    mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(_18,_12,_42,_34,_7)
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(_19,_13,_43,_36,_7)
    if (_29 > 0):
     mosek.fusion.Utils.Tools._arraycopy__3II_3III(_17,_14,_41,_38,_29)
     mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(_19,_16,_43,_40,_29)
     mosek.fusion.Utils.Tools._arraycopy__3II_3III(_17,_15,_41,_39,(_7 + 1))
    _48=0
    for _49 in range(0,_24):
     _50=(_18[(_11 + _48)] // _22)
     if _32:
      _42[(_35 + _49)] = _50
     _48 += 1
     _51=((_50 + 1) * _22)
     while ((_48 < _6) and (_18[(_11 + _48)] < _51)):
      _48 += 1
     _41[((_33 + _49) + 1)] = _17[(_10 + _48)]
   else:
    _52=numpy.int32(_20)
    _53=_7
    _54=_8
    _55=(_4 - self.__ndim)
    _0.alloc_expr(_55,_52,_53,False,_54)
    _56=(_0.ptr_base)
    _57=(_0.nidxs_base)
    _58=(_0.cof_base)
    _59=(_0.shape_base)
    _60=(_0.code_base)
    _61=(_0.codeptr_base)
    _62=(_0.cconst_base)
    _63=(_0.i32)
    _64=(_0.i64)
    _65=(_0.f64)
    _66=0
    for _67 in range(0,_55):
     _63[(_59 + _67)] = _17[(_5 + _67)]
    mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(_18,_12,_64,_57,_7)
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(_19,_13,_65,_58,_7)
    if (_54 > 0):
     mosek.fusion.Utils.Tools._arraycopy__3II_3III(_17,_14,_63,_60,_54)
     mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(_19,_16,_65,_62,_54)
     mosek.fusion.Utils.Tools._arraycopy__3II_3III(_17,_15,_63,_61,(_7 + 1))
    _63[_56] = 0
    for _68 in range(0,_52):
     _63[((_56 + _68) + 1)] = numpy.int32((_22 * (_68 + 1)))
  @staticmethod
  def __computeShape_alt_I_3I(_t__0,_t__1):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_ExprSumReduceEnd.__computeShape_I_3I(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __computeShape_I_3I(_0,_1):
   if (int((_1).shape[0]) <= _0):
    raise mosek_fusion_DimensionError._ctor_S("Invalid summing dimension")
   _2=numpy.zeros(((int((_1).shape[0]) - _0),), dtype=numpy.dtype(numpy.int32))
   for _3 in range(0,int((_2).shape[0])):
    _2[_3] = _1[_3]
   return (_2)
  @staticmethod
  def _match_compress_1when_1caching_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_compress_1when_1caching_(*args):
    if len(args) != 0: return False
    return True
  def _compress_1when_1caching_alt_(self,):
    return self._compress_1when_1caching_()
  def _compress_1when_1caching_(self,):
   return (True)
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprSumReduceEnd(")._a_I(self.__ndim)._a_S(",")._a_S(self.__expr.toString())._a_S(")")._toString_())
 return ExprSumReduceEnd
mosek_fusion_ExprSumReduceEnd=__mk_mosek_fusion_ExprSumReduceEnd()
del __mk_mosek_fusion_ExprSumReduceEnd
def __mk_mosek_fusion_ExprAdd():
 class ExprAdd(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprAdd__m2','_ExprAdd__m1','_ExprAdd__e2','_ExprAdd__e1']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2DD(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2DD(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2DD(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2DD(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprAdd.ctor(mosek.fusion.Expression,mosek.fusion.Expression,double,double)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprAdd._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprAdd._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprAdd._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprAdd._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprAdd.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprAdd.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def compress_when_caching(self,*args):
    if False: pass
    elif mosek_fusion_ExprAdd._match_compress_1when_1caching_(*args): 
      return self._compress_1when_1caching_(*args)
    elif mosek_fusion_ExprAdd._match_alt_compress_1when_1caching_(*args): 
      return self._compress_1when_1caching_alt_(*args)
    else:
      raise ValueError('Invalid argument list compress_when_caching('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprAdd.compress_when_caching()')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprAdd._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprAdd._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprAdd.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprAdd: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2DD(e1,e2,m1,m2):
    o = ExprAdd.__new__(ExprAdd)
    o._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2DD(e1,e2,m1,m2)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2DD(*args):
    if len(args) != 4: return False
    e1,e2,m1,m2, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(e1) and __arg_match_Lmosek_4fusion_4Expression_2__(e2) and __arg_match_D__(m1) and __arg_match_D__(m2))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2DD(*args):
    if len(args) != 4: return False
    e1,e2,m1,m2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(e1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(e2) and __arg_alt_match_D__(m1) and __arg_alt_match_D__(m2))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2DD(self,e1,e2,m1,m2):
    self._ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2DD(e1,e2,numpy.float64(m1),numpy.float64(m2))
  def _ctor_init_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2DD(self,e1,e2,m1,m2):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,mosek.fusion.BaseExpression._modelFrom_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(e1,e2),e1.getShape())
   (self.__e1) = e1
   (self.__e2) = e2
   (self.__m1) = m1
   (self.__m2) = m2
   if (e1.getND()!=e2.getND()):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand shapes")
   for _0 in range(0,e1.getND()):
    if (e1.getDim(_0)!=e2.getDim(_0)):
     raise mosek_fusion_DimensionError._ctor_S("Mismatching operand shapes")
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__e1.recursive_eval(_1,_0,_2,_3)
   self.__e2.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.nd)
   _5=(_1.shape_base)
   _6=(_1.nelem)
   _7=(_1.nnz)
   _8=(_1.ncodeatom)
   _9=(_1.hassp)
   _10=(_1.ptr_base)
   _11=(_1.sp_base)
   _12=(_1.nidxs_base)
   _13=(_1.cof_base)
   _14=(_1.code_base)
   _15=(_1.codeptr_base)
   _16=(_1.cconst_base)
   _1.pop_expr()
   _17=(_1.nd)
   _18=(_1.shape_base)
   _19=(_1.nelem)
   _20=(_1.nnz)
   _21=(_1.ncodeatom)
   _22=(_1.hassp)
   _23=(_1.ptr_base)
   _24=(_1.sp_base)
   _25=(_1.nidxs_base)
   _26=(_1.cof_base)
   _27=(_1.code_base)
   _28=(_1.codeptr_base)
   _29=(_1.cconst_base)
   _30=(_1.i32)
   _31=(_1.i64)
   _32=(_1.f64)
   _33=((_21 > 0) or (_8 > 0))
   if (_17!=_4):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand shapes")
   for _34 in range(0,_17):
    if (_30[(_18 + _34)]!=_30[(_5 + _34)]):
     raise mosek_fusion_DimensionError._ctor_S("Mismatching operand shapes")
   if ((not _22) and (not _9)):
    _35=_19
    _36=(_20 + _7)
    _37=0
    if _33:
     _37 += ((_21 + (_20 * 2)) if ((_21 > 0) ) else _20)
     _37 += ((_8 + (_7 * 2)) if ((_8 > 0) ) else _7)
    _38=_17
    _0.alloc_expr(_38,_35,_36,False,_37)
    _39=(_0.shape_base)
    _40=(_0.ptr_base)
    _41=(_0.sp_base)
    _42=(_0.nidxs_base)
    _43=(_0.cof_base)
    _44=(_0.code_base)
    _45=(_0.codeptr_base)
    _46=(_0.cconst_base)
    _47=(_0.i32)
    _48=(_0.i64)
    _49=(_0.f64)
    for _50 in range(0,_38):
     _47[(_39 + _50)] = _30[(_18 + _50)]
    _51=0
    _52=0
    if (_37 > 0):
     _47[_45] = 0
    _47[_40] = 0
    for _53 in range(0,_35):
     for _54 in range(_30[(_23 + _53)],_30[((_23 + _53) + 1)]):
      _48[(_42 + _52)] = _31[(_25 + _54)]
      _49[(_43 + _52)] = (_32[(_26 + _54)] * self.__m1)
      if (_21 > 0):
       for _55 in range(_30[(_28 + _54)],_30[((_28 + _54) + 1)]):
        _47[(_44 + _51)] = _30[(_27 + _55)]
        _49[(_46 + _51)] = _32[(_29 + _55)]
        _51 += 1
       _47[(_44 + _51)] = 2
       _49[(_46 + _51)] = self.__m1
       _51 += 1
       _47[(_44 + _51)] = 5
       _51 += 1
       _47[((_45 + _52) + 1)] = _51
      else:
       if (_37 > 0):
        _47[(_44 + _51)] = 2
        _49[(_46 + _51)] = 0.0
        _51 += 1
        _47[((_45 + _52) + 1)] = _51
      _52 += 1
     for _56 in range(_30[(_10 + _53)],_30[((_10 + _53) + 1)]):
      _48[(_42 + _52)] = _31[(_12 + _56)]
      _49[(_43 + _52)] = (_32[(_13 + _56)] * self.__m2)
      if (_8 > 0):
       for _57 in range(_30[(_15 + _56)],_30[((_15 + _56) + 1)]):
        _47[(_44 + _51)] = _30[(_14 + _57)]
        _49[(_46 + _51)] = _32[(_16 + _57)]
        _51 += 1
       _47[(_44 + _51)] = 2
       _49[(_46 + _51)] = self.__m2
       _51 += 1
       _47[(_44 + _51)] = 5
       _51 += 1
       _47[((_45 + _52) + 1)] = _51
      else:
       if (_37 > 0):
        _47[(_44 + _51)] = 2
        _49[(_46 + _51)] = 0.0
        _51 += 1
        _47[((_45 + _52) + 1)] = _51
      _52 += 1
     _47[((_40 + _53) + 1)] = _52
   elif ((not _22) or (not _9)): # bld/grindsted/final/default/src/fusion/ExprAdd.monty:1014:16-1015:26
    if (not _9):
     _58=_6
     _59=_7
     _60=_10
     _61=_11
     _62=_12
     _63=_8
     _64=_15
     _65=_14
     _66=_16
     _67=_13
     _6 = _19
     _7 = _20
     _10 = _23
     _11 = _24
     _12 = _25
     _8 = _21
     _15 = _28
     _14 = _27
     _16 = _29
     _13 = _26
     _19 = _58
     _20 = _59
     _23 = _60
     _24 = _61
     _25 = _62
     _21 = _63
     _28 = _64
     _27 = _65
     _29 = _66
     _26 = _67
    _68=((self.__m1) if ((not _22) ) else (self.__m2))
    _69=((self.__m2) if ((not _22) ) else (self.__m1))
    _70=_19
    _71=(_20 + _7)
    _72=_17
    _73=(_21 + _8)
    if _33:
     _73 += ((2 * _20) if ((_21 > 0) ) else _20)
     _73 += ((2 * _7) if ((_8 > 0) ) else _7)
    _0.alloc_expr(_72,_70,_71,False,_73)
    _74=(_0.shape_base)
    _75=(_0.ptr_base)
    _76=(_0.sp_base)
    _77=(_0.nidxs_base)
    _78=(_0.cof_base)
    _79=(_0.code_base)
    _80=(_0.codeptr_base)
    _81=(_0.cconst_base)
    _82=(_0.i32)
    _83=(_0.i64)
    _84=(_0.f64)
    _85=0
    _86=0
    _87=0
    for _88 in range(0,_72):
     _82[(_74 + _88)] = _30[(_18 + _88)]
    _82[_75] = 0
    if (_73 > 0):
     _82[_80] = 0
    _89=0
    for _90 in range(0,_19):
     for _91 in range(_30[(_23 + _90)],_30[((_23 + _90) + 1)]):
      _83[(_77 + _87)] = _31[(_25 + _91)]
      _84[(_78 + _87)] = (_32[(_26 + _91)] * _68)
      if (_21 > 0):
       for _92 in range(_30[(_28 + _91)],_30[((_28 + _91) + 1)]):
        _82[(_79 + _85)] = _30[(_27 + _92)]
        _84[(_81 + _85)] = _32[(_29 + _92)]
        _85 += 1
       _82[(_79 + _85)] = 2
       _84[(_81 + _85)] = _68
       _85 += 1
       _82[(_79 + _85)] = 5
       _85 += 1
       _82[((_80 + _87) + 1)] = _85
      else:
       if (_73 > 0):
        _82[(_79 + _85)] = 2
        _84[(_81 + _85)] = 0.0
        _85 += 1
        _82[((_80 + _87) + 1)] = _85
      _87 += 1
     if ((_89 < _6) and (_90==_31[(_11 + _89)])):
      for _93 in range(_30[(_10 + _89)],_30[((_10 + _89) + 1)]):
       _83[(_77 + _87)] = _31[(_12 + _93)]
       _84[(_78 + _87)] = (_32[(_13 + _93)] * _69)
       if (_8 > 0):
        for _94 in range(_30[(_15 + _93)],_30[((_15 + _93) + 1)]):
         _82[(_79 + _85)] = _30[(_14 + _94)]
         _84[(_81 + _85)] = _32[(_16 + _94)]
         _85 += 1
        _82[(_79 + _85)] = 2
        _84[(_81 + _85)] = _69
        _85 += 1
        _82[(_79 + _85)] = 5
        _85 += 1
        _82[((_80 + _87) + 1)] = _85
       else:
        if (_73 > 0):
         _82[(_79 + _85)] = 2
         _84[(_81 + _85)] = 0.0
         _85 += 1
         _82[((_80 + _87) + 1)] = _85
       _87 += 1
      _89 += 1
     _82[((_75 + _86) + 1)] = _87
     _86 += 1
    if (_86!=_70):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: invalid nelem")
    if (_87!=_71):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: invalid nnz")
    if (_85!=_73):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: invalid codei")
   else:
    _95=(_20 + _7)
    _96=0
    _97=_17
    _98=(_21 + _8)
    if _33:
     _98 += ((2 * _20) if ((_21 > 0) ) else _20)
     _98 += ((2 * _7) if ((_8 > 0) ) else _7)
    _99=1
    for _100 in range(0,_97):
     _99 *= _30[(_18 + _100)]
    _101=0
    _102=0
    while ((_102 < _19) and (_101 < _6)):
     if (_31[(_24 + _102)] < _31[(_11 + _101)]):
      _96 += 1
      _102 += 1
     elif (_31[(_24 + _102)] > _31[(_11 + _101)]): # bld/grindsted/final/default/src/fusion/ExprAdd.monty:1325:22-49
      _96 += 1
      _101 += 1
     else:
      _96 += 1
      _102 += 1
      _101 += 1
    _96 += (((_19 - _102) + _6) - _101)
    _103=(_96 < _99)
    _0.alloc_expr(_97,_96,_95,_103,_98)
    _104=(_0.shape_base)
    _105=(_0.ptr_base)
    _106=((_0.sp_base) if (_103 ) else _0.alloci64(_96))
    _107=(_0.nidxs_base)
    _108=(_0.cof_base)
    _109=(_0.code_base)
    _110=(_0.codeptr_base)
    _111=(_0.cconst_base)
    _112=(_0.i32)
    _113=(_0.i64)
    _114=(_0.f64)
    for _115 in range(0,_97):
     _112[(_104 + _115)] = _30[(_18 + _115)]
    _112[_105] = 0
    if (_98 > 0):
     _112[_110] = 0
    _116=0
    _117=0
    _118=0
    _119=0
    _120=0
    while ((_120 < _19) and (_119 < _6)):
     if (_31[(_24 + _120)] < _31[(_11 + _119)]):
      for _121 in range(_30[(_23 + _120)],_30[((_23 + _120) + 1)]):
       _113[(_107 + _118)] = _31[(_25 + _121)]
       _114[(_108 + _118)] = (self.__m1 * _32[(_26 + _121)])
       if (_21 > 0):
        for _122 in range(_30[(_28 + _121)],_30[((_28 + _121) + 1)]):
         _112[(_109 + _116)] = _30[(_27 + _122)]
         _114[(_111 + _116)] = _32[(_29 + _122)]
         _116 += 1
        _112[(_109 + _116)] = 2
        _114[(_111 + _116)] = self.__m1
        _116 += 1
        _112[(_109 + _116)] = 5
        _116 += 1
        _112[((_110 + _118) + 1)] = _116
       else:
        if (_98 > 0):
         _112[(_109 + _116)] = 2
         _114[(_111 + _116)] = 0
         _116 += 1
         _112[((_110 + _118) + 1)] = _116
       _118 += 1
      _113[(_106 + _117)] = _31[(_24 + _120)]
      _112[((_105 + _117) + 1)] = _118
      _117 += 1
      _120 += 1
     elif (_31[(_11 + _119)] < _31[(_24 + _120)]): # bld/grindsted/final/default/src/fusion/ExprAdd.monty:1394:22-49
      for _123 in range(_30[(_10 + _119)],_30[((_10 + _119) + 1)]):
       _113[(_107 + _118)] = _31[(_12 + _123)]
       _114[(_108 + _118)] = (self.__m2 * _32[(_13 + _123)])
       if (_8 > 0):
        for _124 in range(_30[(_15 + _123)],_30[((_15 + _123) + 1)]):
         _112[(_109 + _116)] = _30[(_14 + _124)]
         _114[(_111 + _116)] = _32[(_16 + _124)]
         _116 += 1
        _112[(_109 + _116)] = 2
        _114[(_111 + _116)] = self.__m2
        _116 += 1
        _112[(_109 + _116)] = 5
        _116 += 1
        _112[((_110 + _118) + 1)] = _116
       else:
        if (_98 > 0):
         _112[(_109 + _116)] = 2
         _114[(_111 + _116)] = 0
         _116 += 1
         _112[((_110 + _118) + 1)] = _116
       _118 += 1
      _113[(_106 + _117)] = _31[(_11 + _119)]
      _112[((_105 + _117) + 1)] = _118
      _117 += 1
      _119 += 1
     else:
      for _125 in range(_30[(_23 + _120)],_30[((_23 + _120) + 1)]):
       _113[(_107 + _118)] = _31[(_25 + _125)]
       _114[(_108 + _118)] = (self.__m1 * _32[(_26 + _125)])
       if (_21 > 0):
        for _126 in range(_30[(_28 + _125)],_30[((_28 + _125) + 1)]):
         _112[(_109 + _116)] = _30[(_27 + _126)]
         _114[(_111 + _116)] = _32[(_29 + _126)]
         _116 += 1
        _112[(_109 + _116)] = 2
        _114[(_111 + _116)] = self.__m1
        _116 += 1
        _112[(_109 + _116)] = 5
        _116 += 1
        _112[((_110 + _118) + 1)] = _116
       else:
        if (_98 > 0):
         _112[(_109 + _116)] = 2
         _114[(_111 + _116)] = 0
         _116 += 1
         _112[((_110 + _118) + 1)] = _116
       _118 += 1
      for _127 in range(_30[(_10 + _119)],_30[((_10 + _119) + 1)]):
       _113[(_107 + _118)] = _31[(_12 + _127)]
       _114[(_108 + _118)] = (self.__m2 * _32[(_13 + _127)])
       if (_8 > 0):
        for _128 in range(_30[(_15 + _127)],_30[((_15 + _127) + 1)]):
         _112[(_109 + _116)] = _30[(_14 + _128)]
         _114[(_111 + _116)] = _32[(_16 + _128)]
         _116 += 1
        _112[(_109 + _116)] = 2
        _114[(_111 + _116)] = self.__m2
        _116 += 1
        _112[(_109 + _116)] = 5
        _116 += 1
        _112[((_110 + _118) + 1)] = _116
       else:
        if (_98 > 0):
         _112[(_109 + _116)] = 2
         _114[(_111 + _116)] = 0
         _116 += 1
         _112[((_110 + _118) + 1)] = _116
       _118 += 1
      _113[(_106 + _117)] = _31[(_24 + _120)]
      _112[((_105 + _117) + 1)] = _118
      _117 += 1
      _120 += 1
      _119 += 1
    while (_120 < _19):
     for _129 in range(_30[(_23 + _120)],_30[((_23 + _120) + 1)]):
      _113[(_107 + _118)] = _31[(_25 + _129)]
      _114[(_108 + _118)] = (self.__m1 * _32[(_26 + _129)])
      if (_21 > 0):
       for _130 in range(_30[(_28 + _129)],_30[((_28 + _129) + 1)]):
        _112[(_109 + _116)] = _30[(_27 + _130)]
        _114[(_111 + _116)] = _32[(_29 + _130)]
        _116 += 1
       _112[(_109 + _116)] = 2
       _114[(_111 + _116)] = self.__m1
       _116 += 1
       _112[(_109 + _116)] = 5
       _116 += 1
       _112[((_110 + _118) + 1)] = _116
      else:
       if (_98 > 0):
        _112[(_109 + _116)] = 2
        _114[(_111 + _116)] = 0
        _116 += 1
        _112[((_110 + _118) + 1)] = _116
      _118 += 1
     _113[(_106 + _117)] = _31[(_24 + _120)]
     _112[((_105 + _117) + 1)] = _118
     _117 += 1
     _120 += 1
    while (_119 < _6):
     for _131 in range(_30[(_10 + _119)],_30[((_10 + _119) + 1)]):
      _113[(_107 + _118)] = _31[(_12 + _131)]
      _114[(_108 + _118)] = (self.__m2 * _32[(_13 + _131)])
      if (_8 > 0):
       for _132 in range(_30[(_15 + _131)],_30[((_15 + _131) + 1)]):
        _112[(_109 + _116)] = _30[(_14 + _132)]
        _114[(_111 + _116)] = _32[(_16 + _132)]
        _116 += 1
       _112[(_109 + _116)] = 2
       _114[(_111 + _116)] = self.__m2
       _116 += 1
       _112[(_109 + _116)] = 5
       _116 += 1
       _112[((_110 + _118) + 1)] = _116
      else:
       if (_98 > 0):
        _112[(_109 + _116)] = 2
        _114[(_111 + _116)] = 0
        _116 += 1
        _112[((_110 + _118) + 1)] = _116
      _118 += 1
     _113[(_106 + _117)] = _31[(_11 + _119)]
     _112[((_105 + _117) + 1)] = _118
     _117 += 1
     _119 += 1
    if (not _103):
     _0.popi64(_96)
  @staticmethod
  def _match_compress_1when_1caching_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_compress_1when_1caching_(*args):
    if len(args) != 0: return False
    return True
  def _compress_1when_1caching_alt_(self,):
    return self._compress_1when_1caching_()
  def _compress_1when_1caching_(self,):
   return (True)
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprAdd(")._a_S(self.__e1.toString())._a_S(",")._a_S(self.__e2.toString())._a_S("; ")._a_D(self.__m1)._a_S(",")._a_D(self.__m2)._a_S(")")._toString_())
 return ExprAdd
mosek_fusion_ExprAdd=__mk_mosek_fusion_ExprAdd()
del __mk_mosek_fusion_ExprAdd
def __mk_mosek_fusion_ExprWSum():
 class ExprWSum(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprWSum__w','_ExprWSum__es']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor__3Lmosek_4fusion_4Expression_2_3D(*args): 
      self._ctor_init__3Lmosek_4fusion_4Expression_2_3D(*args)
    elif self.__match_alt_ctor__3Lmosek_4fusion_4Expression_2_3D(*args):
      self._ctor_alt_init__3Lmosek_4fusion_4Expression_2_3D(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprWSum.ctor(array(mosek.fusion.Expression,ndim=1),array(double,ndim=1))')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprWSum._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprWSum._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprWSum._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprWSum._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprWSum.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprWSum.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def compress_when_caching(self,*args):
    if False: pass
    elif mosek_fusion_ExprWSum._match_compress_1when_1caching_(*args): 
      return self._compress_1when_1caching_(*args)
    elif mosek_fusion_ExprWSum._match_alt_compress_1when_1caching_(*args): 
      return self._compress_1when_1caching_alt_(*args)
    else:
      raise ValueError('Invalid argument list compress_when_caching('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprWSum.compress_when_caching()')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprWSum._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprWSum._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprWSum.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprWSum: '+self._toString_()
  @staticmethod
  def _ctor__3Lmosek_4fusion_4Expression_2_3D(es,w):
    o = ExprWSum.__new__(ExprWSum)
    o._ctor_init__3Lmosek_4fusion_4Expression_2_3D(es,w)
    return o
  @staticmethod
  def __match_ctor__3Lmosek_4fusion_4Expression_2_3D(*args):
    if len(args) != 2: return False
    es,w, = args
    return (__arg_match__3Lmosek_4fusion_4Expression_2__(es) and __arg_match__3D__(w))
  @staticmethod
  def __match_alt_ctor__3Lmosek_4fusion_4Expression_2_3D(*args):
    if len(args) != 2: return False
    es,w, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Expression_2__(es) and __arg_alt_match__3D__(w))
  def _ctor_alt_init__3Lmosek_4fusion_4Expression_2_3D(self,es,w):
    self._ctor_init__3Lmosek_4fusion_4Expression_2_3D(numpy.array(es,dtype=numpy.dtype(object)),numpy.array(w,dtype=numpy.dtype(numpy.float64)))
  def _ctor_init__3Lmosek_4fusion_4Expression_2_3D(self,es,w):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,mosek.fusion.BaseExpression._modelFrom__3Lmosek_4fusion_4Expression_2(es),es[0].getShape())
   if (int((w).shape[0])!=int((es).shape[0])):
    raise mosek_fusion_LengthError._ctor_S("Mismatching weights and expressions array lengths")
   (self.__w) = mosek.fusion.Utils.Tools._arraycopy__3D(w)
   _0=es[0].getShape()
   _1=int((_0).shape[0])
   for _2 in range(1,int((es).shape[0])):
    _3=es[_2].getShape()
    if (_1!=int((_3).shape[0])):
     raise mosek_fusion_DimensionError._ctor_S("Mismatching expression shapes")
    else:
     for _4 in range(0,_1):
      if (_0[_4]!=_3[_4]):
       raise mosek_fusion_DimensionError._ctor_S("Mismatching expression shapes")
   (self.__es) = numpy.array([es[_5] for _5 in range(0,int((es).shape[0]))], dtype=numpy.dtype(object))
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   _4=int((self.__es).shape[0])
   for _5 in range(0,_4):
    self.__es[_5].recursive_eval(_1,_0,_2,_3)
   _6=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _7=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _8=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _9=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _10=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _11=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _12=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _13=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _14=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _15=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _16=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _17=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _18=numpy.zeros((_4,), dtype=numpy.dtype(bool))
   for _19 in range(0,_4):
    _1.pop_expr()
    _6[((_4 - 1) - _19)] = (_1.nd)
    _7[((_4 - 1) - _19)] = (_1.nelem)
    _8[((_4 - 1) - _19)] = (_1.nnz)
    _9[((_4 - 1) - _19)] = (_1.ncodeatom)
    _10[((_4 - 1) - _19)] = (_1.ptr_base)
    _12[((_4 - 1) - _19)] = (_1.sp_base)
    _11[((_4 - 1) - _19)] = (_1.nidxs_base)
    _13[((_4 - 1) - _19)] = (_1.cof_base)
    _14[((_4 - 1) - _19)] = (_1.shape_base)
    _15[((_4 - 1) - _19)] = (_1.code_base)
    _16[((_4 - 1) - _19)] = (_1.codeptr_base)
    _17[((_4 - 1) - _19)] = (_1.cconst_base)
    _18[((_4 - 1) - _19)] = (_1.hassp)
   _20=(_1.i32)
   _21=(_1.i64)
   _22=(_1.f64)
   _23=True
   for _24 in range(1,_4):
    _23 = (_23 and (_6[0]==_6[_24]))
    for _25 in range(0,_6[0]):
     _23 = (_23 and (_20[(_14[0] + _25)]==_20[(_14[_24] + _25)]))
   if (not _23):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand shapes")
   _26=numpy.array([_20[(_14[0] + _27)] for _27 in range(0,_6[0])], dtype=numpy.dtype(numpy.int32))
   _28=False
   for _29 in range(0,_4):
    if (not _18[_29]):
     _28 = True
   _30=False
   for _31 in range(0,_4):
    if (_9[_31] > 0):
     _30 = True
   _32=0
   _33=0
   _34=0
   if _28:
    _33 = numpy.int32(mosek.fusion.Set._size__3I(_26))
    for _35 in range(0,_4):
     _34 += _8[_35]
     if _30:
      _32 += ((_9[_35] + (2 * _8[_35])) if ((_9[_35] > 0) ) else _8[_35])
   else:
    _36=False
    _37=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    for _38 in range(0,_4):
     _34 += _8[_38]
     if _30:
      _32 += ((_9[_38] + (2 * _8[_38])) if ((_9[_38] > 0) ) else _8[_38])
    while (not _36):
     _39=(- 1)
     for _40 in range(0,_4):
      if ((_37[_40] < _7[_40]) and ((_39 < 0) or (_21[(_12[_40] + _37[_40])] < _39))):
       _39 = _21[(_12[_40] + _37[_40])]
     if (_39 < 0):
      _36 = True
     else:
      for _41 in range(0,_4):
       if ((_37[_41] < _7[_41]) and (_39==_21[(_12[_41] + _37[_41])])):
        _37[_41] += 1
      _33 += 1
   _0.alloc_expr(_6[0],_33,_34,(not _28),_32)
   _42=(_0.ptr_base)
   _43=(_0.nidxs_base)
   _44=(_0.sp_base)
   _45=(_0.shape_base)
   _46=(_0.cof_base)
   _47=(_0.code_base)
   _48=(_0.codeptr_base)
   _49=(_0.cconst_base)
   _50=(_0.i32)
   _51=(_0.i64)
   _52=(_0.f64)
   for _53 in range(0,_6[0]):
    _50[(_45 + _53)] = _20[(_14[0] + _53)]
   if (_32 > 0):
    _50[_48] = 0
   for _54 in range(0,(_33 + 1)):
    _50[(_42 + _54)] = 0
   if _28:
    _55=(- 9999)
    if (_32 > 0):
     _55 = _2.alloci32((_33 + 1))
    _56=(_2.i32)
    if (_32 > 0):
     for _57 in range(0,(_33 + 1)):
      _56[(_55 + _57)] = 0
    for _58 in range(0,_4):
     if _18[_58]:
      for _59 in range(0,_7[_58]):
       _50[((_42 + _21[(_12[_58] + _59)]) + 1)] += (_20[((_10[_58] + _59) + 1)] - _20[(_10[_58] + _59)])
      if (_9[_58] > 0):
       for _60 in range(0,_7[_58]):
        _56[((_55 + _21[(_12[_58] + _60)]) + 1)] += ((_20[(_16[_58] + _20[((_10[_58] + _60) + 1)])] - _20[(_16[_58] + _20[(_10[_58] + _60)])]) + (2 * (_20[((_10[_58] + _60) + 1)] - _20[(_10[_58] + _60)])))
      elif _30: # bld/grindsted/final/default/src/fusion/ExprAdd.monty:543:22-33
       for _61 in range(0,_7[_58]):
        _56[((_55 + _21[(_12[_58] + _61)]) + 1)] += 1
     else:
      for _62 in range(0,_7[_58]):
       _50[((_42 + _62) + 1)] += (_20[((_10[_58] + _62) + 1)] - _20[(_10[_58] + _62)])
      if (_9[_58] > 0):
       for _63 in range(0,_7[_58]):
        _56[((_55 + _63) + 1)] += ((_20[(_16[_58] + _20[((_10[_58] + _63) + 1)])] - _20[(_16[_58] + _20[(_10[_58] + _63)])]) + (2 * (_20[((_10[_58] + _63) + 1)] - _20[(_10[_58] + _63)])))
      elif _30: # bld/grindsted/final/default/src/fusion/ExprAdd.monty:554:22-33
       for _64 in range(0,_7[_58]):
        _56[((_55 + _64) + 1)] += (_20[((_10[_58] + _64) + 1)] - _20[(_10[_58] + _64)])
    for _65 in range(0,_33):
     _50[((_42 + _65) + 1)] += _50[(_42 + _65)]
    if (_32 > 0):
     for _66 in range(0,_33):
      _56[((_55 + _66) + 1)] += _56[(_55 + _66)]
    for _67 in range(0,_4):
     if _18[_67]:
      for _68 in range(0,_7[_67]):
       _69=_20[(_10[_67] + _68)]
       _70=_20[((_10[_67] + _68) + 1)]
       _71=_21[(_12[_67] + _68)]
       _72=_50[(_42 + _71)]
       _73=(_56[(_55 + _71)] if (_30 ) else (- 10000))
       for _74 in range(_69,_70):
        _51[(_43 + _72)] = _21[(_11[_67] + _74)]
        _52[(_46 + _72)] = (self.__w[_67] * _22[(_13[_67] + _74)])
        if _30:
         if (_9[_67] > 0):
          for _75 in range(_20[(_16[_67] + _74)],_20[((_16[_67] + _74) + 1)]):
           _50[(_47 + _73)] = _20[(_15[_67] + _75)]
           _52[(_49 + _73)] = _22[(_17[_67] + _75)]
           _73 += 1
          _50[(_47 + _73)] = 2
          _52[(_49 + _73)] = self.__w[_67]
          _73 += 1
          _50[(_47 + _73)] = 5
          _73 += 1
         else:
          _50[(_47 + _73)] = 2
          _52[(_49 + _73)] = 0.0
          _73 += 1
         _50[((_48 + _72) + 1)] = _73
        _72 += 1
       if _30:
        _56[(_55 + _71)] = _73
       _50[(_42 + _71)] += (_70 - _69)
     else:
      for _76 in range(0,_7[_67]):
       _77=_20[(_10[_67] + _76)]
       _78=_20[((_10[_67] + _76) + 1)]
       _79=_76
       _80=_50[(_42 + _79)]
       _81=(_56[(_55 + _79)] if (_30 ) else (- 10000))
       for _82 in range(_77,_78):
        _51[(_43 + _80)] = _21[(_11[_67] + _82)]
        _52[(_46 + _80)] = (self.__w[_67] * _22[(_13[_67] + _82)])
        if _30:
         if (_9[_67] > 0):
          for _83 in range(_20[(_16[_67] + _82)],_20[((_16[_67] + _82) + 1)]):
           _50[(_47 + _81)] = _20[(_15[_67] + _83)]
           _52[(_49 + _81)] = _22[(_17[_67] + _83)]
           _81 += 1
          _50[(_47 + _81)] = 2
          _52[(_49 + _81)] = self.__w[_67]
          _81 += 1
          _50[(_47 + _81)] = 5
          _81 += 1
         else:
          _50[(_47 + _81)] = 2
          _52[(_49 + _81)] = 0.0
          _81 += 1
         _50[((_48 + _80) + 1)] = _81
        _80 += 1
       if _30:
        _56[(_55 + _79)] = _81
       _50[(_42 + _79)] += (_78 - _77)
    for _84 in range(0,_33):
     _50[((_42 + _33) - _84)] = _50[(((_42 + _33) - _84) - 1)]
    _50[_42] = 0
   else:
    _85=False
    _86=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
    _87=0
    _88=0
    _89=0
    while (not _85):
     _90=(- 1)
     for _91 in range(0,_4):
      if ((_86[_91] < _7[_91]) and ((_90 < 0) or (_21[(_12[_91] + _86[_91])] < _90))):
       _90 = _21[(_12[_91] + _86[_91])]
     if (_90 < 0):
      _85 = True
     else:
      for _92 in range(0,_4):
       if ((_86[_92] < _7[_92]) and (_90==_21[(_12[_92] + _86[_92])])):
        for _93 in range(_20[(_10[_92] + _86[_92])],_20[((_10[_92] + _86[_92]) + 1)]):
         _51[(_43 + _89)] = _21[(_11[_92] + _93)]
         _52[(_46 + _89)] = (self.__w[_92] * _22[(_13[_92] + _93)])
         if _30:
          if (_9[_92] > 0):
           for _94 in range(_20[(_16[_92] + _93)],_20[((_16[_92] + _93) + 1)]):
            _50[(_47 + _87)] = _20[(_15[_92] + _94)]
            _52[(_49 + _87)] = _22[(_17[_92] + _94)]
            _87 += 1
           _50[(_47 + _87)] = 2
           _52[(_49 + _87)] = self.__w[_92]
           _87 += 1
           _50[(_47 + _87)] = 5
           _87 += 1
          else:
           _50[(_47 + _87)] = 2
           _52[(_49 + _87)] = 0.0
           _87 += 1
          _50[((_48 + _89) + 1)] = _87
         _89 += 1
        _86[_92] += 1
      _50[((_42 + _88) + 1)] = _89
      _51[(_44 + _88)] = _90
     _88 += 1
   _2.clear()
  @staticmethod
  def _match_compress_1when_1caching_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_compress_1when_1caching_(*args):
    if len(args) != 0: return False
    return True
  def _compress_1when_1caching_alt_(self,):
    return self._compress_1when_1caching_()
  def _compress_1when_1caching_(self,):
   return (True)
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   _0=mosek.fusion.Utils.StringBuffer()._a_S("ExprWSum([")
   _0._a_S(self.__es[0].toString())
   for _1 in range(1,int((self.__es).shape[0])):
    _0._a_S(",")._a_S(self.__es[_1].toString())
   _0._a_S("])")
   return (_0._toString_())
 return ExprWSum
mosek_fusion_ExprWSum=__mk_mosek_fusion_ExprWSum()
del __mk_mosek_fusion_ExprWSum
def __mk_mosek_fusion_ExprSumReduce():
 class ExprSumReduce(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprSumReduce__dim','_ExprSumReduce__expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_ILmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_ILmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_ILmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_ILmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprSumReduce.ctor(int32,mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprSumReduce._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprSumReduce._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprSumReduce._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprSumReduce._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprSumReduce.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprSumReduce.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def compress_when_caching(self,*args):
    if False: pass
    elif mosek_fusion_ExprSumReduce._match_compress_1when_1caching_(*args): 
      return self._compress_1when_1caching_(*args)
    elif mosek_fusion_ExprSumReduce._match_alt_compress_1when_1caching_(*args): 
      return self._compress_1when_1caching_alt_(*args)
    else:
      raise ValueError('Invalid argument list compress_when_caching('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprSumReduce.compress_when_caching()')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprSumReduce._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprSumReduce._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprSumReduce.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprSumReduce: '+self._toString_()
  @staticmethod
  def _ctor_ILmosek_4fusion_4Expression_2(dim,expr):
    o = ExprSumReduce.__new__(ExprSumReduce)
    o._ctor_init_ILmosek_4fusion_4Expression_2(dim,expr)
    return o
  @staticmethod
  def __match_ctor_ILmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    dim,expr, = args
    return (__arg_match_I__(dim) and __arg_match_Lmosek_4fusion_4Expression_2__(expr))
  @staticmethod
  def __match_alt_ctor_ILmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    dim,expr, = args
    return (__arg_alt_match_I__(dim) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr))
  def _ctor_alt_init_ILmosek_4fusion_4Expression_2(self,dim,expr):
    self._ctor_init_ILmosek_4fusion_4Expression_2(numpy.int32(dim),expr)
  def _ctor_init_ILmosek_4fusion_4Expression_2(self,dim,expr):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),mosek.fusion.ExprSumReduce.__computeShape_I_3I(dim,expr.getShape()))
   (self.__expr) = expr
   (self.__dim) = dim
   _0=expr.getShape()
   if (int((_0).shape[0]) <= dim):
    raise mosek_fusion_DimensionError._ctor_S("Invalid summing dimension")
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__expr.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.nd)
   _5=(_1.shape_base)
   _6=(_1.nelem)
   _7=(_1.nnz)
   _8=(_1.ncodeatom)
   _9=(_1.hassp)
   _10=(_1.ptr_base)
   _11=(_1.sp_base)
   _12=(_1.nidxs_base)
   _13=(_1.cof_base)
   _14=(_1.code_base)
   _15=(_1.codeptr_base)
   _16=(_1.cconst_base)
   _17=(_1.i32)
   _18=(_1.i64)
   _19=(_1.f64)
   _20=99999
   _21=99999
   _22=99999
   if _9:
    _23=0
    for _24 in range(0,_4):
     if (_23 < _17[(_5 + _24)]):
      _23 = _17[(_5 + _24)]
    _20 = _2.alloci32((_23 + 1))
    _21 = _2.alloci32(_6)
    _22 = _2.alloci32(_6)
   _25=(_2.i32)
   if _9:
    _26=_21
    _27=_22
    for _28 in range(0,_6):
     _25[(_26 + _28)] = _28
    if (self.__dim < (_4 - 1)):
     _29=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int64))
     _29[(_4 - 1)] = 1
     for _30 in range(1,_4):
      _29[((_4 - _30) - 1)] = (_29[(_4 - _30)] * _17[((_5 + _4) - _30)])
     _31=numpy.zeros(((_4 - 1),), dtype=numpy.dtype(numpy.int32))
     for _32 in range(0,self.__dim):
      _31[((_4 - _32) - 2)] = _32
     for _33 in range((self.__dim + 1),_4):
      _31[((_4 - _33) - 1)] = _33
     for _34 in range(0,(_4 - 1)):
      _35=_31[_34]
      _36=_17[(_5 + _35)]
      for _37 in range(0,(_36 + 1)):
       _25[(_20 + _37)] = 0
      for _38 in range(0,_6):
       _25[((_20 + 1) + ((_18[(_11 + _38)] // _29[_35]) % _36))] += 1
      for _39 in range(0,_36):
       _25[((_20 + _39) + 1)] += _25[(_20 + _39)]
      for _40 in range(0,_6):
       _41=_25[(_26 + _40)]
       _42=((_18[(_11 + _41)] // _29[_35]) % _36)
       _25[(_27 + _25[(_20 + _42)])] = _41
       _25[(_20 + _42)] += 1
      _43=_27
      _27 = _26
      _26 = _43
    _44=1
    for _45 in range(0,self.__dim):
     _44 *= _17[(_5 + _45)]
    _46=_17[(_5 + self.__dim)]
    _47=1
    for _48 in range((self.__dim + 1),_4):
     _47 *= _17[(_5 + _48)]
    _49=(_47 * _46)
    _50=_47
    _51=1
    _52=0
    _53=(- 1)
    _54=(- 1)
    for _55 in range(0,_6):
     _56=_25[(_26 + _55)]
     _57=((_18[(_11 + _56)] // _49) % _44)
     _58=(_18[(_11 + _56)] % _47)
     if ((_54!=_57) or (_53!=_58)):
      _54 = _57
      _53 = _58
      _52 += 1
    _59=(_4 - 1)
    _60=(_52 < (_44 * _47))
    _61=_7
    _62=_8
    _0.alloc_expr(_59,_52,_61,_60,_62)
    _63=(_0.ptr_base)
    _64=(_0.nidxs_base)
    _65=((_0.sp_base) if (_60 ) else _0.alloci64(_52))
    _66=(_0.cof_base)
    _67=(_0.shape_base)
    _68=(_0.code_base)
    _69=(_0.codeptr_base)
    _70=(_0.cconst_base)
    _71=(_0.i32)
    _72=(_0.i64)
    _73=(_0.f64)
    for _74 in range(0,self.__dim):
     _71[(_67 + _74)] = _17[(_5 + _74)]
    for _75 in range((self.__dim + 1),_4):
     _71[((_67 + _75) - 1)] = _17[(_5 + _75)]
    _71[_63] = 0
    if (_62 > 0):
     _71[_69] = 0
    _76=0
    _77=0
    _78=0
    _79=0
    while (_79 < _6):
     _80=_79
     _81=((_18[(_11 + _25[(_26 + _80)])] // _49) % _44)
     _82=(_18[(_11 + _25[(_26 + _80)])] % _47)
     _79 += 1
     while ((_79 < _6) and ((_81==((_18[(_11 + _25[(_26 + _79)])] // _49) % _44)) and (_82==(_18[(_11 + _25[(_26 + _79)])] % _47)))):
      _79 += 1
     for _83 in range(_80,_79):
      _84=_25[(_26 + _83)]
      for _85 in range(_17[(_10 + _84)],_17[((_10 + _84) + 1)]):
       _72[(_64 + _78)] = _18[(_12 + _85)]
       _73[(_66 + _78)] = _19[(_13 + _85)]
       if (_62 > 0):
        for _86 in range(_17[(_15 + _85)],_17[((_15 + _85) + 1)]):
         _71[(_68 + _76)] = _17[(_14 + _86)]
         _73[(_70 + _76)] = _19[(_16 + _86)]
         _76 += 1
        _71[((_69 + _78) + 1)] = _76
       _78 += 1
     _72[(_65 + _77)] = ((_81 * _47) + _82)
     _71[((_63 + _77) + 1)] = _78
     _77 += 1
    if (not _60):
     _0.popi64(_52)
   else:
    _87=1
    for _88 in range(0,self.__dim):
     _87 *= _17[(_5 + _88)]
    _89=_17[(_5 + self.__dim)]
    _90=1
    for _91 in range((self.__dim + 1),_4):
     _90 *= _17[(_5 + _91)]
    _92=(_90 * _89)
    _93=_90
    _94=1
    _95=(_87 * _90)
    _96=_7
    _97=_8
    _0.alloc_expr((_4 - 1),_95,_96,False,_97)
    _98=(_0.ptr_base)
    _99=(_0.nidxs_base)
    _100=(_0.cof_base)
    _101=(_0.shape_base)
    _102=(_0.code_base)
    _103=(_0.codeptr_base)
    _104=(_0.cconst_base)
    _105=(_0.i32)
    _106=(_0.i64)
    _107=(_0.f64)
    for _108 in range(0,self.__dim):
     _105[(_101 + _108)] = _17[(_5 + _108)]
    for _109 in range((self.__dim + 1),_4):
     _105[((_101 + _109) - 1)] = _17[(_5 + _109)]
    _110=0
    _111=0
    _105[_98] = 0
    if (_97 > 0):
     _105[_103] = 0
    _112=0
    for _113 in range(0,_87):
     for _114 in range(0,_90):
      for _115 in range(0,_89):
       _116=(((_113 * _92) + (_115 * _93)) + _114)
       for _117 in range(_17[(_10 + _116)],_17[((_10 + _116) + 1)]):
        _106[(_99 + _111)] = _18[(_12 + _117)]
        _107[(_100 + _111)] = _19[(_13 + _117)]
        if (_97 > 0):
         for _118 in range(_17[(_15 + _117)],_17[((_15 + _117) + 1)]):
          _105[(_102 + _112)] = _17[(_14 + _118)]
          _107[(_104 + _112)] = _19[(_16 + _118)]
          _112 += 1
         _105[((_103 + _111) + 1)] = _112
        _111 += 1
      _105[((_98 + _110) + 1)] = _111
      _110 += 1
   _2.clear()
  @staticmethod
  def __computeShape_alt_I_3I(_t__0,_t__1):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_ExprSumReduce.__computeShape_I_3I(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __computeShape_I_3I(_0,_1):
   _2=numpy.zeros(((int((_1).shape[0]) - 1),), dtype=numpy.dtype(numpy.int32))
   for _3 in range(0,_0):
    _2[_3] = _1[_3]
   for _4 in range((_0 + 1),int((_1).shape[0])):
    _2[(_4 - 1)] = _1[_4]
   return (_2)
  @staticmethod
  def _match_compress_1when_1caching_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_compress_1when_1caching_(*args):
    if len(args) != 0: return False
    return True
  def _compress_1when_1caching_alt_(self,):
    return self._compress_1when_1caching_()
  def _compress_1when_1caching_(self,):
   return (True)
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprSumReduce(")._a_I(self.__dim)._a_S(",")._a_S(self.__expr.toString())._a_S(")")._toString_())
 return ExprSumReduce
mosek_fusion_ExprSumReduce=__mk_mosek_fusion_ExprSumReduce()
del __mk_mosek_fusion_ExprSumReduce
def __mk_mosek_fusion_ExprScaleVecPSD():
 class ExprScaleVecPSD(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprScaleVecPSD__dim1','_ExprScaleVecPSD__dim0','_ExprScaleVecPSD__expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_IILmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_IILmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_IILmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_IILmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprScaleVecPSD.ctor(int32,int32,mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprScaleVecPSD._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprScaleVecPSD._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprScaleVecPSD._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprScaleVecPSD._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprScaleVecPSD.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprScaleVecPSD.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def __repr__(self): return 'mosek.fusion.ExprScaleVecPSD'
  @staticmethod
  def _ctor_IILmosek_4fusion_4Expression_2(dim0,dim1,expr):
    o = ExprScaleVecPSD.__new__(ExprScaleVecPSD)
    o._ctor_init_IILmosek_4fusion_4Expression_2(dim0,dim1,expr)
    return o
  @staticmethod
  def __match_ctor_IILmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    dim0,dim1,expr, = args
    return (__arg_match_I__(dim0) and __arg_match_I__(dim1) and __arg_match_Lmosek_4fusion_4Expression_2__(expr))
  @staticmethod
  def __match_alt_ctor_IILmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    dim0,dim1,expr, = args
    return (__arg_alt_match_I__(dim0) and __arg_alt_match_I__(dim1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr))
  def _ctor_alt_init_IILmosek_4fusion_4Expression_2(self,dim0,dim1,expr):
    self._ctor_init_IILmosek_4fusion_4Expression_2(numpy.int32(dim0),numpy.int32(dim1),expr)
  def _ctor_init_IILmosek_4fusion_4Expression_2(self,dim0,dim1,expr):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),expr.getShape())
   (self.__expr) = expr
   (self.__dim0) = dim0
   (self.__dim1) = dim1
   if ((dim0 < 0) or ((dim1 < 0) or (dim0==dim1))):
    raise mosek_fusion_DimensionError._ctor_S("Invalid symmetry dimensions")
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__expr.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.nd)
   _5=(_1.nnz)
   _6=(_1.nelem)
   _7=(_1.ncodeatom)
   _8=(_1.hassp)
   _9=(_1.shape_base)
   _10=(_1.ptr_base)
   _11=(_1.code_base)
   _12=(_1.codeptr_base)
   _13=(_1.cconst_base)
   _14=(_1.nidxs_base)
   _15=(_1.sp_base)
   _16=(_1.cof_base)
   _17=(_1.i32)
   _18=(_1.i64)
   _19=(_1.f64)
   if ((self.__dim0 >= _4) or (self.__dim1 >= _4)):
    raise mosek_fusion_DimensionError._ctor_S("Invalid symmetry dimensions")
   elif (_17[(_9 + self.__dim0)]!=_17[(_9 + self.__dim1)]): # bld/grindsted/final/default/src/fusion/ExprShape.monty:1603:16-52
    raise mosek_fusion_DimensionError._ctor_S("Not symmetric in given dimensions")
   _20=1
   _21=1
   _22=1
   _23=1
   _24=1
   _25=(self.__dim0 if ((self.__dim0 < self.__dim1) ) else self.__dim1)
   _26=(self.__dim1 if ((self.__dim0 < self.__dim1) ) else self.__dim0)
   for _27 in range(0,_25):
    _24 *= _17[(_9 + _27)]
   for _28 in range((_25 + 1),_26):
    _22 *= _17[(_9 + _28)]
   for _29 in range((_26 + 1),_4):
    _20 *= _17[(_9 + _29)]
   _23 = _17[(_9 + self.__dim0)]
   _21 = _23
   _30=(0 if ((_7==0) ) else (_7 + (_5 * 2)))
   _0.alloc_expr(_4,_6,_5,_8,_30)
   _31=(_0.ptr_base)
   _32=(_0.shape_base)
   _33=(_0.nidxs_base)
   _34=(_0.sp_base)
   _35=(_0.cof_base)
   _36=(_0.code_base)
   _37=(_0.codeptr_base)
   _38=(_0.cconst_base)
   _39=(_0.i32)
   _40=(_0.i64)
   _41=(_0.f64)
   mosek.fusion.Utils.Tools._arraycopy__3II_3III(_17,_10,_39,_31,(_6 + 1))
   mosek.fusion.Utils.Tools._arraycopy__3II_3III(_17,_9,_39,_32,_4)
   mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(_18,_14,_40,_33,_5)
   mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(_19,_16,_41,_35,_5)
   if _8:
    mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(_18,_15,_40,_34,_6)
   _42=mosek.fusion.Utils.Tools._sqrt_D(2)
   if (not _8):
    _43=0
    for _44 in range(0,_24):
     for _45 in range(0,_23):
      for _46 in range(0,_22):
       for _47 in range(0,_21):
        for _48 in range(0,_20):
         if (_45!=_47):
          for _49 in range(_39[(_31 + _43)],_39[((_31 + _43) + 1)]):
           _41[(_35 + _49)] *= _42
         _43 += 1
   else:
    _50=0
    _51=numpy.zeros((5,), dtype=numpy.dtype(numpy.int64))
    _51[4] = 1
    _51[3] = (_51[4] * _20)
    _51[2] = (_51[3] * _21)
    _51[1] = (_51[2] * _22)
    _51[0] = (_51[1] * _23)
    for _52 in range(0,_6):
     _53=_18[(_15 + _52)]
     _54=((_53 // _51[3]) % _21)
     _55=((_53 // _51[1]) % _23)
     if (_55!=_54):
      for _56 in range(_39[(_31 + _52)],_39[((_31 + _52) + 1)]):
       _41[(_35 + _56)] *= _42
   if (_7!=0):
    _57=0
    _58=0
    _39[_37] = 0
    if (not _8):
     _59=0
     for _60 in range(0,_24):
      for _61 in range(0,_23):
       for _62 in range(0,_22):
        for _63 in range(0,_21):
         for _64 in range(0,_20):
          _65=(_42 if ((_61!=_63) ) else 1.0)
          for _66 in range(_17[(_10 + _59)],_17[((_10 + _59) + 1)]):
           for _67 in range(_17[(_12 + _66)],_17[((_12 + _66) + 1)]):
            _39[(_36 + _58)] = _17[(_11 + _67)]
            _41[(_38 + _58)] = _19[(_13 + _67)]
            _58 += 1
           _39[(_36 + _58)] = 2
           _41[(_38 + _58)] = _65
           _58 += 1
           _39[(_36 + _58)] = 5
           _58 += 1
           _39[((_37 + _57) + 1)] = _58
           _57 += 1
          _59 += 1
    else:
     _68=0
     _69=numpy.zeros((5,), dtype=numpy.dtype(numpy.int64))
     _69[4] = 1
     _69[3] = (_69[4] * _20)
     _69[2] = (_69[3] * _21)
     _69[1] = (_69[2] * _22)
     _69[0] = (_69[1] * _23)
     for _70 in range(0,_6):
      _71=_18[(_15 + _70)]
      _72=((_71 // _69[3]) % _21)
      _73=((_71 // _69[1]) % _23)
      _74=(_42 if ((_73!=_72) ) else 1.0)
      for _75 in range(_17[(_10 + _70)],_17[((_10 + _70) + 1)]):
       for _76 in range(_17[(_12 + _75)],_17[((_12 + _75) + 1)]):
        _39[(_36 + _58)] = _17[(_11 + _76)]
        _41[(_38 + _58)] = _19[(_13 + _76)]
        _58 += 1
       _39[(_36 + _58)] = 2
       _41[(_38 + _58)] = _74
       _58 += 1
       _39[(_36 + _58)] = 5
       _58 += 1
       _39[((_37 + _57) + 1)] = _58
       _57 += 1
 return ExprScaleVecPSD
mosek_fusion_ExprScaleVecPSD=__mk_mosek_fusion_ExprScaleVecPSD()
del __mk_mosek_fusion_ExprScaleVecPSD
def __mk_mosek_fusion_ExprDenseTril():
 class ExprDenseTril(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprDenseTril__dim1','_ExprDenseTril__dim0','_ExprDenseTril__expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_IILmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_IILmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_IILmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_IILmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprDenseTril.ctor(int32,int32,mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprDenseTril._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprDenseTril._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprDenseTril._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprDenseTril._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprDenseTril.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprDenseTril.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprDenseTril._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprDenseTril._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprDenseTril.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprDenseTril: '+self._toString_()
  @staticmethod
  def _ctor_IILmosek_4fusion_4Expression_2I(dim0,dim1,expr,unchecked_):
    o = ExprDenseTril.__new__(ExprDenseTril)
    o._ctor_init_IILmosek_4fusion_4Expression_2I(dim0,dim1,expr,unchecked_)
    return o
  @staticmethod
  def __match_ctor_IILmosek_4fusion_4Expression_2I(*args):
    if len(args) != 4: return False
    dim0,dim1,expr,unchecked_, = args
    return (__arg_match_I__(dim0) and __arg_match_I__(dim1) and __arg_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_match_I__(unchecked_))
  @staticmethod
  def __match_alt_ctor_IILmosek_4fusion_4Expression_2I(*args):
    if len(args) != 4: return False
    dim0,dim1,expr,unchecked_, = args
    return (__arg_alt_match_I__(dim0) and __arg_alt_match_I__(dim1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_alt_match_I__(unchecked_))
  def _ctor_alt_init_IILmosek_4fusion_4Expression_2I(self,dim0,dim1,expr,unchecked_):
    self._ctor_init_IILmosek_4fusion_4Expression_2I(numpy.int32(dim0),numpy.int32(dim1),expr,numpy.int32(unchecked_))
  def _ctor_init_IILmosek_4fusion_4Expression_2I(self,dim0,dim1,expr,unchecked_):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),expr.getShape())
   (self.__expr) = expr
   (self.__dim0) = dim0
   (self.__dim1) = dim1
  @staticmethod
  def _ctor_IILmosek_4fusion_4Expression_2(dim0_,dim1_,expr):
    o = ExprDenseTril.__new__(ExprDenseTril)
    o._ctor_init_IILmosek_4fusion_4Expression_2(dim0_,dim1_,expr)
    return o
  @staticmethod
  def __match_ctor_IILmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    dim0_,dim1_,expr, = args
    return (__arg_match_I__(dim0_) and __arg_match_I__(dim1_) and __arg_match_Lmosek_4fusion_4Expression_2__(expr))
  @staticmethod
  def __match_alt_ctor_IILmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    dim0_,dim1_,expr, = args
    return (__arg_alt_match_I__(dim0_) and __arg_alt_match_I__(dim1_) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr))
  def _ctor_alt_init_IILmosek_4fusion_4Expression_2(self,dim0_,dim1_,expr):
    self._ctor_init_IILmosek_4fusion_4Expression_2(numpy.int32(dim0_),numpy.int32(dim1_),expr)
  def _ctor_init_IILmosek_4fusion_4Expression_2(self,dim0_,dim1_,expr):
   mosek_fusion_ExprDenseTril._ctor_init_IILmosek_4fusion_4Expression_2I(self,dim0_,dim1_,expr,1)
   _0=expr.getShape()
   if ((self.__dim0==self.__dim1) or ((self.__dim0 < 0) or ((self.__dim0 >= int((_0).shape[0])) or ((self.__dim1 < 0) or ((self.__dim1 >= int((_0).shape[0])) or (_0[self.__dim0]!=_0[self.__dim1])))))):
    raise mosek_fusion_DimensionError._ctor_S("Invalid dimension definitions")
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__expr.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.nd)
   _5=(_1.nnz)
   _6=(_1.nelem)
   _7=(_1.ncodeatom)
   _8=(_1.hassp)
   _9=(_1.shape_base)
   _10=(_1.ptr_base)
   _11=(_1.code_base)
   _12=(_1.codeptr_base)
   _13=(_1.cconst_base)
   _14=(_1.nidxs_base)
   _15=(_1.sp_base)
   _16=(_1.cof_base)
   _17=(_1.i32)
   _18=(_1.i64)
   _19=(_1.f64)
   _20=(self.__dim0 if ((self.__dim0 < self.__dim1) ) else self.__dim1)
   _21=(self.__dim0 if ((self.__dim0 > self.__dim1) ) else self.__dim1)
   _22=(self.__dim0 < self.__dim1)
   if ((self.__dim0==self.__dim1) or ((self.__dim0 < 0) or ((self.__dim0 >= _4) or ((self.__dim1 < 0) or (self.__dim1 >= _4))))):
    raise mosek_fusion_DimensionError._ctor_S("Invalid symmetry dimensions")
   elif (_17[(_9 + self.__dim0)]!=_17[(_9 + self.__dim1)]): # bld/grindsted/final/default/src/fusion/ExprShape.monty:1106:16-52
    raise mosek_fusion_DimensionError._ctor_S("Not symmetric in given dimensions")
   _23=numpy.array([1 for _24 in range(0,5)], dtype=numpy.dtype(numpy.int32))
   for _25 in range(0,_20):
    _23[0] *= _17[(_9 + _25)]
   _23[1] = _17[(_9 + self.__dim0)]
   for _26 in range((_20 + 1),_21):
    _23[2] *= _17[(_9 + _26)]
   _23[3] = _17[(_9 + self.__dim1)]
   for _27 in range((_21 + 1),_4):
    _23[4] *= _17[(_9 + _27)]
   _28=numpy.zeros((5,), dtype=numpy.dtype(numpy.int32))
   _28[4] = 1
   for _29 in range(1,5):
    _28[((5 - _29) - 1)] = (_28[(5 - _29)] * _23[(5 - _29)])
   _30=0
   _31=(((_23[0] * _23[2]) * _23[4]) * ((_23[1] * (_23[1] + 1)) // 2))
   _32=0
   if _8:
    _33=_23[1]
    if _22:
     for _34 in range(0,_6):
      _35=((_18[(_15 + _34)] // _28[1]) % _33)
      _36=((_18[(_15 + _34)] // _28[3]) % _33)
      if (_35 >= _36):
       _30 += (_17[((_10 + _34) + 1)] - _17[(_10 + _34)])
       if (_7 > 0):
        _32 += (_17[(_12 + _17[((_10 + _34) + 1)])] - _17[(_12 + _17[(_10 + _34)])])
    else:
     for _37 in range(0,_6):
      _38=((_18[(_15 + _37)] // _28[1]) % _23[1])
      _39=((_18[(_15 + _37)] // _28[3]) % _23[3])
      if (_38 <= _39):
       _30 += (_17[((_10 + _37) + 1)] - _17[(_10 + _37)])
       if (_7 > 0):
        _32 += (_17[(_12 + _17[((_10 + _37) + 1)])] - _17[(_12 + _17[(_10 + _37)])])
   else:
    if _22:
     for _40 in range(0,_23[0]):
      for _41 in range(0,_23[1]):
       for _42 in range(0,_23[2]):
        for _43 in range(0,(_41 + 1)):
         for _44 in range(0,_23[4]):
          _45=(((((_40 * _28[0]) + (_41 * _28[1])) + (_42 * _28[2])) + (_43 * _28[3])) + (_44 * _28[4]))
          _30 += (_17[((_10 + _45) + 1)] - _17[(_10 + _45)])
          if (_7 > 0):
           _32 += (_17[(_12 + _17[((_10 + _45) + 1)])] - _17[(_12 + _17[(_10 + _45)])])
    else:
     for _46 in range(0,_23[0]):
      for _47 in range(0,_23[1]):
       for _48 in range(0,_23[2]):
        for _49 in range(_47,_23[3]):
         for _50 in range(0,_23[4]):
          _51=(((((_46 * _28[0]) + (_47 * _28[1])) + (_48 * _28[2])) + (_49 * _28[3])) + (_50 * _28[4]))
          _30 += (_17[((_10 + _51) + 1)] - _17[(_10 + _51)])
          if (_7 > 0):
           _32 += (_17[(_12 + _17[((_10 + _51) + 1)])] - _17[(_12 + _17[(_10 + _51)])])
   _52=(((((_23[0] * _23[2]) * _23[4]) * _23[1]) * (_23[1] + 1)) // 2)
   _0.alloc_expr(_4,_31,_30,True,_32)
   _53=(_0.ptr_base)
   _54=(_0.shape_base)
   _55=(_0.nidxs_base)
   _56=(_0.sp_base)
   _57=(_0.cof_base)
   _58=(_0.code_base)
   _59=(_0.codeptr_base)
   _60=(_0.cconst_base)
   _61=(_0.i32)
   _62=(_0.i64)
   _63=(_0.f64)
   _61[_53] = 0
   if (_32 > 0):
    _61[_59] = 0
   for _64 in range(0,_4):
    _61[(_54 + _64)] = _17[(_9 + _64)]
   if _22:
    _65=0
    for _66 in range(0,_23[0]):
     for _67 in range(0,_23[1]):
      for _68 in range(0,_23[2]):
       for _69 in range(0,(_67 + 1)):
        for _70 in range(0,_23[4]):
         _62[(_56 + _65)] = (((((_66 * _28[0]) + (_67 * _28[1])) + (_68 * _28[2])) + (_69 * _28[3])) + (_70 * _28[4]))
         _65 += 1
    if (_65!=_31):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: Invalid nelem")
   else:
    _71=0
    for _72 in range(0,_23[0]):
     for _73 in range(0,_23[1]):
      for _74 in range(0,_23[2]):
       for _75 in range(_73,_23[3]):
        for _76 in range(0,_23[4]):
         _62[(_56 + _71)] = (((((_72 * _28[0]) + (_73 * _28[1])) + (_74 * _28[2])) + (_75 * _28[3])) + (_76 * _28[4]))
         _71 += 1
    if (_71!=_31):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: Invalid nelem")
   _77=0
   _78=0
   if _8:
    _79=0
    _80=0
    while ((_80 < _6) and (_79 < _52)):
     if (_18[(_15 + _80)] < _62[(_56 + _79)]):
      _80 += 1
     elif (_18[(_15 + _80)] > _62[(_56 + _79)]): # bld/grindsted/final/default/src/fusion/ExprShape.monty:1249:22-48
      _61[((_53 + _79) + 1)] = _77
      _79 += 1
     else:
      for _81 in range(_17[(_10 + _80)],_17[((_10 + _80) + 1)]):
       _62[(_55 + _77)] = _18[(_14 + _81)]
       _63[(_57 + _77)] = _19[(_16 + _81)]
       if (_32 > 0):
        for _82 in range(_17[(_12 + _81)],_17[((_12 + _81) + 1)]):
         _61[(_58 + _78)] = _17[(_11 + _82)]
         _63[(_60 + _78)] = _19[(_13 + _82)]
         _78 += 1
        _61[((_59 + _77) + 1)] = _78
       _77 += 1
      _61[((_53 + _79) + 1)] = _77
      _80 += 1
      _79 += 1
    while (_79 < _52):
     _61[((_53 + _79) + 1)] = _77
     _79 += 1
   else:
    for _83 in range(0,_52):
     _84=_62[(_56 + _83)]
     for _85 in range(_17[(_10 + _84)],_17[((_10 + _84) + 1)]):
      _62[(_55 + _77)] = _18[(_14 + _85)]
      _63[(_57 + _77)] = _19[(_16 + _85)]
      if (_32 > 0):
       for _86 in range(_17[(_12 + _85)],_17[((_12 + _85) + 1)]):
        _61[(_58 + _78)] = _17[(_11 + _86)]
        _63[(_60 + _78)] = _19[(_13 + _86)]
        _78 += 1
       _61[((_59 + _77) + 1)] = _78
      _77 += 1
     _61[((_53 + _83) + 1)] = _77
   if (_77!=_30):
    raise mosek_fusion_UnexpectedError._ctor_S("Internal: Invalid nnz")
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprDenseTril(symdim=(")._a_I(self.__dim0)._a_S(",")._a_I(self.__dim1)._a_S("),")._a_S(self.__expr.toString())._a_S(")")._toString_())
 return ExprDenseTril
mosek_fusion_ExprDenseTril=__mk_mosek_fusion_ExprDenseTril()
del __mk_mosek_fusion_ExprDenseTril
def __mk_mosek_fusion_ExprDense():
 class ExprDense(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprDense__expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprDense.ctor(mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprDense._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprDense._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprDense._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprDense._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprDense.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprDense.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprDense._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprDense._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprDense.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprDense: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2(expr):
    o = ExprDense.__new__(ExprDense)
    o._ctor_init_Lmosek_4fusion_4Expression_2(expr)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    expr, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(expr))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    expr, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(expr))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2(self,expr):
    self._ctor_init_Lmosek_4fusion_4Expression_2(expr)
  def _ctor_init_Lmosek_4fusion_4Expression_2(self,expr):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),expr.getShape())
   (self.__expr) = expr
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__expr.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=(_1.nd)
   _5=(_1.nnz)
   _6=(_1.nelem)
   _7=(_1.ncodeatom)
   _8=(_1.hassp)
   _9=(_1.shape_base)
   _10=(_1.ptr_base)
   _11=(_1.nidxs_base)
   _12=(_1.cof_base)
   _13=(_1.sp_base)
   _14=(_1.codeptr_base)
   _15=(_1.code_base)
   _16=(_1.cconst_base)
   _17=(_1.i32)
   _18=(_1.i64)
   _19=(_1.f64)
   _20=1
   if _8:
    _21=True
    for _22 in range(0,_4):
     _23=(_20 * _17[(_9 + _22)])
     _21 = (_21 and ((_17[(_9 + _22)]==0) or ((_23 // _17[(_9 + _22)])==_20)))
     _20 = _23
    if (not _21):
     raise mosek_fusion_LengthError._ctor_S("The domain is too large")
   else:
    _20 = _6
   _0.alloc_expr(_4,_20,_5,False,_7)
   _24=(_0.shape_base)
   _25=(_0.ptr_base)
   _26=(_0.nidxs_base)
   _27=(_0.cof_base)
   _28=(_0.codeptr_base)
   _29=(_0.code_base)
   _30=(_0.cconst_base)
   _31=(_0.i32)
   _32=(_0.i64)
   _33=(_0.f64)
   for _34 in range(0,_4):
    _31[(_24 + _34)] = _17[(_9 + _34)]
   for _35 in range(0,_5):
    _32[(_26 + _35)] = _18[(_11 + _35)]
   for _36 in range(0,_5):
    _33[(_27 + _36)] = _19[(_12 + _36)]
   if (_7 > 0):
    for _37 in range(0,(_5 + 1)):
     _31[(_28 + _37)] = _17[(_14 + _37)]
    for _38 in range(0,_7):
     _31[(_29 + _38)] = _17[(_15 + _38)]
    for _39 in range(0,_7):
     _33[(_30 + _39)] = _19[(_16 + _39)]
   if (not _8):
    for _40 in range(0,(_20 + 1)):
     _31[(_25 + _40)] = _17[(_10 + _40)]
   else:
    for _41 in range(0,(_20 + 1)):
     _31[(_25 + _41)] = 0
    for _42 in range(0,_6):
     _31[((_25 + _18[(_13 + _42)]) + 1)] = (_17[((_10 + _42) + 1)] - _17[(_10 + _42)])
    for _43 in range(0,_20):
     _31[((_25 + _43) + 1)] += _31[(_25 + _43)]
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprDense(")._a_S(self.__expr.toString())._a_S(")")._toString_())
 return ExprDense
mosek_fusion_ExprDense=__mk_mosek_fusion_ExprDense()
del __mk_mosek_fusion_ExprDense
def __mk_mosek_fusion_ExprSymmetrize():
 class ExprSymmetrize(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprSymmetrize__dim1','_ExprSymmetrize__dim0','_ExprSymmetrize__expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_IILmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_IILmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_IILmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_IILmosek_4fusion_4Expression_2(*args)
    elif self.__match_ctor_IILmosek_4fusion_4Expression_2I(*args): 
      self._ctor_init_IILmosek_4fusion_4Expression_2I(*args)
    elif self.__match_alt_ctor_IILmosek_4fusion_4Expression_2I(*args):
      self._ctor_alt_init_IILmosek_4fusion_4Expression_2I(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprSymmetrize.ctor(int32,int32,mosek.fusion.Expression)\n\tmosek.fusion.ExprSymmetrize.ctor(int32,int32,mosek.fusion.Expression,int32)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprSymmetrize._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprSymmetrize._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprSymmetrize._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprSymmetrize._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprSymmetrize.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprSymmetrize.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprSymmetrize._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprSymmetrize._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprSymmetrize.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprSymmetrize: '+self._toString_()
  @staticmethod
  def _ctor_IILmosek_4fusion_4Expression_2I(dim0,dim1,expr,unchecked_):
    o = ExprSymmetrize.__new__(ExprSymmetrize)
    o._ctor_init_IILmosek_4fusion_4Expression_2I(dim0,dim1,expr,unchecked_)
    return o
  @staticmethod
  def __match_ctor_IILmosek_4fusion_4Expression_2I(*args):
    if len(args) != 4: return False
    dim0,dim1,expr,unchecked_, = args
    return (__arg_match_I__(dim0) and __arg_match_I__(dim1) and __arg_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_match_I__(unchecked_))
  @staticmethod
  def __match_alt_ctor_IILmosek_4fusion_4Expression_2I(*args):
    if len(args) != 4: return False
    dim0,dim1,expr,unchecked_, = args
    return (__arg_alt_match_I__(dim0) and __arg_alt_match_I__(dim1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr) and __arg_alt_match_I__(unchecked_))
  def _ctor_alt_init_IILmosek_4fusion_4Expression_2I(self,dim0,dim1,expr,unchecked_):
    self._ctor_init_IILmosek_4fusion_4Expression_2I(numpy.int32(dim0),numpy.int32(dim1),expr,numpy.int32(unchecked_))
  def _ctor_init_IILmosek_4fusion_4Expression_2I(self,dim0,dim1,expr,unchecked_):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),expr.getShape())
   (self.__expr) = expr
   if (dim0 < dim1):
    (self.__dim0) = dim0
    (self.__dim1) = dim1
   else:
    (self.__dim0) = dim1
    (self.__dim1) = dim0
  @staticmethod
  def _ctor_IILmosek_4fusion_4Expression_2(dim0_,dim1_,expr):
    o = ExprSymmetrize.__new__(ExprSymmetrize)
    o._ctor_init_IILmosek_4fusion_4Expression_2(dim0_,dim1_,expr)
    return o
  @staticmethod
  def __match_ctor_IILmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    dim0_,dim1_,expr, = args
    return (__arg_match_I__(dim0_) and __arg_match_I__(dim1_) and __arg_match_Lmosek_4fusion_4Expression_2__(expr))
  @staticmethod
  def __match_alt_ctor_IILmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    dim0_,dim1_,expr, = args
    return (__arg_alt_match_I__(dim0_) and __arg_alt_match_I__(dim1_) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(expr))
  def _ctor_alt_init_IILmosek_4fusion_4Expression_2(self,dim0_,dim1_,expr):
    self._ctor_init_IILmosek_4fusion_4Expression_2(numpy.int32(dim0_),numpy.int32(dim1_),expr)
  def _ctor_init_IILmosek_4fusion_4Expression_2(self,dim0_,dim1_,expr):
   mosek_fusion_ExprSymmetrize._ctor_init_IILmosek_4fusion_4Expression_2I(self,dim0_,dim1_,expr,1)
   _0=expr.getShape()
   if ((self.__dim0 < 0) or ((self.__dim0==self.__dim1) or ((self.__dim1 >= int((_0).shape[0])) or (_0[self.__dim0]!=_0[self.__dim1])))):
    raise mosek_fusion_DimensionError._ctor_S("Invalid dimension definitions")
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__expr.recursive_eval(_1,_0,_2,_3)
   _1.pop_expr()
   _4=0
   _5=(_1.nd)
   _6=(_1.nnz)
   _7=(_1.nelem)
   _8=(_1.ncodeatom)
   _9=(_1.hassp)
   _10=(_1.shape_base)
   _11=(_1.ptr_base)
   _12=(_1.code_base)
   _13=(_1.codeptr_base)
   _14=(_1.cconst_base)
   _15=(_1.nidxs_base)
   _16=(_1.sp_base)
   _17=(_1.cof_base)
   _18=(_1.i32)
   _19=(_1.i64)
   _20=(_1.f64)
   for _21 in range(0,_5):
    _22=_18[(_10 + _21)]
    if (_22 > _4):
     _4 = _22
   _23=_2.alloci32(_7)
   _24=_2.alloci32(_7)
   _25=_2.alloci32((_4 + 1))
   _26=_2.alloci64(_7)
   _27=(_2.i32)
   _28=(_2.i64)
   _29=0
   _30=0
   _31=0
   if (_18[(_10 + self.__dim0)]!=_18[(_10 + self.__dim1)]):
    raise mosek_fusion_DimensionError._ctor_S("Symmetry dimensions are no the same")
   _32=_18[(_10 + self.__dim0)]
   _33=numpy.array([1 for _34 in range(0,5)], dtype=numpy.dtype(numpy.int32))
   _35=numpy.zeros((5,), dtype=numpy.dtype(numpy.int64))
   for _36 in range(0,self.__dim0):
    _33[0] *= _18[(_10 + _36)]
   _33[1] = _18[(_10 + self.__dim0)]
   for _37 in range((self.__dim0 + 1),self.__dim1):
    _33[2] *= _18[(_10 + _37)]
   _33[3] = _18[(_10 + self.__dim1)]
   for _38 in range((self.__dim1 + 1),_5):
    _33[4] *= _18[(_10 + _38)]
   _35[4] = 1
   for _39 in range(1,5):
    _35[((5 - _39) - 1)] = (_35[(5 - _39)] * _33[(5 - _39)])
   if _9:
    _40=_23
    for _41 in range(0,_7):
     _27[(_40 + _41)] = _41
    _42=_24
    _43=numpy.array([1,2,3,0], dtype=numpy.dtype(numpy.int32))
    for _44 in range(0,4):
     _45=_35[_43[_44]]
     _46=_33[_43[_44]]
     if (_46 > 1):
      for _47 in range(0,(_46 + 1)):
       _27[(_25 + _47)] = 0
      for _48 in range(0,_7):
       _27[((_25 + ((_19[(_16 + _27[(_40 + _48)])] // _45) % _46)) + 1)] += 1
      for _49 in range(0,_33[3]):
       _27[((_25 + _49) + 1)] += _27[(_25 + _49)]
      for _50 in range(0,_7):
       _51=_27[(_40 + _50)]
       _52=((_19[(_16 + _51)] // _45) % _46)
       _27[(_42 + _27[(_25 + _52)])] = _51
       _27[(_25 + _52)] += 1
      _53=_40
      _40 = _42
      _42 = _53
    for _54 in range(0,_7):
     _55=_18[(_11 + _54)]
     _56=_18[((_11 + _54) + 1)]
     _57=_19[(_16 + _54)]
     if (((_57 % _35[0]) // _35[1])==((_57 % _35[2]) // _35[3])):
      _30 += (_56 - _55)
      if (_8 > 0):
       _31 += (_18[(_13 + _56)] - _18[(_13 + _55)])
     else:
      _30 += ((_56 - _55) * 2)
      if (_8 > 0):
       _31 += (((_18[(_13 + _56)] - _18[(_13 + _55)]) + (2 * (_56 - _55))) * 2)
    for _58 in range(0,_7):
     _59=_19[(_16 + _27[(_40 + _58)])]
     _60=(_59 // _35[0])
     _59 %= _35[0]
     _61=(_59 // _35[1])
     _59 %= _35[1]
     _62=(_59 // _35[2])
     _59 %= _35[2]
     _63=(_59 // _35[3])
     _59 %= _35[3]
     _64=_59
     _28[(_26 + _58)] = (((((_60 * _35[0]) + (_63 * _35[1])) + (_62 * _35[2])) + (_61 * _35[3])) + _64)
    _65=0
    _66=0
    while ((_66 < _7) or (_65 < _7)):
     _67=(_19[(_16 + _66)] if ((_66 < _7) ) else (- 1))
     _68=(_28[(_26 + _65)] if ((_65 < _7) ) else (- 1))
     if ((_66 < _7) and ((_65 >= _7) or (_67 < _68))):
      _29 += 1
      _66 += 1
     elif ((_65 < _7) and ((_66 >= _7) or (_67 > _68))): # bld/grindsted/final/default/src/fusion/ExprShape.monty:399:22-65
      _29 += 1
      _65 += 1
     else:
      _69=((_19[(_16 + _66)] % _35[0]) // _35[1])
      _70=((_19[(_16 + _66)] % _35[2]) // _35[3])
      if (((_67 % _35[0]) // _35[1])!=((_67 % _35[2]) // _35[3])):
       _29 += 1
       _65 += 1
       _66 += 1
      else:
       _29 += 1
       _65 += 1
       _66 += 1
    _0.alloc_expr(_5,_29,_30,True,_31)
    _71=_5
    _72=(_0.ptr_base)
    _73=(_0.nidxs_base)
    _74=(_0.shape_base)
    _75=(_0.sp_base)
    _76=(_0.cof_base)
    _77=(_0.code_base)
    _78=(_0.codeptr_base)
    _79=(_0.cconst_base)
    _80=(_0.i32)
    _81=(_0.i64)
    _82=(_0.f64)
    for _83 in range(0,_5):
     _80[(_74 + _83)] = _18[(_10 + _83)]
    _80[_72] = 0
    if (_31 > 0):
     _80[_78] = 0
    _84=0
    _85=0
    _86=0
    _87=0
    _88=0
    _80[_72] = 0
    while ((_88 < _7) or (_87 < _7)):
     _89=(_27[(_40 + _87)] if ((_87 < _7) ) else (- 1))
     _90=(_19[(_16 + _88)] if ((_88 < _7) ) else (- 1))
     _91=(_28[(_26 + _87)] if ((_87 < _7) ) else (- 1))
     if ((_88 < _7) and ((_87 >= _7) or (_90 < _91))):
      if (_31==0):
       for _92 in range(_18[(_11 + _88)],_18[((_11 + _88) + 1)]):
        _81[(_73 + _84)] = _19[(_15 + _92)]
        _82[(_76 + _84)] = (_20[(_17 + _92)] * 0.5)
        _84 += 1
      else:
       for _93 in range(_18[(_11 + _88)],_18[((_11 + _88) + 1)]):
        _81[(_73 + _84)] = _19[(_15 + _93)]
        _82[(_76 + _84)] = (_20[(_17 + _93)] * 0.5)
        for _94 in range(_18[(_13 + _93)],_18[((_13 + _93) + 1)]):
         _80[(_77 + _85)] = _18[(_12 + _94)]
         _82[(_79 + _85)] = _20[(_14 + _94)]
         _85 += 1
        _80[(_77 + _85)] = 2
        _82[(_79 + _85)] = 0.5
        _85 += 1
        _80[(_77 + _85)] = 5
        _85 += 1
        _80[((_78 + _84) + 1)] = _85
        _84 += 1
      _81[(_75 + _86)] = _90
      _80[((_72 + _86) + 1)] = _84
      _86 += 1
      _88 += 1
     elif ((_87 < _7) and ((_88 >= _7) or (_90 > _91))): # bld/grindsted/final/default/src/fusion/ExprShape.monty:517:22-66
      if (_31==0):
       for _95 in range(_18[(_11 + _89)],_18[((_11 + _89) + 1)]):
        _81[(_73 + _84)] = _19[(_15 + _95)]
        _82[(_76 + _84)] = (_20[(_17 + _95)] * 0.5)
        _84 += 1
      else:
       for _96 in range(_18[(_11 + _89)],_18[((_11 + _89) + 1)]):
        _81[(_73 + _84)] = _19[(_15 + _96)]
        _82[(_76 + _84)] = (_20[(_17 + _96)] * 0.5)
        for _97 in range(_18[(_13 + _96)],_18[((_13 + _96) + 1)]):
         _80[(_77 + _85)] = _18[(_12 + _97)]
         _82[(_79 + _85)] = _20[(_14 + _97)]
         _85 += 1
        _80[(_77 + _85)] = 2
        _82[(_79 + _85)] = 0.5
        _85 += 1
        _80[(_77 + _85)] = 5
        _85 += 1
        _80[((_78 + _84) + 1)] = _85
        _84 += 1
      _81[(_75 + _86)] = _91
      _80[((_72 + _86) + 1)] = _84
      _86 += 1
      _87 += 1
     elif (((_90 % _35[0]) // _35[1])!=((_90 % _35[2]) // _35[3])): # bld/grindsted/final/default/src/fusion/ExprShape.monty:553:24-88
      _98=_84
      for _99 in range(_18[(_11 + _88)],_18[((_11 + _88) + 1)]):
       _81[(_73 + _84)] = _19[(_15 + _99)]
       _82[(_76 + _84)] = (_20[(_17 + _99)] * 0.5)
       _84 += 1
      for _100 in range(_18[(_11 + _89)],_18[((_11 + _89) + 1)]):
       _81[(_73 + _84)] = _19[(_15 + _100)]
       _82[(_76 + _84)] = (_20[(_17 + _100)] * 0.5)
       _84 += 1
      if (_31 > 0):
       for _101 in range(_18[(_11 + _88)],_18[((_11 + _88) + 1)]):
        for _102 in range(_18[(_13 + _101)],_18[((_13 + _101) + 1)]):
         _80[(_77 + _85)] = _18[(_12 + _102)]
         _82[(_79 + _85)] = _20[(_14 + _102)]
         _85 += 1
        _80[(_77 + _85)] = 2
        _82[(_79 + _85)] = 0.5
        _85 += 1
        _80[(_77 + _85)] = 5
        _85 += 1
        _80[((_78 + _98) + 1)] = _85
        _98 += 1
       for _103 in range(_18[(_11 + _89)],_18[((_11 + _89) + 1)]):
        for _104 in range(_18[(_13 + _103)],_18[((_13 + _103) + 1)]):
         _80[(_77 + _85)] = _18[(_12 + _104)]
         _82[(_79 + _85)] = _20[(_14 + _104)]
         _85 += 1
        _80[(_77 + _85)] = 2
        _82[(_79 + _85)] = 0.5
        _85 += 1
        _80[(_77 + _85)] = 5
        _85 += 1
        _80[((_78 + _98) + 1)] = _85
        _98 += 1
      _81[(_75 + _86)] = _90
      _80[((_72 + _86) + 1)] = _84
      _86 += 1
      _87 += 1
      _88 += 1
     else:
      _105=_84
      for _106 in range(_18[(_11 + _88)],_18[((_11 + _88) + 1)]):
       _81[(_73 + _84)] = _19[(_15 + _106)]
       _82[(_76 + _84)] = _20[(_17 + _106)]
       _84 += 1
      if (_31 > 0):
       for _107 in range(_18[(_11 + _88)],_18[((_11 + _88) + 1)]):
        for _108 in range(_18[(_13 + _107)],_18[((_13 + _107) + 1)]):
         _80[(_77 + _85)] = _18[(_12 + _108)]
         _82[(_79 + _85)] = _20[(_14 + _108)]
         _85 += 1
        _80[((_78 + _105) + 1)] = _85
        _105 += 1
      _81[(_75 + _86)] = _19[(_16 + _88)]
      _80[((_72 + _86) + 1)] = _84
      _86 += 1
      _87 += 1
      _88 += 1
    if (_84!=_30):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: Invalid nzi")
   else:
    _29 = _7
    _30 = (_6 * 2)
    _31 = (((2 * _8) + ((2 * 2) * _6)) if ((_8 > 0) ) else 0)
    for _109 in range(0,_33[0]):
     for _110 in range(0,_33[2]):
      for _111 in range(0,_33[4]):
       for _112 in range(0,_33[1]):
        _113=(((((_35[0] * _109) + (_35[1] * _112)) + (_35[2] * _110)) + (_35[3] * _112)) + (_35[4] * _111))
        _30 -= (_18[((_11 + _113) + 1)] - _18[(_11 + _113)])
        if (_8 > 0):
         _31 -= ((_18[(_13 + _18[((_11 + _113) + 1)])] - _18[(_13 + _18[(_11 + _113)])]) + ((2 * 2) * (_18[((_11 + _113) + 1)] - _18[(_11 + _113)])))
    _0.alloc_expr(_5,_29,_30,False,_31)
    _114=(_0.ptr_base)
    _115=(_0.shape_base)
    _116=(_0.code_base)
    _117=(_0.codeptr_base)
    _118=(_0.nidxs_base)
    _119=(_0.sp_base)
    _120=(_0.cof_base)
    _121=(_0.cconst_base)
    _122=(_0.i32)
    _123=(_0.i64)
    _124=(_0.f64)
    _125=0
    _126=0
    _127=0
    for _128 in range(0,_5):
     _122[(_115 + _128)] = _18[(_10 + _128)]
    _122[_114] = 0
    if (_31 > 0):
     _122[_117] = 0
    _129=0
    for _130 in range(0,_33[0]):
     for _131 in range(0,_32):
      for _132 in range(0,_33[2]):
       for _133 in range(0,_32):
        for _134 in range(0,_33[4]):
         if (_131==_133):
          if (_31==0):
           for _135 in range(_18[(_11 + _129)],_18[((_11 + _129) + 1)]):
            _123[(_118 + _125)] = _19[(_15 + _135)]
            _124[(_120 + _125)] = _20[(_17 + _135)]
            _125 += 1
          else:
           for _136 in range(_18[(_11 + _129)],_18[((_11 + _129) + 1)]):
            _123[(_118 + _125)] = _19[(_15 + _136)]
            _124[(_120 + _125)] = _20[(_17 + _136)]
            for _137 in range(_18[(_13 + _136)],_18[((_13 + _136) + 1)]):
             _122[(_116 + _127)] = _18[(_12 + _137)]
             _124[(_121 + _127)] = _20[(_14 + _137)]
             _127 += 1
            _122[((_117 + _125) + 1)] = _127
            _125 += 1
          _122[((_114 + _126) + 1)] = _125
          _129 += 1
         else:
          _138=(((((_130 * _35[0]) + (_133 * _35[1])) + (_132 * _35[2])) + (_131 * _35[3])) + _134)
          if (_31==0):
           for _139 in range(_18[(_11 + _129)],_18[((_11 + _129) + 1)]):
            _123[(_118 + _125)] = _19[(_15 + _139)]
            _124[(_120 + _125)] = (_20[(_17 + _139)] * 0.5)
            _125 += 1
           for _140 in range(_18[(_11 + _138)],_18[((_11 + _138) + 1)]):
            _123[(_118 + _125)] = _19[(_15 + _140)]
            _124[(_120 + _125)] = (_20[(_17 + _140)] * 0.5)
            _125 += 1
          else:
           for _141 in range(_18[(_11 + _129)],_18[((_11 + _129) + 1)]):
            _123[(_118 + _125)] = _19[(_15 + _141)]
            _124[(_120 + _125)] = (_20[(_17 + _141)] * 0.5)
            for _142 in range(_18[(_13 + _141)],_18[((_13 + _141) + 1)]):
             _122[(_116 + _127)] = _18[(_12 + _142)]
             _124[(_121 + _127)] = _20[(_14 + _142)]
             _127 += 1
            _122[(_116 + _127)] = 2
            _124[(_121 + _127)] = 0.5
            _127 += 1
            _122[(_116 + _127)] = 5
            _127 += 1
            _122[((_117 + _125) + 1)] = _127
            _125 += 1
           for _143 in range(_18[(_11 + _138)],_18[((_11 + _138) + 1)]):
            _123[(_118 + _125)] = _19[(_15 + _143)]
            _124[(_120 + _125)] = (_20[(_17 + _143)] * 0.5)
            for _144 in range(_18[(_13 + _143)],_18[((_13 + _143) + 1)]):
             _122[(_116 + _127)] = _18[(_12 + _144)]
             _124[(_121 + _127)] = _20[(_14 + _144)]
             _127 += 1
            _122[(_116 + _127)] = 2
            _124[(_121 + _127)] = 0.5
            _127 += 1
            _122[(_116 + _127)] = 5
            _127 += 1
            _122[((_117 + _125) + 1)] = _127
            _125 += 1
          _122[((_114 + _126) + 1)] = _125
          _129 += 1
         _126 += 1
    if (_125!=_30):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: Invalid nnz")
    if (_126!=_29):
     raise mosek_fusion_UnexpectedError._ctor_S("Internal: Invalid nelem")
   _2.clear()
   _0.peek_expr()
   if ((_0.nnz)!=(_0.i32)[((_0.ptr_base) + (_0.nelem))]):
    raise mosek_fusion_UnexpectedError._ctor_S("Internal: Invalid ptr")
   if ((_0.i32)[(_0.ptr_base)]!=0):
    raise mosek_fusion_UnexpectedError._ctor_S("Internal: Invalid ptr")
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprSymmetrize(symdim=(")._a_I(self.__dim0)._a_S(",")._a_I(self.__dim1)._a_S("),")._a_S(self.__expr.toString())._a_S(")")._toString_())
 return ExprSymmetrize
mosek_fusion_ExprSymmetrize=__mk_mosek_fusion_ExprSymmetrize()
del __mk_mosek_fusion_ExprSymmetrize
def __mk_mosek_fusion_ExprCondense():
 class ExprCondense(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprCondense__expr']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Expression_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprCondense.ctor(mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprCondense._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprCondense._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprCondense._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprCondense._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprCondense.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprCondense.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprCondense._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprCondense._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprCondense.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprCondense: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Expression_2(expr):
    o = ExprCondense.__new__(ExprCondense)
    o._ctor_init_Lmosek_4fusion_4Expression_2(expr)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    expr, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(expr))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    expr, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(expr))
  def _ctor_alt_init_Lmosek_4fusion_4Expression_2(self,expr):
    self._ctor_init_Lmosek_4fusion_4Expression_2(expr)
  def _ctor_init_Lmosek_4fusion_4Expression_2(self,expr):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,expr.getModel(),expr.getShape())
   (self.__expr) = expr
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.__expr.recursive_eval(_0,_1,_2,_3)
   _0.peek_expr()
   if (_0.hassp):
    _4=_0.popi32()
    _0.popi32(_4)
    _5=_0.popi32()
    _6=_0.popi32()
    _0.popi32()
    _0.popi64(_5)
    _0.pushi32(0)
    _0.pushi32(_6)
    _0.pushi32(_5)
    _0.pushi32(_5)
    _0.pushi32(1)
    _0.peek_expr()
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("ExprCondense(")._a_S(self.__expr.toString())._a_S(")")._toString_())
 return ExprCondense
mosek_fusion_ExprCondense=__mk_mosek_fusion_ExprCondense()
del __mk_mosek_fusion_ExprCondense
def __mk_mosek_fusion_ExprFromVar():
 class ExprFromVar(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprFromVar__x']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_Lmosek_4fusion_4Variable_2(*args): 
      self._ctor_init_Lmosek_4fusion_4Variable_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4Variable_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4Variable_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprFromVar.ctor(mosek.fusion.Variable)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprFromVar._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprFromVar._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprFromVar._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprFromVar._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprFromVar.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprFromVar.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def recursive_eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprFromVar._match_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprFromVar._match_alt_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._recursive_1eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list recursive_eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprFromVar.recursive_eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprFromVar._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprFromVar._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprFromVar.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprFromVar: '+self._toString_()
  @staticmethod
  def _ctor_Lmosek_4fusion_4Variable_2(x):
    o = ExprFromVar.__new__(ExprFromVar)
    o._ctor_init_Lmosek_4fusion_4Variable_2(x)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 1: return False
    x, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(x))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 1: return False
    x, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(x))
  def _ctor_alt_init_Lmosek_4fusion_4Variable_2(self,x):
    self._ctor_init_Lmosek_4fusion_4Variable_2(x)
  def _ctor_init_Lmosek_4fusion_4Variable_2(self,x):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,x.getModel(),x.getShape())
   (self.__x) = x
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   _4=self.getShape()
   _5=mosek.fusion.Set._size__3I(_4)
   _6=self.__x.numInst()
   _7=_6
   _8=(_5 > _6)
   _0.alloc_expr(int((_4).shape[0]),_6,_7,_8)
   _9=(_0.ptr_base)
   _10=(_0.nidxs_base)
   _11=(_0.sp_base)
   _12=(_0.cof_base)
   _13=(_0.shape_base)
   _14=(_0.i32)
   _15=(_0.i64)
   _16=(_0.f64)
   for _17 in range(0,int((_4).shape[0])):
    _14[(_13 + _17)] = _4[_17]
   for _18 in range(0,(_6 + 1)):
    _14[(_9 + _18)] = _18
   for _19 in range(0,_7):
    _16[(_12 + _19)] = 1.0
   if _8:
    self.__x.inst(_11,_15,_10,_15)
   else:
    self.__x.inst(_10,_15)
  @staticmethod
  def _match_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _recursive_1eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _recursive_1eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   self.eval(_0,_1,_2,_3)
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return (mosek.fusion.Utils.StringBuffer()._a_S("Expr(")._a_S(self.__x.toString())._a_S(")")._toString_())
 return ExprFromVar
mosek_fusion_ExprFromVar=__mk_mosek_fusion_ExprFromVar()
del __mk_mosek_fusion_ExprFromVar
def __mk_mosek_fusion_ExprReshape():
 class ExprReshape(mosek_fusion_BaseExpression):
  __slots__ = ['_ExprReshape__e']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor__3ILmosek_4fusion_4Expression_2(*args): 
      self._ctor_init__3ILmosek_4fusion_4Expression_2(*args)
    elif self.__match_alt_ctor__3ILmosek_4fusion_4Expression_2(*args):
      self._ctor_alt_init__3ILmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.ExprReshape.ctor(array(int32,ndim=1),mosek.fusion.Expression)')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_ExprReshape._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprReshape._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_ExprReshape._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_ExprReshape._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprReshape.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.ExprReshape.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_ExprReshape._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_ExprReshape._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.ExprReshape.toString()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.ExprReshape: '+self._toString_()
  @staticmethod
  def _ctor__3ILmosek_4fusion_4Expression_2(shape,e):
    o = ExprReshape.__new__(ExprReshape)
    o._ctor_init__3ILmosek_4fusion_4Expression_2(shape,e)
    return o
  @staticmethod
  def __match_ctor__3ILmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    shape,e, = args
    return (__arg_match__3I__(shape) and __arg_match_Lmosek_4fusion_4Expression_2__(e))
  @staticmethod
  def __match_alt_ctor__3ILmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    shape,e, = args
    return (__arg_alt_match__3I__(shape) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(e))
  def _ctor_alt_init__3ILmosek_4fusion_4Expression_2(self,shape,e):
    self._ctor_init__3ILmosek_4fusion_4Expression_2(numpy.array(shape,dtype=numpy.dtype(numpy.int32)),e)
  def _ctor_init__3ILmosek_4fusion_4Expression_2(self,shape,e):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,e.getModel(),mosek.fusion.Utils.Tools._arraycopy__3I(shape))
   _0=e.getSize()
   if (mosek.fusion.Set._size__3I(shape)!=e.getSize()):
    raise mosek_fusion_LengthError._ctor_S("Cannot reshape to mismatching shape")
   (self.__e) = e
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   _4=self.getShape()
   self.__e.recursive_eval(_0,_1,_2,_3)
   _0.peek_expr()
   _5=_0.popi32()
   _6=1
   for _7 in range(0,_5):
    _6 *= _0.popi32()
   if (_6!=self.getSize()):
    raise mosek_fusion_DimensionError._ctor_S("The two shapes have different sizes")
   for _8 in range(0,int((_4).shape[0])):
    _0.pushi32(_4[_8])
   _0.pushi32(int((_4).shape[0]))
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   _0=mosek.fusion.Utils.StringBuffer()._a_S("ExprReshape((")
   if (self.getND() > 0):
    _0._a_I(self.getDim(0))
    for _1 in range(1,self.getND()):
     _0._a_S(",")._a_I(self.getDim(_1))
   _0._a_S("),")._a_S(self.__e.toString())._a_S(")")
   return (_0._toString_())
 return ExprReshape
mosek_fusion_ExprReshape=__mk_mosek_fusion_ExprReshape()
del __mk_mosek_fusion_ExprReshape
def __mk_mosek_fusion_Expr():
 class Expr(mosek_fusion_BaseExpression):
  __slots__ = ['_Expr__inst','_Expr__cof_v','_Expr__subj','_Expr__ptrb','_Expr__bfix','_Expr__shape']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor__3J_3J_3D_3D_3I_3J(*args): 
      self._ctor_init__3J_3J_3D_3D_3I_3J(*args)
    elif self.__match_alt_ctor__3J_3J_3D_3D_3I_3J(*args):
      self._ctor_alt_init__3J_3J_3D_3D_3I_3J(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.Expr.ctor(array(int64,ndim=1),array(int64,ndim=1),array(double,ndim=1),array(double,ndim=1),array(int32,ndim=1),array(int64,ndim=1))')
  @staticmethod
  def mulElm(*args):
    if False: pass
    elif mosek_fusion_Expr._match_mulElm_Lmosek_4fusion_4Expression_2_3D(*args): 
      return mosek_fusion_Expr._mulElm_Lmosek_4fusion_4Expression_2_3D(*args)
    elif mosek_fusion_Expr._match_alt_mulElm_Lmosek_4fusion_4Expression_2_3D(*args): 
      return mosek_fusion_Expr._mulElm_alt_Lmosek_4fusion_4Expression_2_3D(*args)
    elif mosek_fusion_Expr._match_mulElm__3DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mulElm__3DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_mulElm__3DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mulElm_alt__3DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_mulElm_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mulElm_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_mulElm_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mulElm_alt_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_mulElm_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mulElm_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_mulElm_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mulElm_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Expr._mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Expr._match_alt_mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Expr._mulElm_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Expr._match_mulElm_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mulElm_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_mulElm_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mulElm_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_mulElm__3_5DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mulElm__3_5DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_mulElm__3_5DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mulElm_alt__3_5DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_mulElm_Lmosek_4fusion_4Expression_2_3_5D(*args): 
      return mosek_fusion_Expr._mulElm_Lmosek_4fusion_4Expression_2_3_5D(*args)
    elif mosek_fusion_Expr._match_alt_mulElm_Lmosek_4fusion_4Expression_2_3_5D(*args): 
      return mosek_fusion_Expr._mulElm_alt_Lmosek_4fusion_4Expression_2_3_5D(*args)
    elif mosek_fusion_Expr._match_mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_alt_mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._mulElm_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args): 
      return mosek_fusion_Expr._mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args)
    elif mosek_fusion_Expr._match_alt_mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args): 
      return mosek_fusion_Expr._mulElm_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args)
    else:
      raise ValueError('Invalid argument list mulElm('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.mulElm(mosek.fusion.Expression,array(double,ndim=1))\n\tmosek.fusion.Expr.mulElm(array(double,ndim=1),mosek.fusion.Expression)\n\tmosek.fusion.Expr.mulElm(mosek.fusion.NDSparseArray,mosek.fusion.Expression)\n\tmosek.fusion.Expr.mulElm(mosek.fusion.Matrix,mosek.fusion.Expression)\n\tmosek.fusion.Expr.mulElm(mosek.fusion.Expression,mosek.fusion.Parameter)\n\tmosek.fusion.Expr.mulElm(mosek.fusion.Parameter,mosek.fusion.Expression)\n\tmosek.fusion.Expr.mulElm(array(double,ndim=2),mosek.fusion.Expression)\n\tmosek.fusion.Expr.mulElm(mosek.fusion.Expression,array(double,ndim=2))\n\tmosek.fusion.Expr.mulElm(mosek.fusion.Expression,mosek.fusion.Matrix)\n\tmosek.fusion.Expr.mulElm(mosek.fusion.Expression,mosek.fusion.NDSparseArray)')
  @staticmethod
  def condense(*args):
    if False: pass
    elif mosek_fusion_Expr._match_condense_Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._condense_Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_condense_Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._condense_alt_Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list condense('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.condense(mosek.fusion.Expression)')
  @staticmethod
  def sub(*args):
    if False: pass
    elif mosek_fusion_Expr._match_sub_Lmosek_4fusion_4Expression_2_3D(*args): 
      return mosek_fusion_Expr._sub_Lmosek_4fusion_4Expression_2_3D(*args)
    elif mosek_fusion_Expr._match_alt_sub_Lmosek_4fusion_4Expression_2_3D(*args): 
      return mosek_fusion_Expr._sub_alt_Lmosek_4fusion_4Expression_2_3D(*args)
    elif mosek_fusion_Expr._match_sub__3DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._sub__3DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_sub__3DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._sub_alt__3DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_sub_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._sub_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_sub_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._sub_alt_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_sub_DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._sub_DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_sub_DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._sub_alt_DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_sub_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._sub_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_sub_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._sub_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._sub_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_sub__3_5DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._sub__3_5DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_sub__3_5DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._sub_alt__3_5DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_sub_Lmosek_4fusion_4Expression_2_3_5D(*args): 
      return mosek_fusion_Expr._sub_Lmosek_4fusion_4Expression_2_3_5D(*args)
    elif mosek_fusion_Expr._match_alt_sub_Lmosek_4fusion_4Expression_2_3_5D(*args): 
      return mosek_fusion_Expr._sub_alt_Lmosek_4fusion_4Expression_2_3_5D(*args)
    elif mosek_fusion_Expr._match_sub_Lmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._sub_Lmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_alt_sub_Lmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._sub_alt_Lmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_alt_sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._sub_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args): 
      return mosek_fusion_Expr._sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args)
    elif mosek_fusion_Expr._match_alt_sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args): 
      return mosek_fusion_Expr._sub_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args)
    else:
      raise ValueError('Invalid argument list sub('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.sub(mosek.fusion.Expression,array(double,ndim=1))\n\tmosek.fusion.Expr.sub(array(double,ndim=1),mosek.fusion.Expression)\n\tmosek.fusion.Expr.sub(mosek.fusion.NDSparseArray,mosek.fusion.Expression)\n\tmosek.fusion.Expr.sub(double,mosek.fusion.Expression)\n\tmosek.fusion.Expr.sub(mosek.fusion.Matrix,mosek.fusion.Expression)\n\tmosek.fusion.Expr.sub(mosek.fusion.Expression,mosek.fusion.Expression)\n\tmosek.fusion.Expr.sub(array(double,ndim=2),mosek.fusion.Expression)\n\tmosek.fusion.Expr.sub(mosek.fusion.Expression,array(double,ndim=2))\n\tmosek.fusion.Expr.sub(mosek.fusion.Expression,double)\n\tmosek.fusion.Expr.sub(mosek.fusion.Expression,mosek.fusion.Matrix)\n\tmosek.fusion.Expr.sub(mosek.fusion.Expression,mosek.fusion.NDSparseArray)')
  @staticmethod
  def add(*args):
    if False: pass
    elif mosek_fusion_Expr._match_add__3Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._add__3Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_add__3Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._add_alt__3Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_add__3Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Expr._add__3Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Expr._match_alt_add__3Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Expr._add_alt__3Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Expr._match_add_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._add_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_add_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._add_alt_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_add_DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._add_DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_add_DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._add_alt_DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_add__3DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._add__3DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_add__3DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._add_alt__3DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_add_Lmosek_4fusion_4Expression_2_3D(*args): 
      return mosek_fusion_Expr._add_Lmosek_4fusion_4Expression_2_3D(*args)
    elif mosek_fusion_Expr._match_alt_add_Lmosek_4fusion_4Expression_2_3D(*args): 
      return mosek_fusion_Expr._add_alt_Lmosek_4fusion_4Expression_2_3D(*args)
    elif mosek_fusion_Expr._match_add_Lmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._add_Lmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_alt_add_Lmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._add_alt_Lmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_add_Lmosek_4fusion_4Expression_2_3_5D(*args): 
      return mosek_fusion_Expr._add_Lmosek_4fusion_4Expression_2_3_5D(*args)
    elif mosek_fusion_Expr._match_alt_add_Lmosek_4fusion_4Expression_2_3_5D(*args): 
      return mosek_fusion_Expr._add_alt_Lmosek_4fusion_4Expression_2_3_5D(*args)
    elif mosek_fusion_Expr._match_add_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._add_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_add_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._add_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_add__3_5DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._add__3_5DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_add__3_5DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._add_alt__3_5DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._add_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_alt_add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._add_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args): 
      return mosek_fusion_Expr._add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args)
    elif mosek_fusion_Expr._match_alt_add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args): 
      return mosek_fusion_Expr._add_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args)
    else:
      raise ValueError('Invalid argument list add('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.add(array(mosek.fusion.Expression,ndim=1))\n\tmosek.fusion.Expr.add(array(mosek.fusion.Variable,ndim=1))\n\tmosek.fusion.Expr.add(mosek.fusion.NDSparseArray,mosek.fusion.Expression)\n\tmosek.fusion.Expr.add(double,mosek.fusion.Expression)\n\tmosek.fusion.Expr.add(array(double,ndim=1),mosek.fusion.Expression)\n\tmosek.fusion.Expr.add(mosek.fusion.Expression,array(double,ndim=1))\n\tmosek.fusion.Expr.add(mosek.fusion.Expression,double)\n\tmosek.fusion.Expr.add(mosek.fusion.Expression,array(double,ndim=2))\n\tmosek.fusion.Expr.add(mosek.fusion.Matrix,mosek.fusion.Expression)\n\tmosek.fusion.Expr.add(array(double,ndim=2),mosek.fusion.Expression)\n\tmosek.fusion.Expr.add(mosek.fusion.Expression,mosek.fusion.Expression)\n\tmosek.fusion.Expr.add(mosek.fusion.Expression,mosek.fusion.Matrix)\n\tmosek.fusion.Expr.add(mosek.fusion.Expression,mosek.fusion.NDSparseArray)')
  @staticmethod
  def zeros(*args):
    if False: pass
    elif mosek_fusion_Expr._match_zeros_I(*args): 
      return mosek_fusion_Expr._zeros_I(*args)
    elif mosek_fusion_Expr._match_alt_zeros_I(*args): 
      return mosek_fusion_Expr._zeros_alt_I(*args)
    elif mosek_fusion_Expr._match_zeros__3I(*args): 
      return mosek_fusion_Expr._zeros__3I(*args)
    elif mosek_fusion_Expr._match_alt_zeros__3I(*args): 
      return mosek_fusion_Expr._zeros_alt__3I(*args)
    else:
      raise ValueError('Invalid argument list zeros('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.zeros(int32)\n\tmosek.fusion.Expr.zeros(array(int32,ndim=1))')
  @staticmethod
  def repeat(*args):
    if False: pass
    elif mosek_fusion_Expr._match_repeat_Lmosek_4fusion_4Variable_2II(*args): 
      return mosek_fusion_Expr._repeat_Lmosek_4fusion_4Variable_2II(*args)
    elif mosek_fusion_Expr._match_alt_repeat_Lmosek_4fusion_4Variable_2II(*args): 
      return mosek_fusion_Expr._repeat_alt_Lmosek_4fusion_4Variable_2II(*args)
    elif mosek_fusion_Expr._match_repeat_Lmosek_4fusion_4Expression_2II(*args): 
      return mosek_fusion_Expr._repeat_Lmosek_4fusion_4Expression_2II(*args)
    elif mosek_fusion_Expr._match_alt_repeat_Lmosek_4fusion_4Expression_2II(*args): 
      return mosek_fusion_Expr._repeat_alt_Lmosek_4fusion_4Expression_2II(*args)
    else:
      raise ValueError('Invalid argument list repeat('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.repeat(mosek.fusion.Variable,int32,int32)\n\tmosek.fusion.Expr.repeat(mosek.fusion.Expression,int32,int32)')
  @staticmethod
  def dot(*args):
    if False: pass
    elif mosek_fusion_Expr._match_dot_Lmosek_4fusion_4Expression_2_3D(*args): 
      return mosek_fusion_Expr._dot_Lmosek_4fusion_4Expression_2_3D(*args)
    elif mosek_fusion_Expr._match_alt_dot_Lmosek_4fusion_4Expression_2_3D(*args): 
      return mosek_fusion_Expr._dot_alt_Lmosek_4fusion_4Expression_2_3D(*args)
    elif mosek_fusion_Expr._match_dot__3DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._dot__3DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_dot__3DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._dot_alt__3DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_dot_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._dot_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_dot_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._dot_alt_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_dot_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._dot_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_dot_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._dot_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Expr._dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Expr._match_alt_dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Expr._dot_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Expr._match_dot_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._dot_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_dot_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._dot_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_dot__3_5DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._dot__3_5DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_dot__3_5DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._dot_alt__3_5DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_dot_Lmosek_4fusion_4Expression_2_3_5D(*args): 
      return mosek_fusion_Expr._dot_Lmosek_4fusion_4Expression_2_3_5D(*args)
    elif mosek_fusion_Expr._match_alt_dot_Lmosek_4fusion_4Expression_2_3_5D(*args): 
      return mosek_fusion_Expr._dot_alt_Lmosek_4fusion_4Expression_2_3_5D(*args)
    elif mosek_fusion_Expr._match_dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_alt_dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._dot_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args): 
      return mosek_fusion_Expr._dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args)
    elif mosek_fusion_Expr._match_alt_dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args): 
      return mosek_fusion_Expr._dot_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args)
    else:
      raise ValueError('Invalid argument list dot('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.dot(mosek.fusion.Expression,array(double,ndim=1))\n\tmosek.fusion.Expr.dot(array(double,ndim=1),mosek.fusion.Expression)\n\tmosek.fusion.Expr.dot(mosek.fusion.NDSparseArray,mosek.fusion.Expression)\n\tmosek.fusion.Expr.dot(mosek.fusion.Matrix,mosek.fusion.Expression)\n\tmosek.fusion.Expr.dot(mosek.fusion.Expression,mosek.fusion.Parameter)\n\tmosek.fusion.Expr.dot(mosek.fusion.Parameter,mosek.fusion.Expression)\n\tmosek.fusion.Expr.dot(array(double,ndim=2),mosek.fusion.Expression)\n\tmosek.fusion.Expr.dot(mosek.fusion.Expression,array(double,ndim=2))\n\tmosek.fusion.Expr.dot(mosek.fusion.Expression,mosek.fusion.Matrix)\n\tmosek.fusion.Expr.dot(mosek.fusion.Expression,mosek.fusion.NDSparseArray)')
  @staticmethod
  def sum(*args):
    if False: pass
    elif mosek_fusion_Expr._match_sum_Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._sum_Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_sum_Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._sum_alt_Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_sum_Lmosek_4fusion_4Expression_2I(*args): 
      return mosek_fusion_Expr._sum_Lmosek_4fusion_4Expression_2I(*args)
    elif mosek_fusion_Expr._match_alt_sum_Lmosek_4fusion_4Expression_2I(*args): 
      return mosek_fusion_Expr._sum_alt_Lmosek_4fusion_4Expression_2I(*args)
    elif mosek_fusion_Expr._match_sum_Lmosek_4fusion_4Expression_2_3I(*args): 
      return mosek_fusion_Expr._sum_Lmosek_4fusion_4Expression_2_3I(*args)
    elif mosek_fusion_Expr._match_alt_sum_Lmosek_4fusion_4Expression_2_3I(*args): 
      return mosek_fusion_Expr._sum_alt_Lmosek_4fusion_4Expression_2_3I(*args)
    else:
      raise ValueError('Invalid argument list sum('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.sum(mosek.fusion.Expression)\n\tmosek.fusion.Expr.sum(mosek.fusion.Expression,int32)\n\tmosek.fusion.Expr.sum(mosek.fusion.Expression,array(int32,ndim=1))')
  @staticmethod
  def flatten(*args):
    if False: pass
    elif mosek_fusion_Expr._match_flatten_Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._flatten_Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_flatten_Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._flatten_alt_Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list flatten('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.flatten(mosek.fusion.Expression)')
  @staticmethod
  def vstack(*args):
    if False: pass
    elif mosek_fusion_Expr._match_vstack__3Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._vstack__3Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_vstack__3Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._vstack_alt__3Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_vstack_Lmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._vstack_Lmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_alt_vstack_Lmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._vstack_alt_Lmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_vstack_DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._vstack_DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_vstack_DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._vstack_alt_DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._vstack_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_vstack_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._vstack_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_vstack_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._vstack_alt_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_vstack_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._vstack_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_vstack_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._vstack_alt_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_vstack_DLmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._vstack_DLmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_alt_vstack_DLmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._vstack_alt_DLmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_alt_vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._vstack_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_vstack_Lmosek_4fusion_4Expression_2DD(*args): 
      return mosek_fusion_Expr._vstack_Lmosek_4fusion_4Expression_2DD(*args)
    elif mosek_fusion_Expr._match_alt_vstack_Lmosek_4fusion_4Expression_2DD(*args): 
      return mosek_fusion_Expr._vstack_alt_Lmosek_4fusion_4Expression_2DD(*args)
    elif mosek_fusion_Expr._match_vstack_DDLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._vstack_DDLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_vstack_DDLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._vstack_alt_DDLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_vstack_DDD(*args): 
      return mosek_fusion_Expr._vstack_DDD(*args)
    elif mosek_fusion_Expr._match_alt_vstack_DDD(*args): 
      return mosek_fusion_Expr._vstack_alt_DDD(*args)
    elif mosek_fusion_Expr._match_vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._vstack_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list vstack('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.vstack(array(mosek.fusion.Expression,ndim=1))\n\tmosek.fusion.Expr.vstack(mosek.fusion.Expression,double)\n\tmosek.fusion.Expr.vstack(double,mosek.fusion.Expression)\n\tmosek.fusion.Expr.vstack(mosek.fusion.Expression,mosek.fusion.Expression)\n\tmosek.fusion.Expr.vstack(double,mosek.fusion.Expression,mosek.fusion.Expression)\n\tmosek.fusion.Expr.vstack(mosek.fusion.Expression,double,mosek.fusion.Expression)\n\tmosek.fusion.Expr.vstack(double,mosek.fusion.Expression,double)\n\tmosek.fusion.Expr.vstack(mosek.fusion.Expression,mosek.fusion.Expression,double)\n\tmosek.fusion.Expr.vstack(mosek.fusion.Expression,double,double)\n\tmosek.fusion.Expr.vstack(double,double,mosek.fusion.Expression)\n\tmosek.fusion.Expr.vstack(double,double,double)\n\tmosek.fusion.Expr.vstack(mosek.fusion.Expression,mosek.fusion.Expression,mosek.fusion.Expression)')
  @staticmethod
  def neg(*args):
    if False: pass
    elif mosek_fusion_Expr._match_neg_Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._neg_Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_neg_Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._neg_alt_Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list neg('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.neg(mosek.fusion.Expression)')
  @staticmethod
  def transpose(*args):
    if False: pass
    elif mosek_fusion_Expr._match_transpose_Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._transpose_Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_transpose_Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._transpose_alt_Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list transpose('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.transpose(mosek.fusion.Expression)')
  @staticmethod
  def ones(*args):
    if False: pass
    elif mosek_fusion_Expr._match_ones_(*args): 
      return mosek_fusion_Expr._ones_(*args)
    elif mosek_fusion_Expr._match_alt_ones_(*args): 
      return mosek_fusion_Expr._ones_alt_(*args)
    elif mosek_fusion_Expr._match_ones__3I(*args): 
      return mosek_fusion_Expr._ones__3I(*args)
    elif mosek_fusion_Expr._match_alt_ones__3I(*args): 
      return mosek_fusion_Expr._ones_alt__3I(*args)
    elif mosek_fusion_Expr._match_ones_I(*args): 
      return mosek_fusion_Expr._ones_I(*args)
    elif mosek_fusion_Expr._match_alt_ones_I(*args): 
      return mosek_fusion_Expr._ones_alt_I(*args)
    elif mosek_fusion_Expr._match_ones__3I_3_5I(*args): 
      return mosek_fusion_Expr._ones__3I_3_5I(*args)
    elif mosek_fusion_Expr._match_alt_ones__3I_3_5I(*args): 
      return mosek_fusion_Expr._ones_alt__3I_3_5I(*args)
    else:
      raise ValueError('Invalid argument list ones('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.ones()\n\tmosek.fusion.Expr.ones(array(int32,ndim=1))\n\tmosek.fusion.Expr.ones(int32)\n\tmosek.fusion.Expr.ones(array(int32,ndim=1),array(int32,ndim=2))')
  @staticmethod
  def constTerm(*args):
    if False: pass
    elif mosek_fusion_Expr._match_constTerm__3D(*args): 
      return mosek_fusion_Expr._constTerm__3D(*args)
    elif mosek_fusion_Expr._match_alt_constTerm__3D(*args): 
      return mosek_fusion_Expr._constTerm_alt__3D(*args)
    elif mosek_fusion_Expr._match_constTerm_Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._constTerm_Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_alt_constTerm_Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._constTerm_alt_Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_constTerm_D(*args): 
      return mosek_fusion_Expr._constTerm_D(*args)
    elif mosek_fusion_Expr._match_alt_constTerm_D(*args): 
      return mosek_fusion_Expr._constTerm_alt_D(*args)
    elif mosek_fusion_Expr._match_constTerm_Lmosek_4fusion_4NDSparseArray_2(*args): 
      return mosek_fusion_Expr._constTerm_Lmosek_4fusion_4NDSparseArray_2(*args)
    elif mosek_fusion_Expr._match_alt_constTerm_Lmosek_4fusion_4NDSparseArray_2(*args): 
      return mosek_fusion_Expr._constTerm_alt_Lmosek_4fusion_4NDSparseArray_2(*args)
    elif mosek_fusion_Expr._match_constTerm__3_5D(*args): 
      return mosek_fusion_Expr._constTerm__3_5D(*args)
    elif mosek_fusion_Expr._match_alt_constTerm__3_5D(*args): 
      return mosek_fusion_Expr._constTerm_alt__3_5D(*args)
    elif mosek_fusion_Expr._match_constTerm_ID(*args): 
      return mosek_fusion_Expr._constTerm_ID(*args)
    elif mosek_fusion_Expr._match_alt_constTerm_ID(*args): 
      return mosek_fusion_Expr._constTerm_alt_ID(*args)
    elif mosek_fusion_Expr._match_constTerm__3ID(*args): 
      return mosek_fusion_Expr._constTerm__3ID(*args)
    elif mosek_fusion_Expr._match_alt_constTerm__3ID(*args): 
      return mosek_fusion_Expr._constTerm_alt__3ID(*args)
    elif mosek_fusion_Expr._match_constTerm__3I_3_5ID(*args): 
      return mosek_fusion_Expr._constTerm__3I_3_5ID(*args)
    elif mosek_fusion_Expr._match_alt_constTerm__3I_3_5ID(*args): 
      return mosek_fusion_Expr._constTerm_alt__3I_3_5ID(*args)
    elif mosek_fusion_Expr._match_constTerm__3I_3_5I_3D(*args): 
      return mosek_fusion_Expr._constTerm__3I_3_5I_3D(*args)
    elif mosek_fusion_Expr._match_alt_constTerm__3I_3_5I_3D(*args): 
      return mosek_fusion_Expr._constTerm_alt__3I_3_5I_3D(*args)
    else:
      raise ValueError('Invalid argument list constTerm('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.constTerm(array(double,ndim=1))\n\tmosek.fusion.Expr.constTerm(mosek.fusion.Matrix)\n\tmosek.fusion.Expr.constTerm(double)\n\tmosek.fusion.Expr.constTerm(mosek.fusion.NDSparseArray)\n\tmosek.fusion.Expr.constTerm(array(double,ndim=2))\n\tmosek.fusion.Expr.constTerm(int32,double)\n\tmosek.fusion.Expr.constTerm(array(int32,ndim=1),double)\n\tmosek.fusion.Expr.constTerm(array(int32,ndim=1),array(int32,ndim=2),double)\n\tmosek.fusion.Expr.constTerm(array(int32,ndim=1),array(int32,ndim=2),array(double,ndim=1))')
  def eval(self,*args):
    if False: pass
    elif mosek_fusion_Expr._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_Expr._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_Expr._match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    elif mosek_fusion_Expr._match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args): 
      return self._eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args)
    else:
      raise ValueError('Invalid argument list eval('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack)\n\tmosek.fusion.Expr.eval(mosek.fusion.WorkStack,mosek.fusion.WorkStack,mosek.fusion.WorkStack,bool)')
  @staticmethod
  def mul(*args):
    if False: pass
    elif mosek_fusion_Expr._match_mul_Lmosek_4fusion_4Variable_2_3_5D(*args): 
      return mosek_fusion_Expr._mul_Lmosek_4fusion_4Variable_2_3_5D(*args)
    elif mosek_fusion_Expr._match_alt_mul_Lmosek_4fusion_4Variable_2_3_5D(*args): 
      return mosek_fusion_Expr._mul_alt_Lmosek_4fusion_4Variable_2_3_5D(*args)
    elif mosek_fusion_Expr._match_mul_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Expr._mul_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Expr._match_alt_mul_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Expr._mul_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Expr._match_mul__3DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mul__3DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_mul__3DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mul_alt__3DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_mul_DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mul_DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_mul_DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mul_alt_DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_mul_Lmosek_4fusion_4Expression_2_3D(*args): 
      return mosek_fusion_Expr._mul_Lmosek_4fusion_4Expression_2_3D(*args)
    elif mosek_fusion_Expr._match_alt_mul_Lmosek_4fusion_4Expression_2_3D(*args): 
      return mosek_fusion_Expr._mul_alt_Lmosek_4fusion_4Expression_2_3D(*args)
    elif mosek_fusion_Expr._match_mul_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mul_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_mul_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mul_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_mul_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mul_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_mul_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mul_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_mul__3_5DLmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Expr._mul__3_5DLmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Expr._match_alt_mul__3_5DLmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Expr._mul_alt__3_5DLmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Expr._match_mul__3_5DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mul__3_5DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_mul__3_5DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mul_alt__3_5DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_mul_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._mul_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_alt_mul_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._mul_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_mul_Lmosek_4fusion_4Expression_2_3_5D(*args): 
      return mosek_fusion_Expr._mul_Lmosek_4fusion_4Expression_2_3_5D(*args)
    elif mosek_fusion_Expr._match_alt_mul_Lmosek_4fusion_4Expression_2_3_5D(*args): 
      return mosek_fusion_Expr._mul_alt_Lmosek_4fusion_4Expression_2_3_5D(*args)
    elif mosek_fusion_Expr._match_mul_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Expr._mul_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Expr._match_alt_mul_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Expr._mul_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Expr._match_mul_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._mul_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_alt_mul_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._mul_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_mul_Lmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._mul_Lmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_alt_mul_Lmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._mul_alt_Lmosek_4fusion_4Expression_2D(*args)
    else:
      raise ValueError('Invalid argument list mul('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.mul(mosek.fusion.Variable,array(double,ndim=2))\n\tmosek.fusion.Expr.mul(mosek.fusion.Matrix,mosek.fusion.Variable)\n\tmosek.fusion.Expr.mul(array(double,ndim=1),mosek.fusion.Expression)\n\tmosek.fusion.Expr.mul(double,mosek.fusion.Expression)\n\tmosek.fusion.Expr.mul(mosek.fusion.Expression,array(double,ndim=1))\n\tmosek.fusion.Expr.mul(mosek.fusion.Matrix,mosek.fusion.Expression)\n\tmosek.fusion.Expr.mul(mosek.fusion.Parameter,mosek.fusion.Expression)\n\tmosek.fusion.Expr.mul(array(double,ndim=2),mosek.fusion.Variable)\n\tmosek.fusion.Expr.mul(array(double,ndim=2),mosek.fusion.Expression)\n\tmosek.fusion.Expr.mul(mosek.fusion.Variable,mosek.fusion.Matrix)\n\tmosek.fusion.Expr.mul(mosek.fusion.Expression,array(double,ndim=2))\n\tmosek.fusion.Expr.mul(mosek.fusion.Expression,mosek.fusion.Parameter)\n\tmosek.fusion.Expr.mul(mosek.fusion.Expression,mosek.fusion.Matrix)\n\tmosek.fusion.Expr.mul(mosek.fusion.Expression,double)')
  @staticmethod
  def outer(*args):
    if False: pass
    elif mosek_fusion_Expr._match_outer__3DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._outer__3DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_outer__3DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._outer_alt__3DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_outer_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._outer_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_outer_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._outer_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_outer_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Expr._outer_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Expr._match_alt_outer_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Expr._outer_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Expr._match_outer_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._outer_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_outer_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._outer_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_outer_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._outer_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_alt_outer_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._outer_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_outer_Lmosek_4fusion_4Expression_2_3D(*args): 
      return mosek_fusion_Expr._outer_Lmosek_4fusion_4Expression_2_3D(*args)
    elif mosek_fusion_Expr._match_alt_outer_Lmosek_4fusion_4Expression_2_3D(*args): 
      return mosek_fusion_Expr._outer_alt_Lmosek_4fusion_4Expression_2_3D(*args)
    else:
      raise ValueError('Invalid argument list outer('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.outer(array(double,ndim=1),mosek.fusion.Expression)\n\tmosek.fusion.Expr.outer(mosek.fusion.Matrix,mosek.fusion.Expression)\n\tmosek.fusion.Expr.outer(mosek.fusion.Expression,mosek.fusion.Parameter)\n\tmosek.fusion.Expr.outer(mosek.fusion.Parameter,mosek.fusion.Expression)\n\tmosek.fusion.Expr.outer(mosek.fusion.Expression,mosek.fusion.Matrix)\n\tmosek.fusion.Expr.outer(mosek.fusion.Expression,array(double,ndim=1))')
  @staticmethod
  def mulDiag(*args):
    if False: pass
    elif mosek_fusion_Expr._match_mulDiag_Lmosek_4fusion_4Variable_2_3_5D(*args): 
      return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Variable_2_3_5D(*args)
    elif mosek_fusion_Expr._match_alt_mulDiag_Lmosek_4fusion_4Variable_2_3_5D(*args): 
      return mosek_fusion_Expr._mulDiag_alt_Lmosek_4fusion_4Variable_2_3_5D(*args)
    elif mosek_fusion_Expr._match_mulDiag_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Expr._match_alt_mulDiag_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Expr._mulDiag_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Expr._match_mulDiag_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Expr._match_alt_mulDiag_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Expr._mulDiag_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Expr._match_mulDiag_Lmosek_4fusion_4Expression_2_3_5D(*args): 
      return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Expression_2_3_5D(*args)
    elif mosek_fusion_Expr._match_alt_mulDiag_Lmosek_4fusion_4Expression_2_3_5D(*args): 
      return mosek_fusion_Expr._mulDiag_alt_Lmosek_4fusion_4Expression_2_3_5D(*args)
    elif mosek_fusion_Expr._match_mulDiag_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_mulDiag_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mulDiag_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_mulDiag_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_mulDiag_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mulDiag_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_mulDiag__3_5DLmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Expr._mulDiag__3_5DLmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Expr._match_alt_mulDiag__3_5DLmosek_4fusion_4Variable_2(*args): 
      return mosek_fusion_Expr._mulDiag_alt__3_5DLmosek_4fusion_4Variable_2(*args)
    elif mosek_fusion_Expr._match_mulDiag__3_5DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mulDiag__3_5DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_mulDiag__3_5DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._mulDiag_alt__3_5DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_mulDiag_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_alt_mulDiag_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._mulDiag_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_mulDiag_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Expr._match_alt_mulDiag_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Expr._mulDiag_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Expr._match_mulDiag_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Expr._match_alt_mulDiag_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args): 
      return mosek_fusion_Expr._mulDiag_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args)
    elif mosek_fusion_Expr._match_mulDiag_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Expr._match_alt_mulDiag_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Expr._mulDiag_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args)
    else:
      raise ValueError('Invalid argument list mulDiag('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.mulDiag(mosek.fusion.Variable,array(double,ndim=2))\n\tmosek.fusion.Expr.mulDiag(mosek.fusion.Parameter,mosek.fusion.Variable)\n\tmosek.fusion.Expr.mulDiag(mosek.fusion.Matrix,mosek.fusion.Variable)\n\tmosek.fusion.Expr.mulDiag(mosek.fusion.Expression,array(double,ndim=2))\n\tmosek.fusion.Expr.mulDiag(mosek.fusion.Matrix,mosek.fusion.Expression)\n\tmosek.fusion.Expr.mulDiag(mosek.fusion.Parameter,mosek.fusion.Expression)\n\tmosek.fusion.Expr.mulDiag(array(double,ndim=2),mosek.fusion.Variable)\n\tmosek.fusion.Expr.mulDiag(array(double,ndim=2),mosek.fusion.Expression)\n\tmosek.fusion.Expr.mulDiag(mosek.fusion.Variable,mosek.fusion.Matrix)\n\tmosek.fusion.Expr.mulDiag(mosek.fusion.Variable,mosek.fusion.Parameter)\n\tmosek.fusion.Expr.mulDiag(mosek.fusion.Expression,mosek.fusion.Parameter)\n\tmosek.fusion.Expr.mulDiag(mosek.fusion.Expression,mosek.fusion.Matrix)')
  @staticmethod
  def stack(*args):
    if False: pass
    elif mosek_fusion_Expr._match_stack__3_3Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._stack__3_3Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_stack__3_3Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._stack_alt__3_3Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_stack_I_3Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._stack_I_3Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_stack_I_3Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._stack_alt_I_3Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_stack_ILmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._stack_ILmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_alt_stack_ILmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._stack_alt_ILmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._stack_alt_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_stack_IDLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._stack_IDLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_stack_IDLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._stack_alt_IDLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._stack_alt_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_stack_IDLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._stack_IDLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_stack_IDLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._stack_alt_IDLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_stack_ILmosek_4fusion_4Expression_2DD(*args): 
      return mosek_fusion_Expr._stack_ILmosek_4fusion_4Expression_2DD(*args)
    elif mosek_fusion_Expr._match_alt_stack_ILmosek_4fusion_4Expression_2DD(*args): 
      return mosek_fusion_Expr._stack_alt_ILmosek_4fusion_4Expression_2DD(*args)
    elif mosek_fusion_Expr._match_stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_alt_stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._stack_alt_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_stack_IDLmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._stack_IDLmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_alt_stack_IDLmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._stack_alt_IDLmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_stack_IDDLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._stack_IDDLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_stack_IDDLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._stack_alt_IDDLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_stack_ILmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._stack_ILmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_stack_ILmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._stack_alt_ILmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list stack('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.stack(array(array(mosek.fusion.Expression,ndim=1),ndim=1))\n\tmosek.fusion.Expr.stack(int32,array(mosek.fusion.Expression,ndim=1))\n\tmosek.fusion.Expr.stack(int32,mosek.fusion.Expression,double)\n\tmosek.fusion.Expr.stack(int32,mosek.fusion.Expression,mosek.fusion.Expression)\n\tmosek.fusion.Expr.stack(int32,double,mosek.fusion.Expression)\n\tmosek.fusion.Expr.stack(int32,mosek.fusion.Expression,mosek.fusion.Expression,mosek.fusion.Expression)\n\tmosek.fusion.Expr.stack(int32,double,mosek.fusion.Expression,mosek.fusion.Expression)\n\tmosek.fusion.Expr.stack(int32,mosek.fusion.Expression,double,double)\n\tmosek.fusion.Expr.stack(int32,mosek.fusion.Expression,mosek.fusion.Expression,double)\n\tmosek.fusion.Expr.stack(int32,double,mosek.fusion.Expression,double)\n\tmosek.fusion.Expr.stack(int32,double,double,mosek.fusion.Expression)\n\tmosek.fusion.Expr.stack(int32,mosek.fusion.Expression,double,mosek.fusion.Expression)')
  @staticmethod
  def reshape(*args):
    if False: pass
    elif mosek_fusion_Expr._match_reshape_Lmosek_4fusion_4Expression_2_3I(*args): 
      return mosek_fusion_Expr._reshape_Lmosek_4fusion_4Expression_2_3I(*args)
    elif mosek_fusion_Expr._match_alt_reshape_Lmosek_4fusion_4Expression_2_3I(*args): 
      return mosek_fusion_Expr._reshape_alt_Lmosek_4fusion_4Expression_2_3I(*args)
    elif mosek_fusion_Expr._match_reshape_Lmosek_4fusion_4Expression_2I(*args): 
      return mosek_fusion_Expr._reshape_Lmosek_4fusion_4Expression_2I(*args)
    elif mosek_fusion_Expr._match_alt_reshape_Lmosek_4fusion_4Expression_2I(*args): 
      return mosek_fusion_Expr._reshape_alt_Lmosek_4fusion_4Expression_2I(*args)
    elif mosek_fusion_Expr._match_reshape_Lmosek_4fusion_4Expression_2II(*args): 
      return mosek_fusion_Expr._reshape_Lmosek_4fusion_4Expression_2II(*args)
    elif mosek_fusion_Expr._match_alt_reshape_Lmosek_4fusion_4Expression_2II(*args): 
      return mosek_fusion_Expr._reshape_alt_Lmosek_4fusion_4Expression_2II(*args)
    else:
      raise ValueError('Invalid argument list reshape('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.reshape(mosek.fusion.Expression,array(int32,ndim=1))\n\tmosek.fusion.Expr.reshape(mosek.fusion.Expression,int32)\n\tmosek.fusion.Expr.reshape(mosek.fusion.Expression,int32,int32)')
  @staticmethod
  def hstack(*args):
    if False: pass
    elif mosek_fusion_Expr._match_hstack__3Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._hstack__3Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_hstack__3Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._hstack_alt__3Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_hstack_Lmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._hstack_Lmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_alt_hstack_Lmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._hstack_alt_Lmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_hstack_DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._hstack_DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_hstack_DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._hstack_alt_DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._hstack_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_hstack_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._hstack_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_hstack_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._hstack_alt_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_hstack_DLmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._hstack_DLmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_alt_hstack_DLmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._hstack_alt_DLmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_alt_hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args): 
      return mosek_fusion_Expr._hstack_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args)
    elif mosek_fusion_Expr._match_hstack_Lmosek_4fusion_4Expression_2DD(*args): 
      return mosek_fusion_Expr._hstack_Lmosek_4fusion_4Expression_2DD(*args)
    elif mosek_fusion_Expr._match_alt_hstack_Lmosek_4fusion_4Expression_2DD(*args): 
      return mosek_fusion_Expr._hstack_alt_Lmosek_4fusion_4Expression_2DD(*args)
    elif mosek_fusion_Expr._match_hstack_DDLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._hstack_DDLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_hstack_DDLmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._hstack_alt_DDLmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_hstack_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._hstack_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_hstack_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._hstack_alt_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    elif mosek_fusion_Expr._match_alt_hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args): 
      return mosek_fusion_Expr._hstack_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args)
    else:
      raise ValueError('Invalid argument list hstack('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Expr.hstack(array(mosek.fusion.Expression,ndim=1))\n\tmosek.fusion.Expr.hstack(mosek.fusion.Expression,double)\n\tmosek.fusion.Expr.hstack(double,mosek.fusion.Expression)\n\tmosek.fusion.Expr.hstack(mosek.fusion.Expression,mosek.fusion.Expression)\n\tmosek.fusion.Expr.hstack(mosek.fusion.Expression,double,mosek.fusion.Expression)\n\tmosek.fusion.Expr.hstack(double,mosek.fusion.Expression,double)\n\tmosek.fusion.Expr.hstack(mosek.fusion.Expression,mosek.fusion.Expression,double)\n\tmosek.fusion.Expr.hstack(mosek.fusion.Expression,double,double)\n\tmosek.fusion.Expr.hstack(double,double,mosek.fusion.Expression)\n\tmosek.fusion.Expr.hstack(double,mosek.fusion.Expression,mosek.fusion.Expression)\n\tmosek.fusion.Expr.hstack(mosek.fusion.Expression,mosek.fusion.Expression,mosek.fusion.Expression)')
  def __repr__(self): return 'mosek.fusion.Expr'
  @staticmethod
  def _ctor__3J_3J_3D_3D_3I_3J(ptrb,subj,cof,bfix,shape,inst):
    o = Expr.__new__(Expr)
    o._ctor_init__3J_3J_3D_3D_3I_3J(ptrb,subj,cof,bfix,shape,inst)
    return o
  @staticmethod
  def __match_ctor__3J_3J_3D_3D_3I_3J(*args):
    if len(args) != 6: return False
    ptrb,subj,cof,bfix,shape,inst, = args
    return (__arg_match__3J__(ptrb) and __arg_match__3J__(subj) and __arg_match__3D__(cof) and __arg_match__3D__(bfix) and __arg_match__3I__(shape) and __arg_match__3J__(inst))
  @staticmethod
  def __match_alt_ctor__3J_3J_3D_3D_3I_3J(*args):
    if len(args) != 6: return False
    ptrb,subj,cof,bfix,shape,inst, = args
    return (__arg_alt_match__3J__(ptrb) and __arg_alt_match__3J__(subj) and __arg_alt_match__3D__(cof) and __arg_alt_match__3D__(bfix) and __arg_alt_match__3I__(shape) and __arg_alt_match__3J__(inst))
  def _ctor_alt_init__3J_3J_3D_3D_3I_3J(self,ptrb,subj,cof,bfix,shape,inst):
    self._ctor_init__3J_3J_3D_3D_3I_3J(numpy.array(ptrb,dtype=numpy.dtype(numpy.int64)),numpy.array(subj,dtype=numpy.dtype(numpy.int64)),numpy.array(cof,dtype=numpy.dtype(numpy.float64)),numpy.array(bfix,dtype=numpy.dtype(numpy.float64)),numpy.array(shape,dtype=numpy.dtype(numpy.int32)),numpy.array(inst,dtype=numpy.dtype(numpy.int64)))
  def _ctor_init__3J_3J_3D_3D_3I_3J(self,ptrb,subj,cof,bfix,shape,inst):
   mosek_fusion_Expr._ctor_init__3J_3J_3D_3D_3I_3JI(self,mosek.fusion.Utils.Tools._arraycopy__3J(ptrb),mosek.fusion.Utils.Tools._arraycopy__3J(subj),mosek.fusion.Utils.Tools._arraycopy__3D(cof),mosek.fusion.Utils.Tools._arraycopy__3D(bfix),(mosek.fusion.Utils.Tools._arraycopy__3I(shape) if ((shape is not None) ) else numpy.array([(int((ptrb).shape[0]) - 1)], dtype=numpy.dtype(numpy.int32))),(mosek.fusion.Utils.Tools._arraycopy__3J(inst) if ((inst is not None) ) else None),1)
   _0=(int((ptrb).shape[0]) - 1)
   if (_0 < 0):
    raise mosek_fusion_ExpressionError._ctor_S("Invalid ptrb")
   _1=ptrb[_0]
   if ((_1 < 0) or ((_1!=int((cof).shape[0])) or (_1!=int((subj).shape[0])))):
    raise mosek_fusion_ExpressionError._ctor_S("Invalid ptrb construction")
   _2=True
   _3=True
   _4=True
   _5=(self.__shape)
   _6=mosek.fusion.Set._size__3I(_5)
   for _7 in range(0,int((_5).shape[0])):
    _3 = (_3 and (_5[_7] >= 0))
   for _8 in range(0,_0):
    _2 = (_2 and (ptrb[_8] <= ptrb[(_8 + 1)]))
   if ((inst is not None) and (int((inst).shape[0]) > 0)):
    _4 = ((inst[0] >= 0) and (inst[(_0 - 1)] < _6))
    for _9 in range(0,(_0 - 1)):
     _4 = (_4 and (inst[_9] < inst[(_9 + 1)]))
   if (not _3):
    raise mosek_fusion_ExpressionError._ctor_S("Invalid shape")
   if (not _2):
    raise mosek_fusion_ExpressionError._ctor_S("Invalid ptrb")
   if (not _4):
    raise mosek_fusion_ExpressionError._ctor_S("Invalid sparsity pattern")
  @staticmethod
  def _ctor__3J_3J_3D_3D_3I_3JI(ptrb,subj,cof,bfix,shp,inst,unchecked_):
    o = Expr.__new__(Expr)
    o._ctor_init__3J_3J_3D_3D_3I_3JI(ptrb,subj,cof,bfix,shp,inst,unchecked_)
    return o
  @staticmethod
  def __match_ctor__3J_3J_3D_3D_3I_3JI(*args):
    if len(args) != 7: return False
    ptrb,subj,cof,bfix,shp,inst,unchecked_, = args
    return (__arg_match__3J__(ptrb) and __arg_match__3J__(subj) and __arg_match__3D__(cof) and __arg_match__3D__(bfix) and __arg_match__3I__(shp) and __arg_match__3J__(inst) and __arg_match_I__(unchecked_))
  @staticmethod
  def __match_alt_ctor__3J_3J_3D_3D_3I_3JI(*args):
    if len(args) != 7: return False
    ptrb,subj,cof,bfix,shp,inst,unchecked_, = args
    return (__arg_alt_match__3J__(ptrb) and __arg_alt_match__3J__(subj) and __arg_alt_match__3D__(cof) and __arg_alt_match__3D__(bfix) and __arg_alt_match__3I__(shp) and __arg_alt_match__3J__(inst) and __arg_alt_match_I__(unchecked_))
  def _ctor_alt_init__3J_3J_3D_3D_3I_3JI(self,ptrb,subj,cof,bfix,shp,inst,unchecked_):
    self._ctor_init__3J_3J_3D_3D_3I_3JI(numpy.array(ptrb,dtype=numpy.dtype(numpy.int64)),numpy.array(subj,dtype=numpy.dtype(numpy.int64)),numpy.array(cof,dtype=numpy.dtype(numpy.float64)),numpy.array(bfix,dtype=numpy.dtype(numpy.float64)),numpy.array(shp,dtype=numpy.dtype(numpy.int32)),numpy.array(inst,dtype=numpy.dtype(numpy.int64)),numpy.int32(unchecked_))
  def _ctor_init__3J_3J_3D_3D_3I_3JI(self,ptrb,subj,cof,bfix,shp,inst,unchecked_):
   mosek_fusion_BaseExpression._ctor_init_Lmosek_4fusion_4Model_2_3I(self,None,shp)
   (self.__shape) = shp
   (self.__ptrb) = ptrb
   (self.__subj) = subj
   (self.__cof_v) = cof
   (self.__bfix) = bfix
   (self.__inst) = inst
   if ((self.__shape) is None):
    raise mosek_fusion_UnexpectedError._ctor_S("Internal: NULL shape")
  def __prod_alt__3I(self,_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = self.__prod__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def __prod__3I(self,_0):
   _1=1
   for _2 in range(0,int((_0).shape[0])):
    _1 *= _0[_2]
   return numpy.int32(_1)
  @staticmethod
  def __varstack_alt__3_3Lmosek_4fusion_4Variable_2(_t__0):
   _0=_monty.makeJaggedArray(_t__0,(1,1),numpy.dtype(object))
   _1_res = mosek_fusion_Expr.__varstack__3_3Lmosek_4fusion_4Variable_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __varstack__3_3Lmosek_4fusion_4Variable_2(_0):
   return (numpy.array([_0[_1][_2] for _1 in range(0,int((_0).shape[0])) for _2 in range(0,int((_0[_1]).shape[0]))], dtype=numpy.dtype(object)))
  @staticmethod
  def __varstack_alt__3Lmosek_4fusion_4Variable_2_3Lmosek_4fusion_4Variable_2(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1=numpy.array(_t__1,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Expr.__varstack__3Lmosek_4fusion_4Variable_2_3Lmosek_4fusion_4Variable_2(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __varstack__3Lmosek_4fusion_4Variable_2_3Lmosek_4fusion_4Variable_2(_0,_1):
   if (_0 is None):
    return (_1)
   elif (_1 is None): # bld/grindsted/final/default/src/fusion/Expr.mbi:1870:16-26
    return (_0)
   else:
    _2=numpy.ndarray(((int((_0).shape[0]) + int((_1).shape[0])),), dtype=numpy.dtype(object))
    for _3 in range(0,int((_0).shape[0])):
     _2[_3] = _0[_3]
    for _4 in range(0,int((_1).shape[0])):
     _2[(_4 + int((_0).shape[0]))] = _1[_4]
    return (_2)
  @staticmethod
  def _match_condense_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _match_alt_condense_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _condense_alt_Lmosek_4fusion_4Expression_2(_t__0):
    return mosek_fusion_Expr._condense_Lmosek_4fusion_4Expression_2(_0)
  @staticmethod
  def _condense_Lmosek_4fusion_4Expression_2(_0):
   return (mosek_fusion_ExprCondense._ctor_Lmosek_4fusion_4Expression_2(_0))
  @staticmethod
  def _match_flatten_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _match_alt_flatten_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _flatten_alt_Lmosek_4fusion_4Expression_2(_t__0):
    return mosek_fusion_Expr._flatten_Lmosek_4fusion_4Expression_2(_0)
  @staticmethod
  def _flatten_Lmosek_4fusion_4Expression_2(_0):
   if (_0 is None):
    raise ValueError("Arguments for flatten may not be null")
   _1=_0.getSize()
   if (not (_1 <= 2147483647)):
    raise mosek_fusion_LengthError._ctor_S("Maximum dimension size exceeded")
   return (mosek.fusion.Expr._reshape_Lmosek_4fusion_4Expression_2I(_0,numpy.int32(_1)))
  @staticmethod
  def _match_reshape_Lmosek_4fusion_4Expression_2II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_reshape_Lmosek_4fusion_4Expression_2II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  @staticmethod
  def _reshape_alt_Lmosek_4fusion_4Expression_2II(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._reshape_Lmosek_4fusion_4Expression_2II(_0,numpy.int32(__1),numpy.int32(__2))
  @staticmethod
  def _reshape_Lmosek_4fusion_4Expression_2II(_0,_1,_2):
   if (_0 is None):
    raise ValueError("Arguments for reshape may not be null")
   return (mosek.fusion.Expr._reshape_Lmosek_4fusion_4Expression_2_3I(_0,mosek.fusion.Set._make_II(_1,_2)))
  @staticmethod
  def _match_reshape_Lmosek_4fusion_4Expression_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_reshape_Lmosek_4fusion_4Expression_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _reshape_alt_Lmosek_4fusion_4Expression_2I(_t__0,_t__1):
    return mosek_fusion_Expr._reshape_Lmosek_4fusion_4Expression_2I(_0,numpy.int32(__1))
  @staticmethod
  def _reshape_Lmosek_4fusion_4Expression_2I(_0,_1):
   if (_0 is None):
    raise ValueError("Arguments for reshape may not be null")
   return (mosek.fusion.Expr._reshape_Lmosek_4fusion_4Expression_2_3I(_0,mosek.fusion.Set._make_I(_1)))
  @staticmethod
  def _match_reshape_Lmosek_4fusion_4Expression_2_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_reshape_Lmosek_4fusion_4Expression_2_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _reshape_alt_Lmosek_4fusion_4Expression_2_3I(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Expr._reshape_Lmosek_4fusion_4Expression_2_3I(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _reshape_Lmosek_4fusion_4Expression_2_3I(_0,_1):
   return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(_1,_0))
  @staticmethod
  def _match_zeros__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_zeros__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  @staticmethod
  def _zeros_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Expr._zeros__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _zeros__3I(_0):
   return (mosek.fusion.Expr._constTerm__3ID(_0,0))
  @staticmethod
  def _match_zeros_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_zeros_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  @staticmethod
  def _zeros_alt_I(_t__0):
    return mosek_fusion_Expr._zeros_I(numpy.int32(__0))
  @staticmethod
  def _zeros_I(_0):
   return (mosek.fusion.Expr._constTerm_ID(_0,0))
  @staticmethod
  def _match_ones_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_ones_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _ones_alt_():
    return mosek_fusion_Expr._ones_()
  @staticmethod
  def _ones_():
   return (mosek.fusion.Expr._constTerm_D(1))
  @staticmethod
  def _match_ones__3I_3_5I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match__3_5I__(_1))
  @staticmethod
  def _match_alt_ones__3I_3_5I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3_5I__(_1))
  @staticmethod
  def _ones_alt__3I_3_5I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Expr._ones__3I_3_5I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _ones__3I_3_5I(_0,_1):
   return (mosek.fusion.Expr._constTerm__3I_3_5ID(_0,_1,1))
  @staticmethod
  def _match_ones__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3I__(_0))
  @staticmethod
  def _match_alt_ones__3I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3I__(_0))
  @staticmethod
  def _ones_alt__3I(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Expr._ones__3I(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _ones__3I(_0):
   return (mosek.fusion.Expr._constTerm__3ID(_0,1))
  @staticmethod
  def _match_ones_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_ones_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  @staticmethod
  def _ones_alt_I(_t__0):
    return mosek_fusion_Expr._ones_I(numpy.int32(__0))
  @staticmethod
  def _ones_I(_0):
   return (mosek.fusion.Expr._constTerm_ID(_0,1))
  @staticmethod
  def _match_constTerm_Lmosek_4fusion_4NDSparseArray_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4NDSparseArray_2__(_0))
  @staticmethod
  def _match_alt_constTerm_Lmosek_4fusion_4NDSparseArray_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4NDSparseArray_2__(_0))
  @staticmethod
  def _constTerm_alt_Lmosek_4fusion_4NDSparseArray_2(_t__0):
    return mosek_fusion_Expr._constTerm_Lmosek_4fusion_4NDSparseArray_2(_0)
  @staticmethod
  def _constTerm_Lmosek_4fusion_4NDSparseArray_2(_0):
   return (mosek_fusion_ExprConst._ctor__3I_3J_3D((_0._dims),(_0._inst),(_0._cof)))
  @staticmethod
  def _match_constTerm_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _match_alt_constTerm_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _constTerm_alt_Lmosek_4fusion_4Matrix_2(_t__0):
    return mosek_fusion_Expr._constTerm_Lmosek_4fusion_4Matrix_2(_0)
  @staticmethod
  def _constTerm_Lmosek_4fusion_4Matrix_2(_0):
   _1=_0.numRows()
   _2=_0.numColumns()
   _3=mosek.fusion.Set._make_II(_1,_2)
   if _0.isSparse():
    _4=numpy.zeros((_0.numNonzeros(),), dtype=numpy.dtype(numpy.float64))
    _5=numpy.zeros((_0.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
    _6=numpy.zeros((_0.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
    _0.getDataAsTriplets(_6,_5,_4)
    _7=numpy.array([((_6[_8] * _2) + _5[_8]) for _8 in range(0,int((_5).shape[0]))], dtype=numpy.dtype(numpy.int64))
    return (mosek_fusion_ExprConst._ctor__3I_3J_3D(_3,_7,_4))
   else:
    return (mosek_fusion_ExprConst._ctor__3I_3J_3D(_3,None,_0.getDataAsArray()))
  @staticmethod
  def _match_constTerm_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_D__(_0))
  @staticmethod
  def _match_alt_constTerm_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_D__(_0))
  @staticmethod
  def _constTerm_alt_D(_t__0):
    return mosek_fusion_Expr._constTerm_D(numpy.float64(__0))
  @staticmethod
  def _constTerm_D(_0):
   return (mosek_fusion_ExprConst._ctor__3I_3JD(numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)),None,_0))
  @staticmethod
  def _match_constTerm__3I_3_5ID(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3I__(_0) and __arg_match__3_5I__(_1) and __arg_match_D__(_2))
  @staticmethod
  def _match_alt_constTerm__3I_3_5ID(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3_5I__(_1) and __arg_alt_match_D__(_2))
  @staticmethod
  def _constTerm_alt__3I_3_5ID(_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.int32))
   _2=numpy.float64(_t__2)
   _1_res = mosek_fusion_Expr._constTerm__3I_3_5ID(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _constTerm__3I_3_5ID(_0,_1,_2):
   _3=int((_1).shape[0])
   _4=int((_0).shape[0])
   _5=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int64))
   _6=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int64))
   _6[(_4 - 1)] = 1
   for _7 in range(1,_4):
    _6[((_4 - _7) - 1)] = (_6[(_4 - _7)] * _0[(_4 - _7)])
   for _8 in range(0,_3):
    for _9 in range(0,_4):
     _5[_8] += (_6[_9] * _1[_8,_9])
   return (mosek_fusion_ExprConst._ctor__3I_3JD(_0,_5,_2))
  @staticmethod
  def _match_constTerm__3I_3_5I_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3I__(_0) and __arg_match__3_5I__(_1) and __arg_match__3D__(_2))
  @staticmethod
  def _match_alt_constTerm__3I_3_5I_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3_5I__(_1) and __arg_alt_match__3D__(_2))
  @staticmethod
  def _constTerm_alt__3I_3_5I_3D(_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Expr._constTerm__3I_3_5I_3D(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _constTerm__3I_3_5I_3D(_0,_1,_2):
   _3=int((_1).shape[0])
   _4=int((_0).shape[0])
   _5=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int64))
   _6=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int64))
   _6[(_4 - 1)] = 1
   for _7 in range(1,_4):
    _6[((_4 - _7) - 1)] = (_6[(_4 - _7)] * _0[(_4 - _7)])
   for _8 in range(0,_3):
    for _9 in range(0,_4):
     _5[_8] += (_6[_9] * _1[_8,_9])
   return (mosek_fusion_ExprConst._ctor__3I_3J_3D(_0,_5,_2))
  @staticmethod
  def _match_constTerm__3ID(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3I__(_0) and __arg_match_D__(_1))
  @staticmethod
  def _match_alt_constTerm__3ID(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match_D__(_1))
  @staticmethod
  def _constTerm_alt__3ID(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.float64(_t__1)
   _1_res = mosek_fusion_Expr._constTerm__3ID(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _constTerm__3ID(_0,_1):
   return (mosek_fusion_ExprConst._ctor__3I_3JD(_0,None,_1))
  @staticmethod
  def _match_constTerm_ID(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_D__(_1))
  @staticmethod
  def _match_alt_constTerm_ID(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_D__(_1))
  @staticmethod
  def _constTerm_alt_ID(_t__0,_t__1):
    return mosek_fusion_Expr._constTerm_ID(numpy.int32(__0),numpy.float64(__1))
  @staticmethod
  def _constTerm_ID(_0,_1):
   return (mosek_fusion_ExprConst._ctor__3I_3J_3D(numpy.array([_0], dtype=numpy.dtype(numpy.int32)),None,numpy.array([_1 for _2 in range(0,_0)], dtype=numpy.dtype(numpy.float64))))
  @staticmethod
  def _match_constTerm__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5D__(_0))
  @staticmethod
  def _match_alt_constTerm__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5D__(_0))
  @staticmethod
  def _constTerm_alt__3_5D(_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Expr._constTerm__3_5D(_0)
   return _1_res
  @staticmethod
  def _constTerm__3_5D(_0):
   return (mosek_fusion_ExprConst._ctor__3I_3J_3D(numpy.array([int((_0).shape[0]),int((_0).shape[1])], dtype=numpy.dtype(numpy.int32)),None,numpy.array([_0[_1,_2] for _1 in range(0,int((_0).shape[0])) for _2 in range(0,int((_0).shape[1]))], dtype=numpy.dtype(numpy.float64))))
  @staticmethod
  def _match_constTerm__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_constTerm__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  @staticmethod
  def _constTerm_alt__3D(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Expr._constTerm__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _constTerm__3D(_0):
   return (mosek_fusion_ExprConst._ctor__3I_3J_3D(numpy.array([int((_0).shape[0])], dtype=numpy.dtype(numpy.int32)),None,_0))
  @staticmethod
  def _match_sum_Lmosek_4fusion_4Expression_2_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match__3I__(_1))
  @staticmethod
  def _match_alt_sum_Lmosek_4fusion_4Expression_2_3I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match__3I__(_1))
  @staticmethod
  def _sum_alt_Lmosek_4fusion_4Expression_2_3I(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _1_res = mosek_fusion_Expr._sum_Lmosek_4fusion_4Expression_2_3I(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _sum_Lmosek_4fusion_4Expression_2_3I(_0,_1):
   _2=_0.getShape()
   if ((int((_1).shape[0])==0) or (_1[0] < 0)):
    raise mosek_fusion_DimensionError._ctor_S("Invalid index dimension")
   for _3 in range(1,int((_1).shape[0])):
    if (_1[(_3 - 1)] >= _1[_3]):
     raise mosek_fusion_DimensionError._ctor_S("Unordered dimension indexes")
   if (_1[(int((_1).shape[0]) - 1)] >= int((_2).shape[0])):
    raise mosek_fusion_DimensionError._ctor_S("Unordered dimension indexes")
   _4=int((_2).shape[0])
   _5=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _6=0
   _7=0
   for _8 in range(0,int((_1).shape[0])):
    while (_6 < _1[_8]):
     _5[_7] = _6
     _6 += 1
     _7 += 1
    _6 += 1
   while (_6 < _4):
    _5[_7] = _6
    _6 += 1
    _7 += 1
   for _9 in range(0,int((_1).shape[0])):
    _5[_7] = _1[_9]
    _7 += 1
   return (mosek_fusion_ExprSumReduceEnd._ctor_ILmosek_4fusion_4Expression_2(int((_1).shape[0]),mosek_fusion_ExprPermuteDims._ctor__3ILmosek_4fusion_4Expression_2(_5,_0)))
  @staticmethod
  def _match_sum_Lmosek_4fusion_4Expression_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_sum_Lmosek_4fusion_4Expression_2I(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _sum_alt_Lmosek_4fusion_4Expression_2I(_t__0,_t__1):
    return mosek_fusion_Expr._sum_Lmosek_4fusion_4Expression_2I(_0,numpy.int32(__1))
  @staticmethod
  def _sum_Lmosek_4fusion_4Expression_2I(_0,_1):
   return (mosek_fusion_ExprSumReduce._ctor_ILmosek_4fusion_4Expression_2(_1,_0))
  @staticmethod
  def _match_sum_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _match_alt_sum_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _sum_alt_Lmosek_4fusion_4Expression_2(_t__0):
    return mosek_fusion_Expr._sum_Lmosek_4fusion_4Expression_2(_0)
  @staticmethod
  def _sum_Lmosek_4fusion_4Expression_2(_0):
   return (mosek_fusion_ExprSumReduce._ctor_ILmosek_4fusion_4Expression_2(0,mosek.fusion.Expr._flatten_Lmosek_4fusion_4Expression_2(_0)))
  @staticmethod
  def _match_neg_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _match_alt_neg_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _neg_alt_Lmosek_4fusion_4Expression_2(_t__0):
    return mosek_fusion_Expr._neg_Lmosek_4fusion_4Expression_2(_0)
  @staticmethod
  def _neg_Lmosek_4fusion_4Expression_2(_0):
   return (mosek_fusion_ExprMulScalarConst._ctor_DLmosek_4fusion_4Expression_2((- 1),_0))
  @staticmethod
  def __mulDiag_alt_ZLmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr.__mulDiag_ZLmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1,_2)
  @staticmethod
  def __mulDiag_ZLmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1,_2):
   _3=_1.numNonzeros()
   _4=_1.numRows()
   _5=_1.numColumns()
   _6=numpy.zeros((_3,), dtype=numpy.dtype(numpy.float64))
   _7=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
   _8=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
   _1.getDataAsTriplets(_8,_7,_6)
   if _0:
    return (mosek_fusion_ExprMulDiagLeft._ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(_4,_5,_8,_7,_6,_2))
   else:
    return (mosek_fusion_ExprMulDiagRight._ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(_4,_5,_8,_7,_6,_2))
  @staticmethod
  def _match_mulDiag_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _match_alt_mulDiag_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _mulDiag_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Parameter_2(_t__0,_t__1):
    return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Parameter_2(_0,_1)
  @staticmethod
  def _mulDiag_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Parameter_2(_0,_1):
   return (mosek_fusion_ExprMulParamDiagRight._ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_0.asExpr(),_1))
  @staticmethod
  def _match_mulDiag_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_match_Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _match_alt_mulDiag_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _mulDiag_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Variable_2(_t__0,_t__1):
    return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Variable_2(_0,_1)
  @staticmethod
  def _mulDiag_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Variable_2(_0,_1):
   return (mosek_fusion_ExprMulParamDiagLeft._ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,_1.asExpr()))
  @staticmethod
  def _match_mulDiag_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _match_alt_mulDiag_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _mulDiag_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_t__0,_t__1):
    return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_0,_1)
  @staticmethod
  def _mulDiag_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_0,_1):
   return (mosek_fusion_ExprMulParamDiagRight._ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_0,_1))
  @staticmethod
  def _match_mulDiag_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_mulDiag_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _mulDiag_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _mulDiag_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek_fusion_ExprMulParamDiagLeft._ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,_1))
  @staticmethod
  def _match_mulDiag_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _match_alt_mulDiag_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _mulDiag_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(_t__0,_t__1):
    return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(_0,_1)
  @staticmethod
  def _mulDiag_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(_0,_1):
   return (mosek.fusion.Expr.__mulDiag_ZLmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(False,_1,_0.asExpr()))
  @staticmethod
  def _match_mulDiag_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_match_Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _match_alt_mulDiag_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _mulDiag_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(_t__0,_t__1):
    return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(_0,_1)
  @staticmethod
  def _mulDiag_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(_0,_1):
   return (mosek.fusion.Expr.__mulDiag_ZLmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(True,_0,_1.asExpr()))
  @staticmethod
  def _match_mulDiag_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _match_alt_mulDiag_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _mulDiag_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_t__0,_t__1):
    return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_0,_1)
  @staticmethod
  def _mulDiag_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_0,_1):
   return (mosek.fusion.Expr.__mulDiag_ZLmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(False,_1,_0))
  @staticmethod
  def _match_mulDiag_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_mulDiag_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _mulDiag_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _mulDiag_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__mulDiag_ZLmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(True,_0,_1))
  @staticmethod
  def _match_mulDiag_Lmosek_4fusion_4Variable_2_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match__3_5D__(_1))
  @staticmethod
  def _match_alt_mulDiag_Lmosek_4fusion_4Variable_2_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match__3_5D__(_1))
  @staticmethod
  def _mulDiag_alt_Lmosek_4fusion_4Variable_2_3_5D(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Variable_2_3_5D(_0,_1)
   return _1_res
  @staticmethod
  def _mulDiag_Lmosek_4fusion_4Variable_2_3_5D(_0,_1):
   return (mosek_fusion_ExprMulDiagRight._ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(int((_1).shape[0]),int((_1).shape[1]),numpy.array([_2 for _2 in range(0,int((_1).shape[0])) for _3 in range(0,int((_1).shape[1]))], dtype=numpy.dtype(numpy.int32)),numpy.array([_5 for _4 in range(0,int((_1).shape[0])) for _5 in range(0,int((_1).shape[1]))], dtype=numpy.dtype(numpy.int32)),numpy.array([_1[_6,_7] for _6 in range(0,int((_1).shape[0])) for _7 in range(0,int((_1).shape[1]))], dtype=numpy.dtype(numpy.float64)),_0.asExpr()))
  @staticmethod
  def _match_mulDiag_Lmosek_4fusion_4Expression_2_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match__3_5D__(_1))
  @staticmethod
  def _match_alt_mulDiag_Lmosek_4fusion_4Expression_2_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match__3_5D__(_1))
  @staticmethod
  def _mulDiag_alt_Lmosek_4fusion_4Expression_2_3_5D(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Expr._mulDiag_Lmosek_4fusion_4Expression_2_3_5D(_0,_1)
   return _1_res
  @staticmethod
  def _mulDiag_Lmosek_4fusion_4Expression_2_3_5D(_0,_1):
   return (mosek_fusion_ExprMulDiagRight._ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(int((_1).shape[0]),int((_1).shape[1]),numpy.array([_2 for _2 in range(0,int((_1).shape[0])) for _3 in range(0,int((_1).shape[1]))], dtype=numpy.dtype(numpy.int32)),numpy.array([_5 for _4 in range(0,int((_1).shape[0])) for _5 in range(0,int((_1).shape[1]))], dtype=numpy.dtype(numpy.int32)),numpy.array([_1[_6,_7] for _6 in range(0,int((_1).shape[0])) for _7 in range(0,int((_1).shape[1]))], dtype=numpy.dtype(numpy.float64)),_0))
  @staticmethod
  def _match_mulDiag__3_5DLmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3_5D__(_0) and __arg_match_Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _match_alt_mulDiag__3_5DLmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3_5D__(_0) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _mulDiag_alt__3_5DLmosek_4fusion_4Variable_2(_t__0,_t__1):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = mosek_fusion_Expr._mulDiag__3_5DLmosek_4fusion_4Variable_2(_0,_1)
   return _1_res
  @staticmethod
  def _mulDiag__3_5DLmosek_4fusion_4Variable_2(_0,_1):
   return (mosek_fusion_ExprMulDiagLeft._ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(int((_0).shape[0]),int((_0).shape[1]),numpy.array([_2 for _2 in range(0,int((_0).shape[0])) for _3 in range(0,int((_0).shape[1]))], dtype=numpy.dtype(numpy.int32)),numpy.array([_5 for _4 in range(0,int((_0).shape[0])) for _5 in range(0,int((_0).shape[1]))], dtype=numpy.dtype(numpy.int32)),numpy.array([_0[_6,_7] for _6 in range(0,int((_0).shape[0])) for _7 in range(0,int((_0).shape[1]))], dtype=numpy.dtype(numpy.float64)),_1.asExpr()))
  @staticmethod
  def _match_mulDiag__3_5DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3_5D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_mulDiag__3_5DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3_5D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _mulDiag_alt__3_5DLmosek_4fusion_4Expression_2(_t__0,_t__1):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = mosek_fusion_Expr._mulDiag__3_5DLmosek_4fusion_4Expression_2(_0,_1)
   return _1_res
  @staticmethod
  def _mulDiag__3_5DLmosek_4fusion_4Expression_2(_0,_1):
   return (mosek_fusion_ExprMulDiagLeft._ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(int((_0).shape[0]),int((_0).shape[1]),numpy.array([_2 for _2 in range(0,int((_0).shape[0])) for _3 in range(0,int((_0).shape[1]))], dtype=numpy.dtype(numpy.int32)),numpy.array([_5 for _4 in range(0,int((_0).shape[0])) for _5 in range(0,int((_0).shape[1]))], dtype=numpy.dtype(numpy.int32)),numpy.array([_0[_6,_7] for _6 in range(0,int((_0).shape[0])) for _7 in range(0,int((_0).shape[1]))], dtype=numpy.dtype(numpy.float64)),_1))
  @staticmethod
  def __mulElm_1_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr.__mulElm_1_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def __mulElm_1_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1):
   _2=_1.getShape()
   _3=_1
   if (int((_2).shape[0])==1):
    _2 = numpy.array([_2[0],1], dtype=numpy.dtype(numpy.int32))
    _3 = mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(_2,_1)
   if ((int((_2).shape[0])!=2) or ((_0.numRows()!=_2[0]) or (_0.numColumns()!=_2[1]))):
    raise mosek_fusion_DimensionError._ctor_S("Dimensions of operands do not match")
   _4=_0.numColumns()
   _5=_0.numNonzeros()
   _6=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int32))
   _7=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int32))
   _8=numpy.zeros((_5,), dtype=numpy.dtype(numpy.float64))
   _0.getDataAsTriplets(_6,_7,_8)
   return (mosek_fusion_ExprMulElement._ctor__3D_3JLmosek_4fusion_4Expression_2I(_8,numpy.array([((_6[_9] * _4) + _7[_9]) for _9 in range(0,_5)], dtype=numpy.dtype(numpy.int64)),_3,1))
  @staticmethod
  def __mulElm_1_alt__3DLmosek_4fusion_4Expression_2(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = mosek_fusion_Expr.__mulElm_1__3DLmosek_4fusion_4Expression_2(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __mulElm_1__3DLmosek_4fusion_4Expression_2(_0,_1):
   if ((_0 is None) or (_1 is None)):
    raise ValueError("Arguments for mulElm may not be null")
   if ((_1.getND()==0) and (int((_0).shape[0])==1)):
    return (mosek_fusion_ExprMulScalarConst._ctor_DLmosek_4fusion_4Expression_2(_0[0],_1))
   elif ((_1.getND()!=1) or (_1.getDim(0)!=int((_0).shape[0]))): # bld/grindsted/final/default/src/fusion/Expr.mbi:1634:16-1635:40
    raise mosek_fusion_DimensionError._ctor_S("Dimensions of operands do not match")
   else:
    return (mosek_fusion_ExprMulElement._ctor__3D_3JLmosek_4fusion_4Expression_2(_0,numpy.array([_2 for _2 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.int64)),_1))
  @staticmethod
  def __mulElm_1_alt_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr.__mulElm_1_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def __mulElm_1_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(_0,_1):
   if ((_0 is None) or (_1 is None)):
    raise ValueError("Arguments for mulElm may not be null")
   _2=_1.getShape()
   if (int((_2).shape[0])!=int(((_0._dims)).shape[0])):
    raise mosek_fusion_LengthError._ctor_S("Dimension mismatch")
   for _3 in range(0,int(((_0._dims)).shape[0])):
    if ((_0._dims)[_3]!=_2[_3]):
     raise mosek_fusion_DimensionError._ctor_S("Dimensions of operands do not match")
   return (mosek_fusion_ExprMulElement._ctor__3D_3JLmosek_4fusion_4Expression_2((_0._cof),(_0._inst),_1))
  @staticmethod
  def _match_mul_Lmosek_4fusion_4Expression_2D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_D__(_1))
  @staticmethod
  def _match_alt_mul_Lmosek_4fusion_4Expression_2D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_D__(_1))
  @staticmethod
  def _mul_alt_Lmosek_4fusion_4Expression_2D(_t__0,_t__1):
    return mosek_fusion_Expr._mul_Lmosek_4fusion_4Expression_2D(_0,numpy.float64(__1))
  @staticmethod
  def _mul_Lmosek_4fusion_4Expression_2D(_0,_1):
   return (mosek_fusion_ExprMulScalarConst._ctor_DLmosek_4fusion_4Expression_2(_1,_0))
  @staticmethod
  def _match_mul_DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_mul_DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _mul_alt_DLmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._mul_DLmosek_4fusion_4Expression_2(numpy.float64(__0),_1)
  @staticmethod
  def _mul_DLmosek_4fusion_4Expression_2(_0,_1):
   return (mosek_fusion_ExprMulScalarConst._ctor_DLmosek_4fusion_4Expression_2(_0,_1))
  @staticmethod
  def _match_mul_Lmosek_4fusion_4Expression_2_3D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match__3D__(_1))
  @staticmethod
  def _match_alt_mul_Lmosek_4fusion_4Expression_2_3D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match__3D__(_1))
  @staticmethod
  def _mul_alt_Lmosek_4fusion_4Expression_2_3D(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Expr._mul_Lmosek_4fusion_4Expression_2_3D(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _mul_Lmosek_4fusion_4Expression_2_3D(_0,_1):
   return (mosek.fusion.Expr.__mul_Z_3DLmosek_4fusion_4Expression_2(False,_1,_0))
  @staticmethod
  def _match_mul__3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_mul__3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _mul_alt__3DLmosek_4fusion_4Expression_2(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = mosek_fusion_Expr._mul__3DLmosek_4fusion_4Expression_2(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _mul__3DLmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__mul_Z_3DLmosek_4fusion_4Expression_2(True,_0,_1))
  @staticmethod
  def _match_mul_Lmosek_4fusion_4Expression_2_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match__3_5D__(_1))
  @staticmethod
  def _match_alt_mul_Lmosek_4fusion_4Expression_2_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match__3_5D__(_1))
  @staticmethod
  def _mul_alt_Lmosek_4fusion_4Expression_2_3_5D(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Expr._mul_Lmosek_4fusion_4Expression_2_3_5D(_0,_1)
   return _1_res
  @staticmethod
  def _mul_Lmosek_4fusion_4Expression_2_3_5D(_0,_1):
   return (mosek.fusion.Expr.__mul_Z_3_5DLmosek_4fusion_4Expression_2(False,_1,_0))
  @staticmethod
  def _match_mul__3_5DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3_5D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_mul__3_5DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3_5D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _mul_alt__3_5DLmosek_4fusion_4Expression_2(_t__0,_t__1):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = mosek_fusion_Expr._mul__3_5DLmosek_4fusion_4Expression_2(_0,_1)
   return _1_res
  @staticmethod
  def _mul__3_5DLmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__mul_Z_3_5DLmosek_4fusion_4Expression_2(True,_0,_1))
  @staticmethod
  def _match_mul_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _match_alt_mul_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _mul_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_t__0,_t__1):
    return mosek_fusion_Expr._mul_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_0,_1)
  @staticmethod
  def _mul_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_0,_1):
   return (mosek.fusion.Expr.__mul_ZLmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(False,_1,_0))
  @staticmethod
  def _match_mul_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_mul_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _mul_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._mul_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _mul_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__mul_ZLmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(True,_0,_1))
  @staticmethod
  def __mul_alt_Z_3DLmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _2=_t__2
   _1_res = mosek_fusion_Expr.__mul_Z_3DLmosek_4fusion_4Expression_2(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __mul_Z_3DLmosek_4fusion_4Expression_2(_0,_1,_2):
   _3=int((_1).shape[0])
   _4=_3
   _5=mosek.fusion.Utils.Tools._arraycopy__3D(_1)
   _6=_2.getND()
   if (_6==0):
    return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([_3], dtype=numpy.dtype(numpy.int32)),mosek_fusion_ExprScalarMul._ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2I(_3,1,numpy.array([_7 for _7 in range(0,_3)], dtype=numpy.dtype(numpy.int32)),numpy.array([0 for _8 in range(0,_3)], dtype=numpy.dtype(numpy.int32)),_5,_2,1)))
   elif (_6!=2): # bld/grindsted/final/default/src/fusion/Expr.mbi:1584:16-23
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions")
   elif (_0 and (_2.getDim(0)==int((_1).shape[0]))): # bld/grindsted/final/default/src/fusion/Expr.mbi:1586:21-52
    return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([_2.getDim(1)], dtype=numpy.dtype(numpy.int32)),mosek_fusion_ExprCrossDot._ctor_II_3DLmosek_4fusion_4Expression_2(_3,1,_5,_2)))
   elif (_0 and (_2.getDim(0)==1)): # bld/grindsted/final/default/src/fusion/Expr.mbi:1590:17-42
    return (mosek_fusion_ExprCrossDot._ctor_II_3DLmosek_4fusion_4Expression_2(_3,1,_5,_2))
   elif ((not _0) and (_2.getDim(1)==_3)): # bld/grindsted/final/default/src/fusion/Expr.mbi:1594:17-50
    return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([_2.getDim(0)], dtype=numpy.dtype(numpy.int32)),mosek_fusion_ExprCrossDot._ctor_II_3DLmosek_4fusion_4Expression_2(1,_3,_5,_2)))
   elif ((not _0) and (_2.getDim(1)==1)): # bld/grindsted/final/default/src/fusion/Expr.mbi:1598:17-46
    return (mosek_fusion_ExprCrossDot._ctor_II_3DLmosek_4fusion_4Expression_2(_3,1,_5,mosek_fusion_ExprTranspose._ctor_Lmosek_4fusion_4Expression_2(_2)))
   else:
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand shapes")
  @staticmethod
  def __mul_alt_Z_3_5DLmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2):
   _0=_t__0
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.float64))
   _2=_t__2
   _1_res = mosek_fusion_Expr.__mul_Z_3_5DLmosek_4fusion_4Expression_2(_0,_1,_2)
   return _1_res
  @staticmethod
  def __mul_Z_3_5DLmosek_4fusion_4Expression_2(_0,_1,_2):
   _3=int((_1).shape[0])
   _4=int((_1).shape[1])
   _5=(_3 * _4)
   _6=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int32))
   _7=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int32))
   _8=numpy.zeros((_5,), dtype=numpy.dtype(numpy.float64))
   _9=0
   for _10 in range(0,_3):
    for _11 in range(0,_4):
     _6[_9] = _10
     _7[_9] = _11
     _8[_9] = _1[_10,_11]
     _9 += 1
   _12=_2.getSize()
   _13=_2.getShape()
   if (int((_13).shape[0])==0):
    return (mosek_fusion_ExprScalarMul._ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2I(_3,_4,_6,_7,_8,_2,1))
   elif _0: # bld/grindsted/final/default/src/fusion/Expr.mbi:1540:16-20
    if (int((_13).shape[0])==1):
     return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([_3], dtype=numpy.dtype(numpy.int32)),mosek_fusion_ExprCrossDot._ctor_II_3DLmosek_4fusion_4Expression_2(_3,_4,_8,mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([1,_13[0]], dtype=numpy.dtype(numpy.int32)),_2))))
    elif (int((_13).shape[0])==2): # bld/grindsted/final/default/src/fusion/Expr.mbi:1545:18-34
     return (mosek_fusion_ExprCrossDot._ctor_II_3DLmosek_4fusion_4Expression_2(_3,_4,_8,mosek_fusion_ExprTranspose._ctor_Lmosek_4fusion_4Expression_2(_2)))
    else:
     raise mosek_fusion_DimensionError._ctor_S("Mismatching operand shapes")
   else:
    _14=numpy.zeros((_5,), dtype=numpy.dtype(numpy.float64))
    _15=0
    for _16 in range(0,_4):
     for _17 in range(0,_3):
      _14[_15] = _1[_17,_16]
      _15 += 1
    if (int((_13).shape[0])==1):
     return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([_4], dtype=numpy.dtype(numpy.int32)),mosek_fusion_ExprCrossDot._ctor_II_3DLmosek_4fusion_4Expression_2(_4,_3,_14,mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([1,_13[0]], dtype=numpy.dtype(numpy.int32)),_2))))
    elif (int((_13).shape[0])==2): # bld/grindsted/final/default/src/fusion/Expr.mbi:1567:18-34
     return (mosek_fusion_ExprTranspose._ctor_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprCrossDot._ctor_II_3DLmosek_4fusion_4Expression_2(_4,_3,_14,_2)))
    else:
     raise mosek_fusion_DimensionError._ctor_S("Mismatching operand shapes")
  @staticmethod
  def __mul_alt_ZLmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr.__mul_ZLmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1,_2)
  @staticmethod
  def __mul_ZLmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1,_2):
   _3=_1.numNonzeros()
   _4=_1.numRows()
   _5=_1.numColumns()
   _6=_2.getND()
   if (_6==0):
    _7=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
    _8=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
    _9=numpy.zeros((_3,), dtype=numpy.dtype(numpy.float64))
    _1.getDataAsTriplets(_7,_8,_9)
    return (mosek_fusion_ExprScalarMul._ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(_4,_5,_7,_8,_9,_2))
   if _1.isSparse():
    if (_6==1):
     _10=_2.getShape()
     if _0:
      _11=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
      _12=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
      _13=numpy.zeros((_3,), dtype=numpy.dtype(numpy.float64))
      _1.getDataAsTriplets(_11,_12,_13)
      return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([_4], dtype=numpy.dtype(numpy.int32)),mosek_fusion_ExprCrossDot._ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(_4,_5,_11,_12,_13,mosek.fusion.Expr._transpose_Lmosek_4fusion_4Expression_2(_2))))
     else:
      _14=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
      _15=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
      _16=numpy.zeros((_3,), dtype=numpy.dtype(numpy.float64))
      _1.transpose().getDataAsTriplets(_14,_15,_16)
      return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([_5], dtype=numpy.dtype(numpy.int32)),mosek_fusion_ExprCrossDot._ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(_5,_4,_14,_15,_16,mosek.fusion.Expr._transpose_Lmosek_4fusion_4Expression_2(_2))))
    elif (_6==2): # bld/grindsted/final/default/src/fusion/Expr.mbi:1458:18-25
     if _0:
      _17=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
      _18=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
      _19=numpy.zeros((_3,), dtype=numpy.dtype(numpy.float64))
      _1.getDataAsTriplets(_17,_18,_19)
      return (mosek_fusion_ExprCrossDot._ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(_4,_5,_17,_18,_19,mosek.fusion.Expr._transpose_Lmosek_4fusion_4Expression_2(_2)))
     else:
      _20=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
      _21=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
      _22=numpy.zeros((_3,), dtype=numpy.dtype(numpy.float64))
      _1.transpose().getDataAsTriplets(_20,_21,_22)
      return (mosek.fusion.Expr._transpose_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprCrossDot._ctor_II_3I_3I_3DLmosek_4fusion_4Expression_2(_5,_4,_20,_21,_22,_2)))
    else:
     raise mosek_fusion_DimensionError._ctor_S("Mismatching dimensions for multiplication")
   else:
    if (_6==1):
     _23=_2.getShape()
     if _0:
      return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([_4], dtype=numpy.dtype(numpy.int32)),mosek_fusion_ExprCrossDot._ctor_II_3DLmosek_4fusion_4Expression_2(_4,_5,_1.getDataAsArray(),mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([1,_23[0]], dtype=numpy.dtype(numpy.int32)),_2))))
     else:
      return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([_5], dtype=numpy.dtype(numpy.int32)),mosek_fusion_ExprCrossDot._ctor_II_3DLmosek_4fusion_4Expression_2(_5,_4,_1.transpose().getDataAsArray(),mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([1,_23[0]], dtype=numpy.dtype(numpy.int32)),_2))))
    elif (_6==2): # bld/grindsted/final/default/src/fusion/Expr.mbi:1501:18-25
     if _0:
      return (mosek_fusion_ExprCrossDot._ctor_II_3DLmosek_4fusion_4Expression_2(_4,_5,_1.getDataAsArray(),mosek.fusion.Expr._transpose_Lmosek_4fusion_4Expression_2(_2)))
     else:
      return (mosek.fusion.Expr._transpose_Lmosek_4fusion_4Expression_2(mosek_fusion_ExprCrossDot._ctor_II_3DLmosek_4fusion_4Expression_2(_5,_4,_1.transpose().getDataAsArray(),_2)))
    else:
     raise mosek_fusion_DimensionError._ctor_S("Mismatching dimensions for multiplication")
  @staticmethod
  def _match_mul_Lmosek_4fusion_4Variable_2_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match__3_5D__(_1))
  @staticmethod
  def _match_alt_mul_Lmosek_4fusion_4Variable_2_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match__3_5D__(_1))
  @staticmethod
  def _mul_alt_Lmosek_4fusion_4Variable_2_3_5D(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Expr._mul_Lmosek_4fusion_4Variable_2_3_5D(_0,_1)
   return _1_res
  @staticmethod
  def _mul_Lmosek_4fusion_4Variable_2_3_5D(_0,_1):
   _2=int((_1).shape[0])
   _3=int((_1).shape[1])
   _4=(_2 * _3)
   _5=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _6=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _7=numpy.zeros((_4,), dtype=numpy.dtype(numpy.float64))
   _8=0
   for _9 in range(0,_2):
    for _10 in range(0,_3):
     _5[_8] = _9
     _6[_8] = _10
     _7[_8] = _1[_9,_10]
     _8 += 1
   return (mosek.fusion.Expr.__mul_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(False,_2,_3,_5,_6,_7,_0))
  @staticmethod
  def _match_mul__3_5DLmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3_5D__(_0) and __arg_match_Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _match_alt_mul__3_5DLmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3_5D__(_0) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _mul_alt__3_5DLmosek_4fusion_4Variable_2(_t__0,_t__1):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = mosek_fusion_Expr._mul__3_5DLmosek_4fusion_4Variable_2(_0,_1)
   return _1_res
  @staticmethod
  def _mul__3_5DLmosek_4fusion_4Variable_2(_0,_1):
   _2=int((_0).shape[0])
   _3=int((_0).shape[1])
   _4=(_2 * _3)
   _5=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _6=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _7=numpy.zeros((_4,), dtype=numpy.dtype(numpy.float64))
   _8=0
   for _9 in range(0,_2):
    for _10 in range(0,_3):
     _5[_8] = _9
     _6[_8] = _10
     _7[_8] = _0[_9,_10]
     _8 += 1
   return (mosek.fusion.Expr.__mul_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(True,_2,_3,_5,_6,_7,_1))
  @staticmethod
  def _match_mul_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _match_alt_mul_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _mul_alt_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(_t__0,_t__1):
    return mosek_fusion_Expr._mul_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(_0,_1)
  @staticmethod
  def _mul_Lmosek_4fusion_4Variable_2Lmosek_4fusion_4Matrix_2(_0,_1):
   _2=_1.numRows()
   _3=_1.numColumns()
   _4=numpy.zeros((_1.numNonzeros(),), dtype=numpy.dtype(numpy.float64))
   _5=numpy.zeros((_1.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
   _6=numpy.zeros((_1.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
   _1.getDataAsTriplets(_6,_5,_4)
   return (mosek.fusion.Expr.__mul_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(False,_2,_3,_6,_5,_4,_0))
  @staticmethod
  def _match_mul_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_match_Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _match_alt_mul_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Variable_2__(_1))
  @staticmethod
  def _mul_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(_t__0,_t__1):
    return mosek_fusion_Expr._mul_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(_0,_1)
  @staticmethod
  def _mul_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Variable_2(_0,_1):
   _2=_0.numRows()
   _3=_0.numColumns()
   _4=numpy.zeros((_0.numNonzeros(),), dtype=numpy.dtype(numpy.float64))
   _5=numpy.zeros((_0.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
   _6=numpy.zeros((_0.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
   _0.getDataAsTriplets(_6,_5,_4)
   return (mosek.fusion.Expr.__mul_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(True,_2,_3,_6,_5,_4,_1))
  @staticmethod
  def __mul_alt_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5,_t__6):
   _0=_t__0
   _1=numpy.int32(_t__1)
   _2=numpy.int32(_t__2)
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.int32))
   _4=numpy.array(_t__4,dtype=numpy.dtype(numpy.int32))
   _5=numpy.array(_t__5,dtype=numpy.dtype(numpy.float64))
   _6=_t__6
   _1_res = mosek_fusion_Expr.__mul_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(_0,_1,_2,_3,_4,_5,_6)
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__5[:] = _5
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __mul_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(_0,_1,_2,_3,_4,_5,_6):
   if (_6.getND()==0):
    return (mosek_fusion_ExprMulScalarVar._ctor_II_3I_3I_3DLmosek_4fusion_4Variable_2(_1,_2,_3,_4,_5,_6))
   elif (_6.getND()==1): # bld/grindsted/final/default/src/fusion/Expr.mbi:1335:16-30
    _7=_6.getShape()
    return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([(_1 if (_0 ) else _2)], dtype=numpy.dtype(numpy.int32)),mosek_fusion_ExprMulVar._ctor_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(_0,_1,_2,_3,_4,_5,mosek.fusion.Var._reshape_Lmosek_4fusion_4Variable_2_3I(_6,(numpy.array([_7[0],1], dtype=numpy.dtype(numpy.int32)) if (_0 ) else numpy.array([1,_7[0]], dtype=numpy.dtype(numpy.int32)))))))
   else:
    return (mosek_fusion_ExprMulVar._ctor_ZII_3I_3I_3DLmosek_4fusion_4Variable_2(_0,_1,_2,_3,_4,_5,_6))
  @staticmethod
  def _match_mul_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _match_alt_mul_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _mul_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_t__0,_t__1):
    return mosek_fusion_Expr._mul_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_0,_1)
  @staticmethod
  def _mul_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_0,_1):
   if ((_1.getND()==2) and (_0.getND()==2)):
    return (mosek_fusion_ExprMulParamRight._ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_0,_1))
   elif ((_1.getND()==1) and (_0.getND()==2)): # bld/grindsted/final/default/src/fusion/Expr.mbi:1320:16-52
    return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([_0.getDim(0)], dtype=numpy.dtype(numpy.int32)),mosek_fusion_ExprMulParamRight._ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_0,_1.reshape(numpy.array([_1.getDim(0),1], dtype=numpy.dtype(numpy.int32))))))
   elif ((_1.getND()==2) and (_0.getND()==1)): # bld/grindsted/final/default/src/fusion/Expr.mbi:1322:16-52
    return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([_1.getDim(1)], dtype=numpy.dtype(numpy.int32)),mosek_fusion_ExprMulParamRight._ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([1,_0.getDim(0)], dtype=numpy.dtype(numpy.int32)),_0),_1)))
   elif (_1.getND()==0): # bld/grindsted/final/default/src/fusion/Expr.mbi:1324:16-30
    return (mosek_fusion_ExprMulParamScalar._ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_1,_0))
   elif (_0.getND()==0): # bld/grindsted/final/default/src/fusion/Expr.mbi:1326:16-33
    return (mosek_fusion_ExprMulParamScalarExpr._ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_1,_0))
   else:
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions for multiplication")
  @staticmethod
  def _match_mul_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_mul_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _mul_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._mul_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _mul_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,_1):
   if ((_0.getND()==2) and (_1.getND()==2)):
    return (mosek_fusion_ExprMulParamLeft._ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,_1))
   elif ((_0.getND()==1) and (_1.getND()==2)): # bld/grindsted/final/default/src/fusion/Expr.mbi:1306:16-52
    return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([_1.getDim(1)], dtype=numpy.dtype(numpy.int32)),mosek_fusion_ExprMulParamLeft._ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0.reshape(numpy.array([1,_0.getDim(0)], dtype=numpy.dtype(numpy.int32))),_1)))
   elif ((_0.getND()==2) and (_1.getND()==1)): # bld/grindsted/final/default/src/fusion/Expr.mbi:1308:16-52
    return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([_0.getDim(0)], dtype=numpy.dtype(numpy.int32)),mosek_fusion_ExprMulParamLeft._ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([_1.getDim(0),1], dtype=numpy.dtype(numpy.int32)),_1))))
   elif (_0.getND()==0): # bld/grindsted/final/default/src/fusion/Expr.mbi:1310:16-30
    return (mosek_fusion_ExprMulParamScalar._ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,_1))
   elif (_1.getND()==0): # bld/grindsted/final/default/src/fusion/Expr.mbi:1312:16-33
    return (mosek_fusion_ExprMulParamScalarExpr._ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,_1))
   else:
    raise mosek_fusion_DimensionError._ctor_S("Invalid operand dimensions for multiplication")
  @staticmethod
  def _match_dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _match_alt_dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _dot_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_t__0,_t__1):
    return mosek_fusion_Expr._dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_0,_1)
  @staticmethod
  def _dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_0,_1):
   _2=_0.getShape()
   if ((int((_2).shape[0])!=2) or (((_1._dimi)!=_2[0]) or ((_1._dimj)!=_2[1]))):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand shapes")
   _3=_1.numNonzeros()
   if (not _1.isSparse()):
    return (mosek_fusion_ExprInner._ctor_Lmosek_4fusion_4Expression_2_3J_3D(_0,numpy.array([_4 for _4 in range(0,_3)], dtype=numpy.dtype(numpy.int64)),_1.getDataAsArray()))
   else:
    _5=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
    _6=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
    _7=numpy.zeros((_3,), dtype=numpy.dtype(numpy.float64))
    _8=_1.numColumns()
    _1.getDataAsTriplets(_5,_6,_7)
    return (mosek_fusion_ExprInner._ctor_Lmosek_4fusion_4Expression_2_3J_3D(_0,numpy.array([((_5[_9] * _8) + _6[_9]) for _9 in range(0,int((_5).shape[0]))], dtype=numpy.dtype(numpy.int64)),_7))
  @staticmethod
  def _match_dot_Lmosek_4fusion_4Expression_2_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match__3_5D__(_1))
  @staticmethod
  def _match_alt_dot_Lmosek_4fusion_4Expression_2_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match__3_5D__(_1))
  @staticmethod
  def _dot_alt_Lmosek_4fusion_4Expression_2_3_5D(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Expr._dot_Lmosek_4fusion_4Expression_2_3_5D(_0,_1)
   return _1_res
  @staticmethod
  def _dot_Lmosek_4fusion_4Expression_2_3_5D(_0,_1):
   _2=_0.getShape()
   if (2!=int((_2).shape[0])):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand shapes")
   else:
    if ((_2[0]!=int((_1).shape[0])) or (_2[1]!=int((_1).shape[1]))):
     raise mosek_fusion_DimensionError._ctor_S("Mismatching operand shapes")
   return (mosek_fusion_ExprInner._ctor_Lmosek_4fusion_4Expression_2_3J_3D(_0,numpy.array([_3 for _3 in range(0,(int((_1).shape[0]) * int((_1).shape[1])))], dtype=numpy.dtype(numpy.int64)),numpy.array([_1[_4,_5] for _4 in range(0,int((_1).shape[0])) for _5 in range(0,int((_1).shape[1]))], dtype=numpy.dtype(numpy.float64))))
  @staticmethod
  def _match_dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4NDSparseArray_2__(_1))
  @staticmethod
  def _match_alt_dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4NDSparseArray_2__(_1))
  @staticmethod
  def _dot_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(_t__0,_t__1):
    return mosek_fusion_Expr._dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(_0,_1)
  @staticmethod
  def _dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(_0,_1):
   _2=_0.getShape()
   if (int(((_1._dims)).shape[0])!=int((_2).shape[0])):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching operand shapes")
   else:
    for _3 in range(0,int((_2).shape[0])):
     if ((_1._dims)[_3]!=_2[_3]):
      raise mosek_fusion_DimensionError._ctor_S("Mismatching operand shapes")
   return (mosek_fusion_ExprInner._ctor_Lmosek_4fusion_4Expression_2_3J_3D(_0,(_1._inst),(_1._cof)))
  @staticmethod
  def _match_dot_Lmosek_4fusion_4Expression_2_3D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match__3D__(_1))
  @staticmethod
  def _match_alt_dot_Lmosek_4fusion_4Expression_2_3D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match__3D__(_1))
  @staticmethod
  def _dot_alt_Lmosek_4fusion_4Expression_2_3D(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Expr._dot_Lmosek_4fusion_4Expression_2_3D(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _dot_Lmosek_4fusion_4Expression_2_3D(_0,_1):
   _2=_0.getShape()
   if ((_0.getSize()==int((_1).shape[0])) and (int((_2).shape[0]) > 1)):
    _3=0
    for _4 in range(0,int((_2).shape[0])):
     if (_2[_4] > 1):
      _3 += 1
    if (_3 > 1):
     raise mosek_fusion_DimensionError._ctor_S("Mismatching operand shapes")
    else:
     _5=numpy.array([numpy.int32(_0.getSize())], dtype=numpy.dtype(numpy.int32))
     return (mosek_fusion_ExprInner._ctor_Lmosek_4fusion_4Expression_2_3D(mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(_5,_0),_1))
   else:
    return (mosek_fusion_ExprInner._ctor_Lmosek_4fusion_4Expression_2_3D(_0,_1))
  @staticmethod
  def _match_dot_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_dot_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _dot_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._dot_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _dot_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr._dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_1,_0))
  @staticmethod
  def _match_dot_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4NDSparseArray_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_dot_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4NDSparseArray_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _dot_alt_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._dot_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _dot_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr._dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(_1,_0))
  @staticmethod
  def _match_dot__3_5DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3_5D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_dot__3_5DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3_5D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _dot_alt__3_5DLmosek_4fusion_4Expression_2(_t__0,_t__1):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = mosek_fusion_Expr._dot__3_5DLmosek_4fusion_4Expression_2(_0,_1)
   return _1_res
  @staticmethod
  def _dot__3_5DLmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr._dot_Lmosek_4fusion_4Expression_2_3_5D(_1,_0))
  @staticmethod
  def _match_dot__3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_dot__3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _dot_alt__3DLmosek_4fusion_4Expression_2(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = mosek_fusion_Expr._dot__3DLmosek_4fusion_4Expression_2(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _dot__3DLmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr._dot_Lmosek_4fusion_4Expression_2_3D(_1,_0))
  @staticmethod
  def _match_dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _match_alt_dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _dot_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_t__0,_t__1):
    return mosek_fusion_Expr._dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_0,_1)
  @staticmethod
  def _dot_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_0,_1):
   return (mosek_fusion_ExprDotParam._ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_1,_0))
  @staticmethod
  def _match_dot_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_dot_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _dot_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._dot_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _dot_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek_fusion_ExprDotParam._ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,_1))
  @staticmethod
  def _match_outer_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_outer_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _outer_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._outer_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _outer_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,_1):
   _2=_1.getShape()
   if (not ((int((_2).shape[0])==1) or ((int((_2).shape[0])==2) and (_2[1]==1)))):
    raise mosek_fusion_DimensionError._ctor_S("Expression argument must be one-dimensional")
   _3=_0.getShape()
   if (not ((_0.getND()==1) or ((_0.getND()==2) and (_3[1]==1)))):
    raise mosek_fusion_DimensionError._ctor_S("Parameter argument must be one-dimensional")
   return (mosek.fusion.Expr._mul_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0.reshape(numpy.array([_3[0],1], dtype=numpy.dtype(numpy.int32))),mosek.fusion.Expr._reshape_Lmosek_4fusion_4Expression_2II(_1,1,_2[0])))
  @staticmethod
  def _match_outer_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _match_alt_outer_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _outer_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_t__0,_t__1):
    return mosek_fusion_Expr._outer_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_0,_1)
  @staticmethod
  def _outer_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_0,_1):
   _2=_0.getShape()
   if (not ((_0.getND()==1) or ((_0.getND()==2) and (_2[1]==1)))):
    raise mosek_fusion_DimensionError._ctor_S("Expression argument must be one-dimensional")
   _3=_1.getShape()
   if (not ((_1.getND()==1) or ((_1.getND()==2) and (_3[1]==1)))):
    raise mosek_fusion_DimensionError._ctor_S("Parameter argument must be one-dimensional")
   return (mosek.fusion.Expr._mul_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(mosek.fusion.Expr._reshape_Lmosek_4fusion_4Expression_2II(_0,_2[0],1),_1.reshape(numpy.array([1,_3[0]], dtype=numpy.dtype(numpy.int32)))))
  @staticmethod
  def _match_outer_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_outer_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _outer_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._outer_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _outer_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1):
   _2=_1.getShape()
   if (not ((int((_2).shape[0])==1) or ((int((_2).shape[0])==2) and (_2[1]==1)))):
    raise mosek_fusion_DimensionError._ctor_S("Expression argument must be one-dimensional")
   if ((_0._dimj)!=1):
    raise mosek_fusion_DimensionError._ctor_S("Constant matrix must be a column-vector")
   return (mosek.fusion.Expr._mul_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,mosek.fusion.Expr._reshape_Lmosek_4fusion_4Expression_2II(_1,1,_2[0])))
  @staticmethod
  def _match_outer_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _match_alt_outer_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _outer_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_t__0,_t__1):
    return mosek_fusion_Expr._outer_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_0,_1)
  @staticmethod
  def _outer_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_0,_1):
   _2=_0.getShape()
   if (not ((_0.getND()==1) or ((_0.getND()==2) and (_2[1]==1)))):
    raise mosek_fusion_DimensionError._ctor_S("Expression argument must be one-dimensional")
   if ((_1._dimj)!=1):
    raise mosek_fusion_DimensionError._ctor_S("Constant matrix must be a column-vector")
   return (mosek.fusion.Expr._mul_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(mosek.fusion.Expr._reshape_Lmosek_4fusion_4Expression_2II(_0,_2[0],1),_1.transpose()))
  @staticmethod
  def _match_outer__3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_outer__3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _outer_alt__3DLmosek_4fusion_4Expression_2(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = mosek_fusion_Expr._outer__3DLmosek_4fusion_4Expression_2(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _outer__3DLmosek_4fusion_4Expression_2(_0,_1):
   _2=_1.getShape()
   if (not ((_1.getND()==1) or ((_1.getND()==2) and (_2[1]==1)))):
    raise mosek_fusion_DimensionError._ctor_S("Expression argument must be one-dimensional")
   return (mosek.fusion.Expr._mul_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(mosek.fusion.Matrix._dense_II_3D(int((_0).shape[0]),1,_0),mosek.fusion.Expr._reshape_Lmosek_4fusion_4Expression_2II(_1,1,_2[0])))
  @staticmethod
  def _match_outer_Lmosek_4fusion_4Expression_2_3D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match__3D__(_1))
  @staticmethod
  def _match_alt_outer_Lmosek_4fusion_4Expression_2_3D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match__3D__(_1))
  @staticmethod
  def _outer_alt_Lmosek_4fusion_4Expression_2_3D(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Expr._outer_Lmosek_4fusion_4Expression_2_3D(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _outer_Lmosek_4fusion_4Expression_2_3D(_0,_1):
   _2=_0.getShape()
   if (not ((_0.getND()==1) or ((_0.getND()==2) and (_2[1]==1)))):
    raise mosek_fusion_DimensionError._ctor_S("Expression argument must be one-dimensional")
   return (mosek.fusion.Expr._mul_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(mosek.fusion.Expr._reshape_Lmosek_4fusion_4Expression_2II(_0,_2[0],1),mosek.fusion.Matrix._dense_II_3D(1,int((_1).shape[0]),_1)))
  @staticmethod
  def __outer_1_alt_I_3J_3J_3D_3D_3J_3D_3IIZ(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5,_t__6,_t__7,_t__8,_t__9):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int64))
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.float64))
   _4=numpy.array(_t__4,dtype=numpy.dtype(numpy.float64))
   _5=numpy.array(_t__5,dtype=numpy.dtype(numpy.int64))
   _6=numpy.array(_t__6,dtype=numpy.dtype(numpy.float64))
   _7=numpy.array(_t__7,dtype=numpy.dtype(numpy.int32))
   _8=numpy.int32(_t__8)
   _9=_t__9
   _1_res = mosek_fusion_Expr.__outer_1_I_3J_3J_3D_3D_3J_3D_3IIZ(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__5[:] = _5
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__6[:] = _6
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__7[:] = _7
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __outer_1_I_3J_3J_3D_3D_3J_3D_3IIZ(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9):
   _10=(mosek.fusion.Set._make_II(_0,_8) if ((not _9) ) else mosek.fusion.Set._make_II(_8,_0))
   _11=(int((_6).shape[0]) * int((_5).shape[0]))
   _12=(int((_6).shape[0]) * int((_2).shape[0]))
   _13=numpy.zeros((_11,), dtype=numpy.dtype(numpy.int64))
   _14=(numpy.zeros((_11,), dtype=numpy.dtype(numpy.float64)) if ((_4 is not None) ) else None)
   _15=numpy.zeros((_12,), dtype=numpy.dtype(numpy.float64))
   _16=numpy.zeros((_12,), dtype=numpy.dtype(numpy.int64))
   _17=numpy.zeros(((_11 + 1),), dtype=numpy.dtype(numpy.int64))
   _18=numpy.int32(_17[(int((_17).shape[0]) - 1)])
   if (not _9):
    _19=0
    _20=0
    for _21 in range(0,int((_5).shape[0])):
     _22=(_1[(_21 + 1)] - _1[_21])
     for _23 in range(0,int((_6).shape[0])):
      _5[_19] = ((_5[_21] * _8) + _7[_23])
      _17[(_19 + 1)] = (_17[_19] + _22)
      _19 += 1
      for _24 in range(_1[_21],_1[(_21 + 1)]):
       _16[_20] = _2[_24]
       _15[_20] = (_3[_24] * _6[_23])
       _20 += 1
    if (_14 is not None):
     _25=0
     for _26 in range(0,int((_5).shape[0])):
      for _27 in range(0,int((_6).shape[0])):
       _14[_25] = (_6[_27] * _4[_26])
       _25 += 1
   else:
    _28=0
    _29=0
    for _30 in range(0,int((_6).shape[0])):
     _31=_6[_30]
     mosek.fusion.Utils.Tools._arraycopy__3JJ_3JJJ(_2,0,_16,_29,_18)
     for _32 in range(0,_18):
      _15[(_29 + _32)] = (_3[_32] * _6[_30])
     for _33 in range(0,int((_5).shape[0])):
      _34=(_1[(_33 + 1)] - _1[_33])
      _5[_28] = ((_5[_33] * _8) + _7[_30])
      _17[(_28 + 1)] = (_17[_28] + _34)
      _28 += 1
     _29 += _18
    if (_14 is not None):
     _35=0
     for _36 in range(0,int((_6).shape[0])):
      _37=_6[_36]
      for _38 in range(0,int((_5).shape[0])):
       _14[_35] = (_4[_38] * _37)
       _35 += 1
   return (mosek_fusion_Expr._ctor__3J_3J_3D_3D_3I_3J(_17,_16,_15,_14,_10,_13))
  @staticmethod
  def __outer_1_alt_Lmosek_4fusion_4Variable_2I_3D_3IIZ(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5):
   _0=_t__0
   _1=numpy.int32(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.int32))
   _4=numpy.int32(_t__4)
   _5=_t__5
   _1_res = mosek_fusion_Expr.__outer_1_Lmosek_4fusion_4Variable_2I_3D_3IIZ(_0,_1,_2,_3,_4,_5)
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __outer_1_Lmosek_4fusion_4Variable_2I_3D_3IIZ(_0,_1,_2,_3,_4,_5):
   _6=(mosek.fusion.Set._make_II(_1,_4) if ((not _5) ) else mosek.fusion.Set._make_II(_4,_1))
   _7=(None if ((_4==int((_2).shape[0])) ) else numpy.zeros(((int((_2).shape[0]) * _1),), dtype=numpy.dtype(numpy.int64)))
   _8=numpy.zeros(((int((_2).shape[0]) * _1),), dtype=numpy.dtype(numpy.float64))
   _9=numpy.zeros(((int((_2).shape[0]) * _1),), dtype=numpy.dtype(numpy.float64))
   _10=numpy.zeros(((int((_2).shape[0]) * _1),), dtype=numpy.dtype(numpy.int64))
   _11=numpy.zeros((((int((_2).shape[0]) * _1) + 1),), dtype=numpy.dtype(numpy.int64))
   if (_4==int((_2).shape[0])):
    _12=0
    if (not _5):
     for _13 in range(0,_1):
      for _14 in range(0,_4):
       _11[(_12 + 1)] = (_12 + 1)
       _10[_12] = numpy.int64(_13)
       _9[_12] = _2[_14]
       _12 += 1
    else:
     for _15 in range(0,_4):
      for _16 in range(0,_1):
       _11[(_12 + 1)] = (_12 + 1)
       _10[_12] = numpy.int64(_16)
       _9[_12] = _2[_15]
       _12 += 1
   else:
    _17=0
    if (not _5):
     for _18 in range(0,_1):
      for _19 in range(0,int((_2).shape[0])):
       _11[(_17 + 1)] = (_17 + 1)
       _10[_17] = numpy.int64(_18)
       _9[_17] = _2[_19]
       _7[_17] = ((_18 * _4) + _3[_19])
       _17 += 1
    else:
     for _20 in range(0,int((_2).shape[0])):
      for _21 in range(0,_1):
       _11[(_17 + 1)] = (_17 + 1)
       _10[_17] = numpy.int64(_21)
       _9[_17] = _2[_20]
       _7[_17] = ((_3[_20] * _1) + _21)
       _17 += 1
   return (mosek_fusion_Expr._ctor__3J_3J_3D_3D_3I_3J(_11,_10,_9,_8,_6,_7))
  @staticmethod
  def _match_stack__3_3Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_3Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _match_alt_stack__3_3Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_3Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _stack_alt__3_3Lmosek_4fusion_4Expression_2(_t__0):
   _0=_monty.makeJaggedArray(_t__0,(1,1),numpy.dtype(object))
   _1_res = mosek_fusion_Expr._stack__3_3Lmosek_4fusion_4Expression_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _stack__3_3Lmosek_4fusion_4Expression_2(_0):
   if (_0 is None):
    raise ValueError("Argument exprs may not be null")
   for _1 in range(0,int((_0).shape[0])):
    _2=_0[_1]
    if (_2 is None):
     raise ValueError("Arguments for stack may not be null")
    for _3 in range(0,int((_2).shape[0])):
     if (_2[_3] is None):
      raise ValueError("Arguments for stack may not be null")
   _4=numpy.array([mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(_0[_5],1) for _5 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(object))
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(_4,0))
  @staticmethod
  def _match_vstack_DDD(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_D__(_0) and __arg_match_D__(_1) and __arg_match_D__(_2))
  @staticmethod
  def _match_alt_vstack_DDD(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_D__(_1) and __arg_alt_match_D__(_2))
  @staticmethod
  def _vstack_alt_DDD(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._vstack_DDD(numpy.float64(__0),numpy.float64(__1),numpy.float64(__2))
  @staticmethod
  def _vstack_DDD(_0,_1,_2):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([mosek.fusion.Expr._constTerm_D(_0),mosek.fusion.Expr._constTerm_D(_1),mosek.fusion.Expr._constTerm_D(_2)], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _match_vstack_DDLmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_D__(_0) and __arg_match_D__(_1) and __arg_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _match_alt_vstack_DDLmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_D__(_1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _vstack_alt_DDLmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._vstack_DDLmosek_4fusion_4Expression_2(numpy.float64(__0),numpy.float64(__1),_2)
  @staticmethod
  def _vstack_DDLmosek_4fusion_4Expression_2(_0,_1,_2):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([mosek.fusion.Expr._constTerm_D(_0),mosek.fusion.Expr._constTerm_D(_1),_2], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _match_vstack_DLmosek_4fusion_4Expression_2D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_D__(_2))
  @staticmethod
  def _match_alt_vstack_DLmosek_4fusion_4Expression_2D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_D__(_2))
  @staticmethod
  def _vstack_alt_DLmosek_4fusion_4Expression_2D(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._vstack_DLmosek_4fusion_4Expression_2D(numpy.float64(__0),_1,numpy.float64(__2))
  @staticmethod
  def _vstack_DLmosek_4fusion_4Expression_2D(_0,_1,_2):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([mosek.fusion.Expr._constTerm_D(_0),_1,mosek.fusion.Expr._constTerm_D(_2)], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _match_vstack_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _match_alt_vstack_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _vstack_alt_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._vstack_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(numpy.float64(__0),_1,_2)
  @staticmethod
  def _vstack_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1,_2):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([mosek.fusion.Expr._constTerm_D(_0),_1,_2], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _match_vstack_Lmosek_4fusion_4Expression_2DD(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_D__(_1) and __arg_match_D__(_2))
  @staticmethod
  def _match_alt_vstack_Lmosek_4fusion_4Expression_2DD(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_D__(_1) and __arg_alt_match_D__(_2))
  @staticmethod
  def _vstack_alt_Lmosek_4fusion_4Expression_2DD(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._vstack_Lmosek_4fusion_4Expression_2DD(_0,numpy.float64(__1),numpy.float64(__2))
  @staticmethod
  def _vstack_Lmosek_4fusion_4Expression_2DD(_0,_1,_2):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_0,mosek.fusion.Expr._constTerm_D(_1),mosek.fusion.Expr._constTerm_D(_2)], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _match_vstack_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_D__(_1) and __arg_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _match_alt_vstack_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_D__(_1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _vstack_alt_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._vstack_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(_0,numpy.float64(__1),_2)
  @staticmethod
  def _vstack_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(_0,_1,_2):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_0,mosek.fusion.Expr._constTerm_D(_1),_2], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _match_vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_D__(_2))
  @staticmethod
  def _match_alt_vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_D__(_2))
  @staticmethod
  def _vstack_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(_0,_1,numpy.float64(__2))
  @staticmethod
  def _vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(_0,_1,_2):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_0,_1,mosek.fusion.Expr._constTerm_D(_2)], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _match_vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _match_alt_vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _vstack_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1,_2)
  @staticmethod
  def _vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1,_2):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_0,_1,_2], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _match_vstack_DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_vstack_DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _vstack_alt_DLmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._vstack_DLmosek_4fusion_4Expression_2(numpy.float64(__0),_1)
  @staticmethod
  def _vstack_DLmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([mosek.fusion.Expr._constTerm_D(_0),_1], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _match_vstack_Lmosek_4fusion_4Expression_2D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_D__(_1))
  @staticmethod
  def _match_alt_vstack_Lmosek_4fusion_4Expression_2D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_D__(_1))
  @staticmethod
  def _vstack_alt_Lmosek_4fusion_4Expression_2D(_t__0,_t__1):
    return mosek_fusion_Expr._vstack_Lmosek_4fusion_4Expression_2D(_0,numpy.float64(__1))
  @staticmethod
  def _vstack_Lmosek_4fusion_4Expression_2D(_0,_1):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_0,mosek.fusion.Expr._constTerm_D(_1)], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _match_vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _vstack_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _vstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_0,_1], dtype=numpy.dtype(object)),0))
  @staticmethod
  def _match_vstack__3Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _match_alt_vstack__3Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _vstack_alt__3Lmosek_4fusion_4Expression_2(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Expr._vstack__3Lmosek_4fusion_4Expression_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _vstack__3Lmosek_4fusion_4Expression_2(_0):
   if (_0 is None):
    raise ValueError("Argument exprs may not be null")
   for _1 in range(0,int((_0).shape[0])):
    if (_0[_1] is None):
     raise ValueError("Arguments for vstack may not be null")
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(_0,0))
  @staticmethod
  def _match_hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _match_alt_hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _hstack_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1,_2)
  @staticmethod
  def _hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1,_2):
   if ((_0 is None) or ((_1 is None) or (_2 is None))):
    raise ValueError("Arguments e1, e2 and e3 may not be null")
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_0,_1,_2], dtype=numpy.dtype(object)),1))
  @staticmethod
  def _match_hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_D__(_2))
  @staticmethod
  def _match_alt_hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_D__(_2))
  @staticmethod
  def _hstack_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(_0,_1,numpy.float64(__2))
  @staticmethod
  def _hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(_0,_1,_2):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_0,_1,mosek.fusion.Expr._constTerm_D(_2)], dtype=numpy.dtype(object)),1))
  @staticmethod
  def _match_hstack_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_D__(_1) and __arg_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _match_alt_hstack_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_D__(_1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _hstack_alt_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._hstack_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(_0,numpy.float64(__1),_2)
  @staticmethod
  def _hstack_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(_0,_1,_2):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_0,mosek.fusion.Expr._constTerm_D(_1),_2], dtype=numpy.dtype(object)),1))
  @staticmethod
  def _match_hstack_Lmosek_4fusion_4Expression_2DD(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_D__(_1) and __arg_match_D__(_2))
  @staticmethod
  def _match_alt_hstack_Lmosek_4fusion_4Expression_2DD(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_D__(_1) and __arg_alt_match_D__(_2))
  @staticmethod
  def _hstack_alt_Lmosek_4fusion_4Expression_2DD(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._hstack_Lmosek_4fusion_4Expression_2DD(_0,numpy.float64(__1),numpy.float64(__2))
  @staticmethod
  def _hstack_Lmosek_4fusion_4Expression_2DD(_0,_1,_2):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_0,mosek.fusion.Expr._constTerm_D(_1),mosek.fusion.Expr._constTerm_D(_2)], dtype=numpy.dtype(object)),1))
  @staticmethod
  def _match_hstack_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _match_alt_hstack_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _hstack_alt_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._hstack_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(numpy.float64(__0),_1,_2)
  @staticmethod
  def _hstack_DLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1,_2):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([mosek.fusion.Expr._constTerm_D(_0),_1,_2], dtype=numpy.dtype(object)),1))
  @staticmethod
  def _match_hstack_DLmosek_4fusion_4Expression_2D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_D__(_2))
  @staticmethod
  def _match_alt_hstack_DLmosek_4fusion_4Expression_2D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_D__(_2))
  @staticmethod
  def _hstack_alt_DLmosek_4fusion_4Expression_2D(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._hstack_DLmosek_4fusion_4Expression_2D(numpy.float64(__0),_1,numpy.float64(__2))
  @staticmethod
  def _hstack_DLmosek_4fusion_4Expression_2D(_0,_1,_2):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([mosek.fusion.Expr._constTerm_D(_0),_1,mosek.fusion.Expr._constTerm_D(_2)], dtype=numpy.dtype(object)),1))
  @staticmethod
  def _match_hstack_DDLmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_D__(_0) and __arg_match_D__(_1) and __arg_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _match_alt_hstack_DDLmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_D__(_1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _hstack_alt_DDLmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._hstack_DDLmosek_4fusion_4Expression_2(numpy.float64(__0),numpy.float64(__1),_2)
  @staticmethod
  def _hstack_DDLmosek_4fusion_4Expression_2(_0,_1,_2):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([mosek.fusion.Expr._constTerm_D(_0),mosek.fusion.Expr._constTerm_D(_1),_2], dtype=numpy.dtype(object)),1))
  @staticmethod
  def _match_hstack_DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_hstack_DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _hstack_alt_DLmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._hstack_DLmosek_4fusion_4Expression_2(numpy.float64(__0),_1)
  @staticmethod
  def _hstack_DLmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([mosek.fusion.Expr._constTerm_D(_0),_1], dtype=numpy.dtype(object)),1))
  @staticmethod
  def _match_hstack_Lmosek_4fusion_4Expression_2D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_D__(_1))
  @staticmethod
  def _match_alt_hstack_Lmosek_4fusion_4Expression_2D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_D__(_1))
  @staticmethod
  def _hstack_alt_Lmosek_4fusion_4Expression_2D(_t__0,_t__1):
    return mosek_fusion_Expr._hstack_Lmosek_4fusion_4Expression_2D(_0,numpy.float64(__1))
  @staticmethod
  def _hstack_Lmosek_4fusion_4Expression_2D(_0,_1):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_0,mosek.fusion.Expr._constTerm_D(_1)], dtype=numpy.dtype(object)),1))
  @staticmethod
  def _match_hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _hstack_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _hstack_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_0,_1], dtype=numpy.dtype(object)),1))
  @staticmethod
  def _match_hstack__3Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _match_alt_hstack__3Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _hstack_alt__3Lmosek_4fusion_4Expression_2(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Expr._hstack__3Lmosek_4fusion_4Expression_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _hstack__3Lmosek_4fusion_4Expression_2(_0):
   if (_0 is None):
    raise ValueError("Argument exprs may not be null")
   for _1 in range(0,int((_0).shape[0])):
    if (_0[_1] is None):
     raise ValueError("Arguments for hstack may not be null")
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(_0,1))
  @staticmethod
  def _match_stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_I__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_Lmosek_4fusion_4Expression_2__(_2) and __arg_match_Lmosek_4fusion_4Expression_2__(_3))
  @staticmethod
  def _match_alt_stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_2) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_3))
  @staticmethod
  def _stack_alt_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2,_t__3):
    return mosek_fusion_Expr._stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(numpy.int32(__0),_1,_2,_3)
  @staticmethod
  def _stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1,_2,_3):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_1,_2,_3], dtype=numpy.dtype(object)),_0))
  @staticmethod
  def _match_stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_I__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_Lmosek_4fusion_4Expression_2__(_2) and __arg_match_D__(_3))
  @staticmethod
  def _match_alt_stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_2) and __arg_alt_match_D__(_3))
  @staticmethod
  def _stack_alt_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(_t__0,_t__1,_t__2,_t__3):
    return mosek_fusion_Expr._stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(numpy.int32(__0),_1,_2,numpy.float64(__3))
  @staticmethod
  def _stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2D(_0,_1,_2,_3):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_1,_2,mosek.fusion.Expr._constTerm_D(_3)], dtype=numpy.dtype(object)),_0))
  @staticmethod
  def _match_stack_ILmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_I__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_D__(_2) and __arg_match_Lmosek_4fusion_4Expression_2__(_3))
  @staticmethod
  def _match_alt_stack_ILmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_D__(_2) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_3))
  @staticmethod
  def _stack_alt_ILmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2,_t__3):
    return mosek_fusion_Expr._stack_ILmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(numpy.int32(__0),_1,numpy.float64(__2),_3)
  @staticmethod
  def _stack_ILmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2(_0,_1,_2,_3):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_1,mosek.fusion.Expr._constTerm_D(_2),_3], dtype=numpy.dtype(object)),_0))
  @staticmethod
  def _match_stack_ILmosek_4fusion_4Expression_2DD(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_I__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_D__(_2) and __arg_match_D__(_3))
  @staticmethod
  def _match_alt_stack_ILmosek_4fusion_4Expression_2DD(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_D__(_2) and __arg_alt_match_D__(_3))
  @staticmethod
  def _stack_alt_ILmosek_4fusion_4Expression_2DD(_t__0,_t__1,_t__2,_t__3):
    return mosek_fusion_Expr._stack_ILmosek_4fusion_4Expression_2DD(numpy.int32(__0),_1,numpy.float64(__2),numpy.float64(__3))
  @staticmethod
  def _stack_ILmosek_4fusion_4Expression_2DD(_0,_1,_2,_3):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_1,mosek.fusion.Expr._constTerm_D(_2),mosek.fusion.Expr._constTerm_D(_3)], dtype=numpy.dtype(object)),_0))
  @staticmethod
  def _match_stack_IDLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_I__(_0) and __arg_match_D__(_1) and __arg_match_Lmosek_4fusion_4Expression_2__(_2) and __arg_match_Lmosek_4fusion_4Expression_2__(_3))
  @staticmethod
  def _match_alt_stack_IDLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_D__(_1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_2) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_3))
  @staticmethod
  def _stack_alt_IDLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2,_t__3):
    return mosek_fusion_Expr._stack_IDLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(numpy.int32(__0),numpy.float64(__1),_2,_3)
  @staticmethod
  def _stack_IDLmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1,_2,_3):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([mosek.fusion.Expr._constTerm_D(_1),_2,_3], dtype=numpy.dtype(object)),_0))
  @staticmethod
  def _match_stack_IDLmosek_4fusion_4Expression_2D(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_I__(_0) and __arg_match_D__(_1) and __arg_match_Lmosek_4fusion_4Expression_2__(_2) and __arg_match_D__(_3))
  @staticmethod
  def _match_alt_stack_IDLmosek_4fusion_4Expression_2D(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_D__(_1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_2) and __arg_alt_match_D__(_3))
  @staticmethod
  def _stack_alt_IDLmosek_4fusion_4Expression_2D(_t__0,_t__1,_t__2,_t__3):
    return mosek_fusion_Expr._stack_IDLmosek_4fusion_4Expression_2D(numpy.int32(__0),numpy.float64(__1),_2,numpy.float64(__3))
  @staticmethod
  def _stack_IDLmosek_4fusion_4Expression_2D(_0,_1,_2,_3):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([mosek.fusion.Expr._constTerm_D(_1),_2,mosek.fusion.Expr._constTerm_D(_3)], dtype=numpy.dtype(object)),_0))
  @staticmethod
  def _match_stack_IDDLmosek_4fusion_4Expression_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_I__(_0) and __arg_match_D__(_1) and __arg_match_D__(_2) and __arg_match_Lmosek_4fusion_4Expression_2__(_3))
  @staticmethod
  def _match_alt_stack_IDDLmosek_4fusion_4Expression_2(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_D__(_1) and __arg_alt_match_D__(_2) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_3))
  @staticmethod
  def _stack_alt_IDDLmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2,_t__3):
    return mosek_fusion_Expr._stack_IDDLmosek_4fusion_4Expression_2(numpy.int32(__0),numpy.float64(__1),numpy.float64(__2),_3)
  @staticmethod
  def _stack_IDDLmosek_4fusion_4Expression_2(_0,_1,_2,_3):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([mosek.fusion.Expr._constTerm_D(_1),mosek.fusion.Expr._constTerm_D(_2),_3], dtype=numpy.dtype(object)),_0))
  @staticmethod
  def _match_stack_IDLmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_D__(_1) and __arg_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _match_alt_stack_IDLmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_D__(_1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _stack_alt_IDLmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._stack_IDLmosek_4fusion_4Expression_2(numpy.int32(__0),numpy.float64(__1),_2)
  @staticmethod
  def _stack_IDLmosek_4fusion_4Expression_2(_0,_1,_2):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([mosek.fusion.Expr._constTerm_D(_1),_2], dtype=numpy.dtype(object)),_0))
  @staticmethod
  def _match_stack_ILmosek_4fusion_4Expression_2D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_D__(_2))
  @staticmethod
  def _match_alt_stack_ILmosek_4fusion_4Expression_2D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_D__(_2))
  @staticmethod
  def _stack_alt_ILmosek_4fusion_4Expression_2D(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._stack_ILmosek_4fusion_4Expression_2D(numpy.int32(__0),_1,numpy.float64(__2))
  @staticmethod
  def _stack_ILmosek_4fusion_4Expression_2D(_0,_1,_2):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_1,mosek.fusion.Expr._constTerm_D(_2)], dtype=numpy.dtype(object)),_0))
  @staticmethod
  def _match_stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _match_alt_stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_2))
  @staticmethod
  def _stack_alt_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(numpy.int32(__0),_1,_2)
  @staticmethod
  def _stack_ILmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1,_2):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(numpy.array([_1,_2], dtype=numpy.dtype(object)),_0))
  @staticmethod
  def _match_stack_I_3Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match__3Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_stack_I_3Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _stack_alt_I_3Lmosek_4fusion_4Expression_2(_t__0,_t__1):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Expr._stack_I_3Lmosek_4fusion_4Expression_2(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _stack_I_3Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(_1,_0))
  @staticmethod
  def __stack_1_alt__3Lmosek_4fusion_4Expression_2I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1=numpy.int32(_t__1)
   _1_res = mosek_fusion_Expr.__stack_1__3Lmosek_4fusion_4Expression_2I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __stack_1__3Lmosek_4fusion_4Expression_2I(_0,_1):
   if (int((_0).shape[0])==1):
    return (_0[0])
   else:
    return (mosek_fusion_ExprStack._ctor__3Lmosek_4fusion_4Expression_2I(mosek.fusion.Expr.__promote__3Lmosek_4fusion_4Expression_2I(_0,_1),_1))
  @staticmethod
  def __promote_alt__3Lmosek_4fusion_4Expression_2I(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1=numpy.int32(_t__1)
   _1_res = mosek_fusion_Expr.__promote__3Lmosek_4fusion_4Expression_2I(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __promote__3Lmosek_4fusion_4Expression_2I(_0,_1):
   _2=int((_0).shape[0])
   _3=numpy.array([_0[_4].getND() for _4 in range(0,_2)], dtype=numpy.dtype(numpy.int32))
   _5=_3[0]
   _6=_3[0]
   for _7 in range(1,_2):
    if (_3[_7] < _6):
     _6 = _3[_7]
    if (_3[_7] > _5):
     _5 = _3[_7]
   if (_5 < _1):
    _5 = _1
   if (_6 < _5):
    _8=numpy.ndarray((_2,), dtype=numpy.dtype(object))
    _9=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int32))
    for _10 in range(0,_2):
     if (_0[_10].getND()==_5):
      _8[_10] = _0[_10]
     else:
      _11=_0[_10].getShape()
      for _12 in range(0,int((_11).shape[0])):
       _9[_12] = _11[_12]
      for _13 in range(int((_11).shape[0]),_5):
       _9[_13] = 1
      _8[_10] = mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(_9,_0[_10])
    return (_8)
   else:
    return (_0)
  @staticmethod
  def _match_repeat_Lmosek_4fusion_4Variable_2II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_repeat_Lmosek_4fusion_4Variable_2II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Variable_2__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  @staticmethod
  def _repeat_alt_Lmosek_4fusion_4Variable_2II(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._repeat_Lmosek_4fusion_4Variable_2II(_0,numpy.int32(__1),numpy.int32(__2))
  @staticmethod
  def _repeat_Lmosek_4fusion_4Variable_2II(_0,_1,_2):
   return (mosek.fusion.Expr._repeat_Lmosek_4fusion_4Expression_2II(_0.asExpr(),_1,_2))
  @staticmethod
  def _match_repeat_Lmosek_4fusion_4Expression_2II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_repeat_Lmosek_4fusion_4Expression_2II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2))
  @staticmethod
  def _repeat_alt_Lmosek_4fusion_4Expression_2II(_t__0,_t__1,_t__2):
    return mosek_fusion_Expr._repeat_Lmosek_4fusion_4Expression_2II(_0,numpy.int32(__1),numpy.int32(__2))
  @staticmethod
  def _repeat_Lmosek_4fusion_4Expression_2II(_0,_1,_2):
   if (_1 <= 0):
    raise mosek_fusion_DimensionError._ctor_S("Cannot repeat Expression 0 or less times")
   if ((_2 < 0) or (_2 > _0.getND())):
    raise mosek_fusion_DimensionError._ctor_S("Invalid stacking dimension")
   else:
    if (_2==_0.getND()):
     _3=numpy.zeros(((_2 + 1),), dtype=numpy.dtype(numpy.int32))
     for _4 in range(0,_2):
      _3[_4] = _0.getDim(_4)
     _3[_2] = 1
     return (mosek_fusion_ExprRepeat._ctor_Lmosek_4fusion_4Expression_2II(mosek.fusion.Expr._reshape_Lmosek_4fusion_4Expression_2_3I(_0,_3),_2,_1))
    else:
     return (mosek_fusion_ExprRepeat._ctor_Lmosek_4fusion_4Expression_2II(_0,_2,_1))
  @staticmethod
  def _match_add__3Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _match_alt_add__3Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _add_alt__3Lmosek_4fusion_4Expression_2(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Expr._add__3Lmosek_4fusion_4Expression_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _add__3Lmosek_4fusion_4Expression_2(_0):
   return (mosek_fusion_ExprWSum._ctor__3Lmosek_4fusion_4Expression_2_3D(_0,numpy.array([1.0 for _1 in range(0,int((_0).shape[0]))], dtype=numpy.dtype(numpy.float64))))
  @staticmethod
  def _match_add__3Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3Lmosek_4fusion_4Variable_2__(_0))
  @staticmethod
  def _match_alt_add__3Lmosek_4fusion_4Variable_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Variable_2__(_0))
  @staticmethod
  def _add_alt__3Lmosek_4fusion_4Variable_2(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Expr._add__3Lmosek_4fusion_4Variable_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _add__3Lmosek_4fusion_4Variable_2(_0):
   if (_0 is None):
    raise ValueError("Argument vs may not be null")
   if (int((_0).shape[0])==0):
    return (mosek_fusion_Expr._ctor__3J_3J_3D_3D_3I_3JI(numpy.array([0], dtype=numpy.dtype(numpy.int64)),numpy.zeros((0,), dtype=numpy.dtype(numpy.int64)),numpy.zeros((0,), dtype=numpy.dtype(numpy.float64)),None,mosek.fusion.Set._make_I(0),numpy.zeros((0,), dtype=numpy.dtype(numpy.int64)),1))
   if ((int((_0).shape[0]) > 0) and (_0[0] is None)):
    raise ValueError("Argument vs may contain null")
   _1=_0[0].getND()
   for _2 in range(1,int((_0).shape[0])):
    if (_1 < _0[_2].getND()):
     _1 = _0[_2].getND()
   _3=numpy.zeros((int((_0).shape[0]),_1,), dtype=numpy.dtype(numpy.int32))
   for _4 in range(0,int((_0).shape[0])):
    _5=_0[_4].getShape()
    for _6 in range(0,int((_5).shape[0])):
     _3[_4,_6] = _5[_6]
    for _7 in range(int((_5).shape[0]),_1):
     _3[_4,_7] = 1
   for _8 in range(1,int((_0).shape[0])):
    for _9 in range(0,_1):
     if (_3[0,_9]!=_3[_8,_9]):
      raise mosek_fusion_DimensionError._ctor_S("Mismatching operand dimensions")
   _10=numpy.array([_3[0,_11] for _11 in range(0,_1)], dtype=numpy.dtype(numpy.int32))
   _12=1
   for _13 in range(0,_1):
    _12 *= _10[_13]
   _14=0
   _15=0
   for _16 in range(0,int((_0).shape[0])):
    _17=_0[_16].numInst()
    _14 += _17
    _15 = (_15 if ((_15 > _17) ) else _17)
   _18=numpy.zeros(((_12 + 1),), dtype=numpy.dtype(numpy.int64))
   _19=numpy.zeros((_14,), dtype=numpy.dtype(numpy.int64))
   _20=numpy.array([1.0 for _21 in range(0,_14)], dtype=numpy.dtype(numpy.float64))
   _22=numpy.zeros((_15,), dtype=numpy.dtype(numpy.int64))
   _23=numpy.zeros((_15,), dtype=numpy.dtype(numpy.int64))
   for _24 in range(0,int((_0).shape[0])):
    _25=_0[_24].inst(0,_22,0,_23)
    for _26 in range(0,_25):
     _18[(_22[_26] + 1)] += 1
   for _27 in range(0,_12):
    _18[(_27 + 1)] += _18[_27]
   for _28 in range(0,int((_0).shape[0])):
    _29=_0[_28].inst(0,_22,0,_23)
    for _30 in range(0,_29):
     _19[_18[_22[_30]]] = _23[_30]
     _18[_22[_30]] += 1
   for _31 in range(0,_12):
    _18[(_12 - _31)] = _18[((_12 - _31) - 1)]
   _18[0] = 0
   return (mosek_fusion_Expr._ctor__3J_3J_3D_3D_3I_3JI(_18,_19,_20,numpy.array([0.0 for _32 in range(0,_12)], dtype=numpy.dtype(numpy.float64)),_10,None,1))
  @staticmethod
  def __add_1_alt_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_t__0,_t__1,_t__2,_t__3):
    return mosek_fusion_Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_0,numpy.float64(__1),_2,numpy.float64(__3))
  @staticmethod
  def __add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_0,_1,_2,_3):
   _4=_0.getND()
   _5=_2.getND()
   if (_4==_5):
    return (mosek_fusion_ExprAdd._ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2DD(_0,_2,_1,_3))
   else:
    _6=(_4 if ((_4 > _5) ) else _5)
    _7=numpy.zeros((_6,), dtype=numpy.dtype(numpy.int32))
    if (_4 < _5):
     _8=_0.getShape()
     for _9 in range(0,_4):
      _7[_9] = _8[_9]
     for _10 in range(_4,_6):
      _7[_10] = 1
     return (mosek_fusion_ExprAdd._ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2DD(mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(_7,_0),_2,_1,_3))
    else:
     _11=_2.getShape()
     for _12 in range(0,_5):
      _7[_12] = _11[_12]
     for _13 in range(_5,_6):
      _7[_13] = 1
     return (mosek_fusion_ExprAdd._ctor_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2DD(_0,mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(_7,_2),_1,_3))
  @staticmethod
  def _match_transpose_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _match_alt_transpose_Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0))
  @staticmethod
  def _transpose_alt_Lmosek_4fusion_4Expression_2(_t__0):
    return mosek_fusion_Expr._transpose_Lmosek_4fusion_4Expression_2(_0)
  @staticmethod
  def _transpose_Lmosek_4fusion_4Expression_2(_0):
   if (_0.getND()==0):
    return (_0)
   elif (_0.getND()==1): # bld/grindsted/final/default/src/fusion/Expr.mbi:664:16-30
    return (mosek_fusion_ExprReshape._ctor__3ILmosek_4fusion_4Expression_2(numpy.array([1,_0.getDim(0)], dtype=numpy.dtype(numpy.int32)),_0))
   elif (_0.getND()==2): # bld/grindsted/final/default/src/fusion/Expr.mbi:666:16-30
    return (mosek_fusion_ExprTranspose._ctor_Lmosek_4fusion_4Expression_2(_0))
   else:
    raise mosek_fusion_DimensionError._ctor_S("Incorrect number of dimensions for transpose")
  @staticmethod
  def _match_mulElm_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_mulElm_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _mulElm_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._mulElm_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _mulElm_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__mulElm_1_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1))
  @staticmethod
  def _match_mulElm_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4NDSparseArray_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_mulElm_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4NDSparseArray_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _mulElm_alt_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._mulElm_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _mulElm_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__mulElm_1_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(_0,_1))
  @staticmethod
  def _match_mulElm__3_5DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3_5D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_mulElm__3_5DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3_5D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _mulElm_alt__3_5DLmosek_4fusion_4Expression_2(_t__0,_t__1):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = mosek_fusion_Expr._mulElm__3_5DLmosek_4fusion_4Expression_2(_0,_1)
   return _1_res
  @staticmethod
  def _mulElm__3_5DLmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__mulElm_1_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(mosek.fusion.Matrix._dense__3_5D(_0),_1))
  @staticmethod
  def _match_mulElm__3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_mulElm__3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _mulElm_alt__3DLmosek_4fusion_4Expression_2(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = mosek_fusion_Expr._mulElm__3DLmosek_4fusion_4Expression_2(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _mulElm__3DLmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__mulElm_1__3DLmosek_4fusion_4Expression_2(_0,_1))
  @staticmethod
  def _match_mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _match_alt_mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _mulElm_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_t__0,_t__1):
    return mosek_fusion_Expr._mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_0,_1)
  @staticmethod
  def _mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_0,_1):
   return (mosek.fusion.Expr.__mulElm_1_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_1,_0))
  @staticmethod
  def _match_mulElm_Lmosek_4fusion_4Expression_2_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match__3_5D__(_1))
  @staticmethod
  def _match_alt_mulElm_Lmosek_4fusion_4Expression_2_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match__3_5D__(_1))
  @staticmethod
  def _mulElm_alt_Lmosek_4fusion_4Expression_2_3_5D(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Expr._mulElm_Lmosek_4fusion_4Expression_2_3_5D(_0,_1)
   return _1_res
  @staticmethod
  def _mulElm_Lmosek_4fusion_4Expression_2_3_5D(_0,_1):
   return (mosek.fusion.Expr.__mulElm_1_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(mosek.fusion.Matrix._dense__3_5D(_1),_0))
  @staticmethod
  def _match_mulElm_Lmosek_4fusion_4Expression_2_3D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match__3D__(_1))
  @staticmethod
  def _match_alt_mulElm_Lmosek_4fusion_4Expression_2_3D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match__3D__(_1))
  @staticmethod
  def _mulElm_alt_Lmosek_4fusion_4Expression_2_3D(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Expr._mulElm_Lmosek_4fusion_4Expression_2_3D(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _mulElm_Lmosek_4fusion_4Expression_2_3D(_0,_1):
   return (mosek.fusion.Expr.__mulElm_1__3DLmosek_4fusion_4Expression_2(_1,_0))
  @staticmethod
  def _match_mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4NDSparseArray_2__(_1))
  @staticmethod
  def _match_alt_mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4NDSparseArray_2__(_1))
  @staticmethod
  def _mulElm_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(_t__0,_t__1):
    return mosek_fusion_Expr._mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(_0,_1)
  @staticmethod
  def _mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(_0,_1):
   return (mosek.fusion.Expr.__mulElm_1_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(_1,_0))
  @staticmethod
  def _match_mulElm_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_mulElm_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Parameter_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _mulElm_alt_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._mulElm_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _mulElm_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek_fusion_ExprMulParamElem._ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_0,_1))
  @staticmethod
  def _match_mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _match_alt_mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Parameter_2__(_1))
  @staticmethod
  def _mulElm_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_t__0,_t__1):
    return mosek_fusion_Expr._mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_0,_1)
  @staticmethod
  def _mulElm_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Parameter_2(_0,_1):
   return (mosek_fusion_ExprMulParamElem._ctor_Lmosek_4fusion_4Parameter_2Lmosek_4fusion_4Expression_2(_1,_0))
  @staticmethod
  def _match_sub_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4NDSparseArray_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_sub_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4NDSparseArray_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _sub_alt_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._sub_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _sub_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(mosek.fusion.Expr._constTerm_Lmosek_4fusion_4NDSparseArray_2(_0),1.0,_1,(- 1.0)))
  @staticmethod
  def _match_sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4NDSparseArray_2__(_1))
  @staticmethod
  def _match_alt_sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4NDSparseArray_2__(_1))
  @staticmethod
  def _sub_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(_t__0,_t__1):
    return mosek_fusion_Expr._sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(_0,_1)
  @staticmethod
  def _sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_0,1.0,mosek.fusion.Expr._constTerm_Lmosek_4fusion_4NDSparseArray_2(_1),(- 1.0)))
  @staticmethod
  def _match_sub_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_sub_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _sub_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._sub_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _sub_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(mosek.fusion.Expr._constTerm_Lmosek_4fusion_4Matrix_2(_0),1.0,_1,(- 1.0)))
  @staticmethod
  def _match_sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _match_alt_sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _sub_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_t__0,_t__1):
    return mosek_fusion_Expr._sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_0,_1)
  @staticmethod
  def _sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_0,1.0,mosek.fusion.Expr._constTerm_Lmosek_4fusion_4Matrix_2(_1),(- 1.0)))
  @staticmethod
  def _match_sub_DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_sub_DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _sub_alt_DLmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._sub_DLmosek_4fusion_4Expression_2(numpy.float64(__0),_1)
  @staticmethod
  def _sub_DLmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(mosek.fusion.Expr._constTerm__3ID(_1.getShape(),_0),1.0,_1,(- 1.0)))
  @staticmethod
  def _match_sub_Lmosek_4fusion_4Expression_2D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_D__(_1))
  @staticmethod
  def _match_alt_sub_Lmosek_4fusion_4Expression_2D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_D__(_1))
  @staticmethod
  def _sub_alt_Lmosek_4fusion_4Expression_2D(_t__0,_t__1):
    return mosek_fusion_Expr._sub_Lmosek_4fusion_4Expression_2D(_0,numpy.float64(__1))
  @staticmethod
  def _sub_Lmosek_4fusion_4Expression_2D(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_0,1.0,mosek.fusion.Expr._constTerm__3ID(_0.getShape(),_1),(- 1.0)))
  @staticmethod
  def _match_sub__3_5DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3_5D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_sub__3_5DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3_5D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _sub_alt__3_5DLmosek_4fusion_4Expression_2(_t__0,_t__1):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = mosek_fusion_Expr._sub__3_5DLmosek_4fusion_4Expression_2(_0,_1)
   return _1_res
  @staticmethod
  def _sub__3_5DLmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(mosek.fusion.Expr._constTerm__3_5D(_0),1.0,_1,(- 1.0)))
  @staticmethod
  def _match_sub__3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_sub__3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _sub_alt__3DLmosek_4fusion_4Expression_2(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = mosek_fusion_Expr._sub__3DLmosek_4fusion_4Expression_2(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _sub__3DLmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(mosek.fusion.Expr._constTerm__3D(_0),1.0,_1,(- 1.0)))
  @staticmethod
  def _match_sub_Lmosek_4fusion_4Expression_2_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match__3_5D__(_1))
  @staticmethod
  def _match_alt_sub_Lmosek_4fusion_4Expression_2_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match__3_5D__(_1))
  @staticmethod
  def _sub_alt_Lmosek_4fusion_4Expression_2_3_5D(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Expr._sub_Lmosek_4fusion_4Expression_2_3_5D(_0,_1)
   return _1_res
  @staticmethod
  def _sub_Lmosek_4fusion_4Expression_2_3_5D(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_0,1.0,mosek.fusion.Expr._constTerm__3_5D(_1),(- 1.0)))
  @staticmethod
  def _match_sub_Lmosek_4fusion_4Expression_2_3D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match__3D__(_1))
  @staticmethod
  def _match_alt_sub_Lmosek_4fusion_4Expression_2_3D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match__3D__(_1))
  @staticmethod
  def _sub_alt_Lmosek_4fusion_4Expression_2_3D(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Expr._sub_Lmosek_4fusion_4Expression_2_3D(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _sub_Lmosek_4fusion_4Expression_2_3D(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_0,1.0,mosek.fusion.Expr._constTerm__3D(_1),(- 1.0)))
  @staticmethod
  def _match_sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _sub_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _sub_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_0,1.0,_1,(- 1.0)))
  @staticmethod
  def _match_add_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4NDSparseArray_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_add_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4NDSparseArray_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _add_alt_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._add_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _add_Lmosek_4fusion_4NDSparseArray_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_1,1.0,mosek.fusion.Expr._constTerm_Lmosek_4fusion_4NDSparseArray_2(_0),1.0))
  @staticmethod
  def _match_add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4NDSparseArray_2__(_1))
  @staticmethod
  def _match_alt_add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4NDSparseArray_2__(_1))
  @staticmethod
  def _add_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(_t__0,_t__1):
    return mosek_fusion_Expr._add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(_0,_1)
  @staticmethod
  def _add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4NDSparseArray_2(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_0,1.0,mosek.fusion.Expr._constTerm_Lmosek_4fusion_4NDSparseArray_2(_1),1.0))
  @staticmethod
  def _match_add_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_add_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _add_alt_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._add_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _add_Lmosek_4fusion_4Matrix_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_1,1.0,mosek.fusion.Expr._constTerm_Lmosek_4fusion_4Matrix_2(_0),1.0))
  @staticmethod
  def _match_add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _match_alt_add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _add_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_t__0,_t__1):
    return mosek_fusion_Expr._add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_0,_1)
  @staticmethod
  def _add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Matrix_2(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_0,1.0,mosek.fusion.Expr._constTerm_Lmosek_4fusion_4Matrix_2(_1),1.0))
  @staticmethod
  def _match_add_DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_add_DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _add_alt_DLmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._add_DLmosek_4fusion_4Expression_2(numpy.float64(__0),_1)
  @staticmethod
  def _add_DLmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_1,1.0,mosek.fusion.Expr._constTerm__3ID(_1.getShape(),_0),1.0))
  @staticmethod
  def _match_add_Lmosek_4fusion_4Expression_2D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_D__(_1))
  @staticmethod
  def _match_alt_add_Lmosek_4fusion_4Expression_2D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_D__(_1))
  @staticmethod
  def _add_alt_Lmosek_4fusion_4Expression_2D(_t__0,_t__1):
    return mosek_fusion_Expr._add_Lmosek_4fusion_4Expression_2D(_0,numpy.float64(__1))
  @staticmethod
  def _add_Lmosek_4fusion_4Expression_2D(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_0,1.0,mosek.fusion.Expr._constTerm__3ID(_0.getShape(),_1),1.0))
  @staticmethod
  def _match_add__3_5DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3_5D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_add__3_5DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3_5D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _add_alt__3_5DLmosek_4fusion_4Expression_2(_t__0,_t__1):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = mosek_fusion_Expr._add__3_5DLmosek_4fusion_4Expression_2(_0,_1)
   return _1_res
  @staticmethod
  def _add__3_5DLmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_1,1.0,mosek.fusion.Expr._constTerm__3_5D(_0),1.0))
  @staticmethod
  def _match_add__3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_add__3DLmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _add_alt__3DLmosek_4fusion_4Expression_2(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=_t__1
   _1_res = mosek_fusion_Expr._add__3DLmosek_4fusion_4Expression_2(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _add__3DLmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_1,1.0,mosek.fusion.Expr._constTerm__3D(_0),1.0))
  @staticmethod
  def _match_add_Lmosek_4fusion_4Expression_2_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match__3_5D__(_1))
  @staticmethod
  def _match_alt_add_Lmosek_4fusion_4Expression_2_3_5D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match__3_5D__(_1))
  @staticmethod
  def _add_alt_Lmosek_4fusion_4Expression_2_3_5D(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Expr._add_Lmosek_4fusion_4Expression_2_3_5D(_0,_1)
   return _1_res
  @staticmethod
  def _add_Lmosek_4fusion_4Expression_2_3_5D(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_0,1.0,mosek.fusion.Expr._constTerm__3_5D(_1),1.0))
  @staticmethod
  def _match_add_Lmosek_4fusion_4Expression_2_3D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match__3D__(_1))
  @staticmethod
  def _match_alt_add_Lmosek_4fusion_4Expression_2_3D(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match__3D__(_1))
  @staticmethod
  def _add_alt_Lmosek_4fusion_4Expression_2_3D(_t__0,_t__1):
   _0=_t__0
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Expr._add_Lmosek_4fusion_4Expression_2_3D(_0,_1)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _add_Lmosek_4fusion_4Expression_2_3D(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_0,1.0,mosek.fusion.Expr._constTerm__3D(_1),1.0))
  @staticmethod
  def _match_add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _match_alt_add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_Lmosek_4fusion_4Expression_2__(_0) and __arg_alt_match_Lmosek_4fusion_4Expression_2__(_1))
  @staticmethod
  def _add_alt_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_t__0,_t__1):
    return mosek_fusion_Expr._add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1)
  @staticmethod
  def _add_Lmosek_4fusion_4Expression_2Lmosek_4fusion_4Expression_2(_0,_1):
   return (mosek.fusion.Expr.__add_1_Lmosek_4fusion_4Expression_2DLmosek_4fusion_4Expression_2D(_0,1.0,_1,1.0))
  @staticmethod
  def _match_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_1) and __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_2) and __arg_alt_match_Z__(_3))
  def _eval_alt_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_t__0,_t__1,_t__2,_t__3):
    return self._eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(_0,_1,_2,_3)
  def _eval_Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Lmosek_4fusion_4WorkStack_2Z(self,_0,_1,_2,_3):
   _4=(int((self.__ptrb).shape[0]) - 1)
   _5=numpy.int32(self.__ptrb[_4])
   _6=True
   for _7 in range(0,_4):
    _6 = (_6 and ((self.__bfix[_7] <= 0.0) and (self.__bfix[_7] >= 0.0)))
   if (not _6):
    _5 += _4
   _8=int((self.__shape).shape[0])
   _0.alloc_expr(_8,_4,_5,(self.__inst is not None))
   _9=(_0.ptr_base)
   _10=(_0.nidxs_base)
   _11=(_0.sp_base)
   _12=(_0.cof_base)
   _13=(_0.shape_base)
   _14=(_0.i32)
   _15=(_0.i64)
   _16=(_0.f64)
   for _17 in range(0,_8):
    _14[(_13 + _17)] = self.__shape[_17]
   _14[_9] = 0
   _18=0
   for _19 in range(0,_4):
    for _20 in range(self.__ptrb[_19],self.__ptrb[(_19 + 1)]):
     _15[(_10 + _18)] = self.__subj[_20]
     _16[(_12 + _18)] = self.__cof_v[_20]
     _18 += 1
    if (not _6):
     _15[(_10 + _18)] = 0
     _16[(_12 + _18)] = self.__bfix[_19]
     _18 += 1
    _14[((_9 + _19) + 1)] = _18
  @staticmethod
  def __validateData_alt__3J_3J_3D_3D_3I_3J(_t__0,_t__1,_t__2,_t__3,_t__4,_t__5):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int64))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.float64))
   _4=numpy.array(_t__4,dtype=numpy.dtype(numpy.int32))
   _5=numpy.array(_t__5,dtype=numpy.dtype(numpy.int64))
   _1_res = mosek_fusion_Expr.__validateData__3J_3J_3D_3D_3I_3J(_0,_1,_2,_3,_4,_5)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__5[:] = _5
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __validateData__3J_3J_3D_3D_3I_3J(_0,_1,_2,_3,_4,_5):
   if (_4 is None):
    raise mosek_fusion_ExpressionError._ctor_S("Array 'shape' in expression is null")
   _6=(int((_0).shape[0]) - 1)
   _7=_0[(int((_0).shape[0]) - 1)]
   _8=int((_4).shape[0])
   _9=1
   for _10 in range(0,_8):
    _9 *= _4[_10]
   if (int((_0).shape[0]) < 1):
    raise mosek_fusion_ExpressionError._ctor_S("Array 'ptrb' in expression has wrong size")
   if (_7!=int((_1).shape[0])):
    raise mosek_fusion_ExpressionError._ctor_S("Array 'subj' in expression has wrong size")
   if (_7!=int((_2).shape[0])):
    raise mosek_fusion_ExpressionError._ctor_S("Array 'cof' in expression has wrong size")
   if ((_3 is None) or (_6!=int((_3).shape[0]))):
    raise mosek_fusion_ExpressionError._ctor_S("Array 'bfix' in expression has wrong length")
   if ((_5 is not None) and (int((_5).shape[0]) < _9)):
    if (int((_5).shape[0])!=(int((_0).shape[0]) - 1)):
     raise mosek_fusion_ExpressionError._ctor_S("Array 'inst' in expression has wrong length")
    if (int((_5).shape[0]) > 0):
     if ((_5[0] < 0) or (_5[0] >= _9)):
      raise mosek_fusion_ExpressionError._ctor_S("Array 'inst' contains an invalid index")
     _11=True
     _12=_9
     for _13 in range(1,int((_5).shape[0])):
      _11 = (_11 and ((_5[_13] >= 0) and ((_5[_13] < _12) and (_5[_13] > _5[(_13 - 1)]))))
     if (not _11):
      raise mosek_fusion_ExpressionError._ctor_S("Invalid array 'inst'")
   else:
    if (_9!=(int((_0).shape[0]) - 1)):
     raise mosek_fusion_ExpressionError._ctor_S("Array 'ptrb' in expression has wrong length")
   _14=False
   _15=False
   if (_0[0]!=0):
    raise mosek_fusion_ExpressionError._ctor_S("Invalid 'ptrb' argument in expression")
   _16=True
   for _17 in range(0,_6):
    _16 = (_16 and (_0[_17] <= _0[(_17 + 1)]))
   if (not _16):
    raise mosek_fusion_ExpressionError._ctor_S("Invalid 'ptrb' argument in expression")
  @staticmethod
  def __extractModel_alt__3Lmosek_4fusion_4Variable_2(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Expr.__extractModel__3Lmosek_4fusion_4Variable_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def __extractModel__3Lmosek_4fusion_4Variable_2(_0):
   return ((None if (((_0 is None) or (int((_0).shape[0])==0)) ) else _0[0].getModel()))
 return Expr
mosek_fusion_Expr=__mk_mosek_fusion_Expr()
del __mk_mosek_fusion_Expr
def __mk_mosek_fusion_WorkStack():
 class WorkStack(object):
  __slots__ = ['code_base','cconst_base','codeptr_base','cof_base','nidxs_base','sp_base','shape_base','ptr_base','hassp','ncodeatom','nelem','nnz','nd','pf64','pi64','pi32','f64','i64','i32']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_(*args): 
      self._ctor_init_(*args)
    elif self.__match_alt_ctor_(*args):
      self._ctor_alt_init_(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.WorkStack.ctor()')
  def formatCurrent(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_formatCurrent_(*args): 
      return self._formatCurrent_(*args)
    elif mosek_fusion_WorkStack._match_alt_formatCurrent_(*args): 
      return self._formatCurrent_alt_(*args)
    else:
      raise ValueError('Invalid argument list formatCurrent('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.formatCurrent()')
  def copy_expr(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_copy_1expr_Lmosek_4fusion_4WorkStack_2(*args): 
      return self._copy_1expr_Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_WorkStack._match_alt_copy_1expr_Lmosek_4fusion_4WorkStack_2(*args): 
      return self._copy_1expr_alt_Lmosek_4fusion_4WorkStack_2(*args)
    else:
      raise ValueError('Invalid argument list copy_expr('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.copy_expr(mosek.fusion.WorkStack)')
  def ensure_sparsity(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_ensure_1sparsity_(*args): 
      return self._ensure_1sparsity_(*args)
    elif mosek_fusion_WorkStack._match_alt_ensure_1sparsity_(*args): 
      return self._ensure_1sparsity_alt_(*args)
    else:
      raise ValueError('Invalid argument list ensure_sparsity('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.ensure_sparsity()')
  def allocf64(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_allocf64_I(*args): 
      return self._allocf64_I(*args)
    elif mosek_fusion_WorkStack._match_alt_allocf64_I(*args): 
      return self._allocf64_alt_I(*args)
    else:
      raise ValueError('Invalid argument list allocf64('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.allocf64(int32)')
  def peek_nnz(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_peek_1nnz_(*args): 
      return self._peek_1nnz_(*args)
    elif mosek_fusion_WorkStack._match_alt_peek_1nnz_(*args): 
      return self._peek_1nnz_alt_(*args)
    else:
      raise ValueError('Invalid argument list peek_nnz('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.peek_nnz()')
  def alloc_expr(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_alloc_1expr_IIIZ(*args): 
      return self._alloc_1expr_IIIZ(*args)
    elif mosek_fusion_WorkStack._match_alt_alloc_1expr_IIIZ(*args): 
      return self._alloc_1expr_alt_IIIZ(*args)
    elif mosek_fusion_WorkStack._match_alloc_1expr_IIIZI(*args): 
      return self._alloc_1expr_IIIZI(*args)
    elif mosek_fusion_WorkStack._match_alt_alloc_1expr_IIIZI(*args): 
      return self._alloc_1expr_alt_IIIZI(*args)
    else:
      raise ValueError('Invalid argument list alloc_expr('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.alloc_expr(int32,int32,int32,bool)\n\tmosek.fusion.WorkStack.alloc_expr(int32,int32,int32,bool,int32)')
  def peeki32(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_peeki32_(*args): 
      return self._peeki32_(*args)
    elif mosek_fusion_WorkStack._match_alt_peeki32_(*args): 
      return self._peeki32_alt_(*args)
    elif mosek_fusion_WorkStack._match_peeki32_I(*args): 
      return self._peeki32_I(*args)
    elif mosek_fusion_WorkStack._match_alt_peeki32_I(*args): 
      return self._peeki32_alt_I(*args)
    else:
      raise ValueError('Invalid argument list peeki32('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.peeki32()\n\tmosek.fusion.WorkStack.peeki32(int32)')
  def ensurei64(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_ensurei64_I(*args): 
      return self._ensurei64_I(*args)
    elif mosek_fusion_WorkStack._match_alt_ensurei64_I(*args): 
      return self._ensurei64_alt_I(*args)
    else:
      raise ValueError('Invalid argument list ensurei64('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.ensurei64(int32)')
  def clear(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_clear_(*args): 
      return self._clear_(*args)
    elif mosek_fusion_WorkStack._match_alt_clear_(*args): 
      return self._clear_alt_(*args)
    else:
      raise ValueError('Invalid argument list clear('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.clear()')
  def ensuref64(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_ensuref64_I(*args): 
      return self._ensuref64_I(*args)
    elif mosek_fusion_WorkStack._match_alt_ensuref64_I(*args): 
      return self._ensuref64_alt_I(*args)
    else:
      raise ValueError('Invalid argument list ensuref64('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.ensuref64(int32)')
  def peek_nd(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_peek_1nd_(*args): 
      return self._peek_1nd_(*args)
    elif mosek_fusion_WorkStack._match_alt_peek_1nd_(*args): 
      return self._peek_1nd_alt_(*args)
    else:
      raise ValueError('Invalid argument list peek_nd('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.peek_nd()')
  def pushi32(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_pushi32_I(*args): 
      return self._pushi32_I(*args)
    elif mosek_fusion_WorkStack._match_alt_pushi32_I(*args): 
      return self._pushi32_alt_I(*args)
    else:
      raise ValueError('Invalid argument list pushi32('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.pushi32(int32)')
  def ensurei32(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_ensurei32_I(*args): 
      return self._ensurei32_I(*args)
    elif mosek_fusion_WorkStack._match_alt_ensurei32_I(*args): 
      return self._ensurei32_alt_I(*args)
    else:
      raise ValueError('Invalid argument list ensurei32('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.ensurei32(int32)')
  def validate(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_validate_(*args): 
      return self._validate_(*args)
    elif mosek_fusion_WorkStack._match_alt_validate_(*args): 
      return self._validate_alt_(*args)
    else:
      raise ValueError('Invalid argument list validate('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.validate()')
  def pop_expr(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_pop_1expr_(*args): 
      return self._pop_1expr_(*args)
    elif mosek_fusion_WorkStack._match_alt_pop_1expr_(*args): 
      return self._pop_1expr_alt_(*args)
    else:
      raise ValueError('Invalid argument list pop_expr('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.pop_expr()')
  def pushi64(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_pushi64_J(*args): 
      return self._pushi64_J(*args)
    elif mosek_fusion_WorkStack._match_alt_pushi64_J(*args): 
      return self._pushi64_alt_J(*args)
    else:
      raise ValueError('Invalid argument list pushi64('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.pushi64(int64)')
  def peeki64(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_peeki64_(*args): 
      return self._peeki64_(*args)
    elif mosek_fusion_WorkStack._match_alt_peeki64_(*args): 
      return self._peeki64_alt_(*args)
    elif mosek_fusion_WorkStack._match_peeki64_I(*args): 
      return self._peeki64_I(*args)
    elif mosek_fusion_WorkStack._match_alt_peeki64_I(*args): 
      return self._peeki64_alt_I(*args)
    else:
      raise ValueError('Invalid argument list peeki64('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.peeki64()\n\tmosek.fusion.WorkStack.peeki64(int32)')
  def peek_nelem(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_peek_1nelem_(*args): 
      return self._peek_1nelem_(*args)
    elif mosek_fusion_WorkStack._match_alt_peek_1nelem_(*args): 
      return self._peek_1nelem_alt_(*args)
    else:
      raise ValueError('Invalid argument list peek_nelem('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.peek_nelem()')
  def validate_all(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_validate_1all_(*args): 
      return self._validate_1all_(*args)
    elif mosek_fusion_WorkStack._match_alt_validate_1all_(*args): 
      return self._validate_1all_alt_(*args)
    else:
      raise ValueError('Invalid argument list validate_all('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.validate_all()')
  def alloci32(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_alloci32_I(*args): 
      return self._alloci32_I(*args)
    elif mosek_fusion_WorkStack._match_alt_alloci32_I(*args): 
      return self._alloci32_alt_I(*args)
    else:
      raise ValueError('Invalid argument list alloci32('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.alloci32(int32)')
  def popi32(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_popi32_(*args): 
      return self._popi32_(*args)
    elif mosek_fusion_WorkStack._match_alt_popi32_(*args): 
      return self._popi32_alt_(*args)
    elif mosek_fusion_WorkStack._match_popi32_I(*args): 
      return self._popi32_I(*args)
    elif mosek_fusion_WorkStack._match_alt_popi32_I(*args): 
      return self._popi32_alt_I(*args)
    elif mosek_fusion_WorkStack._match_popi32_I_3II(*args): 
      return self._popi32_I_3II(*args)
    elif mosek_fusion_WorkStack._match_alt_popi32_I_3II(*args): 
      return self._popi32_alt_I_3II(*args)
    else:
      raise ValueError('Invalid argument list popi32('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.popi32()\n\tmosek.fusion.WorkStack.popi32(int32)\n\tmosek.fusion.WorkStack.popi32(int32,array(int32,ndim=1),int32)')
  def popf64(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_popf64_(*args): 
      return self._popf64_(*args)
    elif mosek_fusion_WorkStack._match_alt_popf64_(*args): 
      return self._popf64_alt_(*args)
    elif mosek_fusion_WorkStack._match_popf64_I(*args): 
      return self._popf64_I(*args)
    elif mosek_fusion_WorkStack._match_alt_popf64_I(*args): 
      return self._popf64_alt_I(*args)
    elif mosek_fusion_WorkStack._match_popf64_I_3DI(*args): 
      return self._popf64_I_3DI(*args)
    elif mosek_fusion_WorkStack._match_alt_popf64_I_3DI(*args): 
      return self._popf64_alt_I_3DI(*args)
    else:
      raise ValueError('Invalid argument list popf64('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.popf64()\n\tmosek.fusion.WorkStack.popf64(int32)\n\tmosek.fusion.WorkStack.popf64(int32,array(double,ndim=1),int32)')
  def popi64(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_popi64_(*args): 
      return self._popi64_(*args)
    elif mosek_fusion_WorkStack._match_alt_popi64_(*args): 
      return self._popi64_alt_(*args)
    elif mosek_fusion_WorkStack._match_popi64_I(*args): 
      return self._popi64_I(*args)
    elif mosek_fusion_WorkStack._match_alt_popi64_I(*args): 
      return self._popi64_alt_I(*args)
    elif mosek_fusion_WorkStack._match_popi64_I_3JI(*args): 
      return self._popi64_I_3JI(*args)
    elif mosek_fusion_WorkStack._match_alt_popi64_I_3JI(*args): 
      return self._popi64_alt_I_3JI(*args)
    else:
      raise ValueError('Invalid argument list popi64('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.popi64()\n\tmosek.fusion.WorkStack.popi64(int32)\n\tmosek.fusion.WorkStack.popi64(int32,array(int64,ndim=1),int32)')
  def peek_hassp(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_peek_1hassp_(*args): 
      return self._peek_1hassp_(*args)
    elif mosek_fusion_WorkStack._match_alt_peek_1hassp_(*args): 
      return self._peek_1hassp_alt_(*args)
    else:
      raise ValueError('Invalid argument list peek_hassp('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.peek_hassp()')
  def move_expr(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_move_1expr_Lmosek_4fusion_4WorkStack_2(*args): 
      return self._move_1expr_Lmosek_4fusion_4WorkStack_2(*args)
    elif mosek_fusion_WorkStack._match_alt_move_1expr_Lmosek_4fusion_4WorkStack_2(*args): 
      return self._move_1expr_alt_Lmosek_4fusion_4WorkStack_2(*args)
    else:
      raise ValueError('Invalid argument list move_expr('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.move_expr(mosek.fusion.WorkStack)')
  def pushf64(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_pushf64_D(*args): 
      return self._pushf64_D(*args)
    elif mosek_fusion_WorkStack._match_alt_pushf64_D(*args): 
      return self._pushf64_alt_D(*args)
    else:
      raise ValueError('Invalid argument list pushf64('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.pushf64(double)')
  def peek_dim(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_peek_1dim_I(*args): 
      return self._peek_1dim_I(*args)
    elif mosek_fusion_WorkStack._match_alt_peek_1dim_I(*args): 
      return self._peek_1dim_alt_I(*args)
    else:
      raise ValueError('Invalid argument list peek_dim('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.peek_dim(int32)')
  def peek_expr(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_peek_1expr_(*args): 
      return self._peek_1expr_(*args)
    elif mosek_fusion_WorkStack._match_alt_peek_1expr_(*args): 
      return self._peek_1expr_alt_(*args)
    else:
      raise ValueError('Invalid argument list peek_expr('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.peek_expr()')
  def peekf64(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_peekf64_(*args): 
      return self._peekf64_(*args)
    elif mosek_fusion_WorkStack._match_alt_peekf64_(*args): 
      return self._peekf64_alt_(*args)
    elif mosek_fusion_WorkStack._match_peekf64_I(*args): 
      return self._peekf64_I(*args)
    elif mosek_fusion_WorkStack._match_alt_peekf64_I(*args): 
      return self._peekf64_alt_I(*args)
    else:
      raise ValueError('Invalid argument list peekf64('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.peekf64()\n\tmosek.fusion.WorkStack.peekf64(int32)')
  def alloci64(self,*args):
    if False: pass
    elif mosek_fusion_WorkStack._match_alloci64_I(*args): 
      return self._alloci64_I(*args)
    elif mosek_fusion_WorkStack._match_alt_alloci64_I(*args): 
      return self._alloci64_alt_I(*args)
    else:
      raise ValueError('Invalid argument list alloci64('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.WorkStack.alloci64(int32)')
  def __repr__(self): return 'mosek.fusion.WorkStack'
  @staticmethod
  def _ctor_():
    o = WorkStack.__new__(WorkStack)
    o._ctor_init_()
    return o
  @staticmethod
  def __match_ctor_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def __match_alt_ctor_(*args):
    if len(args) != 0: return False
    return True
  def _ctor_alt_init_(self,):
    self._ctor_init_()
  def _ctor_init_(self,):
   self.i32 = numpy.zeros((128,), dtype=numpy.dtype(numpy.int32))
   self.i64 = numpy.zeros((128,), dtype=numpy.dtype(numpy.int64))
   self.f64 = numpy.zeros((128,), dtype=numpy.dtype(numpy.float64))
   self.pi32 = 0
   self.pi64 = 0
   self.pf64 = 0
   self.nd = 0
   self.nnz = 0
   self.nelem = 0
   self.hassp = False
   self.ncodeatom = 0
   self.ptr_base = 0
   self.shape_base = 0
   self.sp_base = 0
   self.nidxs_base = 0
   self.cof_base = 0
   self.cconst_base = 0
   self.code_base = 0
   self.codeptr_base = 0
  @staticmethod
  def _match_validate_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_validate_(*args):
    if len(args) != 0: return False
    return True
  def _validate_alt_(self,):
    return self._validate_()
  def _validate_(self,):
   self.__validate_1from_IIIZ(self.pi32,self.pi64,self.pf64,False)
  @staticmethod
  def _match_validate_1all_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_validate_1all_(*args):
    if len(args) != 0: return False
    return True
  def _validate_1all_alt_(self,):
    return self._validate_1all_()
  def _validate_1all_(self,):
   self.__validate_1from_IIIZ(self.pi32,self.pi64,self.pf64,True)
  def __validate_1from_alt_IIIZ(self,_t__0,_t__1,_t__2,_t__3):
    return self.__validate_1from_IIIZ(numpy.int32(__0),numpy.int32(__1),numpy.int32(__2),_3)
  def __validate_1from_IIIZ(self,_0,_1,_2,_3):
   _4=self.i32[(_0 - 1)]
   _5=self.i32[((_0 - _4) - 2)]
   _6=self.i32[((_0 - _4) - 3)]
   _7=(self.i32[((_0 - _4) - 4)]!=0)
   _8=self.i32[((_0 - _4) - 5)]
   _9=(((_0 - _4) - 6) - _5)
   _10=((_9 - (_6 + 1)) if ((_8 > 0) ) else _9)
   _11=(_10 - _8)
   _12=((_1 - _5) if (_7 ) else _1)
   _13=(_12 - _6)
   _14=(_2 - _6)
   _15=(_14 - _8)
   _16=1
   _17=0
   while (_17 < _4):
    _16 *= self.i32[(((_0 - _4) - 1) + _17)]
    _17 += 1
   if (_16 < _5):
    raise mosek_fusion_UnexpectedError._ctor_S("Invalid shape/nelem")
   if ((_16 > _5) and (not _7)):
    raise mosek_fusion_UnexpectedError._ctor_S("Invalid hassp/nelem/shape")
   if (_6 < self.i32[(_9 + _5)]):
    raise mosek_fusion_UnexpectedError._ctor_S("Invalid ptr/nnz")
   for _18 in range(0,_5):
    if (self.i32[(_9 + _18)] > self.i32[((_9 + _18) + 1)]):
     raise mosek_fusion_UnexpectedError._ctor_S("Invalid ptr, not ascending")
   if _7:
    for _19 in range(0,(_5 - 1)):
     if (self.i64[(_12 + _19)] > self.i64[((_12 + _19) + 1)]):
      raise mosek_fusion_UnexpectedError._ctor_S("Invalid sp - not sorted")
   if (_8 > 0):
    for _20 in range(0,_6):
     if (self.i32[(_10 + _20)] > self.i32[((_10 + _20) + 1)]):
      raise mosek_fusion_UnexpectedError._ctor_S("Invalid codeptr - not ascending")
    for _21 in range(0,_6):
     _22=0
     for _23 in range(self.i32[(_10 + _21)],self.i32[((_10 + _21) + 1)]):
      _24=self.i32[(_11 + _23)]
      if (_24==0):
       pass
      elif ((_24==1) or ((_24==2) or (_24==10))): # bld/grindsted/final/default/src/fusion/BaseExpression.monty:455:22-457:39
       _22 += 1
      elif ((_24==3) or (_24==5)): # bld/grindsted/final/default/src/fusion/BaseExpression.monty:458:22-459:38
       if (_22 < 2):
        raise mosek_fusion_UnexpectedError._ctor_S("Code stack underflow")
       _22 -= 1
      elif ((_24==4) or (_24==6)): # bld/grindsted/final/default/src/fusion/BaseExpression.monty:464:22-465:38
       if (_22 < 1):
        raise mosek_fusion_UnexpectedError._ctor_S("Code stack underflow")
      elif (_24==8): # bld/grindsted/final/default/src/fusion/BaseExpression.monty:469:22-38
       _25=numpy.int32(self.f64[(_15 + _23)])
       if (_25 > _22):
        raise mosek_fusion_UnexpectedError._ctor_S("Code stack underflow in SUM")
       _22 -= (_25 - 1)
      else:
       raise mosek_fusion_UnexpectedError._ctor_S("Invalid code list opcode")
     if (_22!=1):
      raise mosek_fusion_UnexpectedError._ctor_S("Invalid code list result")
   if _3:
    self.__validate_1from_IIIZ(_11,_13,_15,_3)
  @staticmethod
  def _match_formatCurrent_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_formatCurrent_(*args):
    if len(args) != 0: return False
    return True
  def _formatCurrent_alt_(self,):
    return self._formatCurrent_()
  def _formatCurrent_(self,):
   _0=mosek.fusion.Utils.StringBuffer()
   _0._a_S("  nelem     = ")._a_I(self.nelem)._a_S("\n")._a_S("  nnz       = ")._a_I(self.nnz)._a_S("\n")._a_S("  hassp     = ")._a_Z(self.hassp)._a_S(" / ")._a_Z(self.hassp)._a_S("\n")._a_S("  shape     = ")._a__3I(numpy.array([self.i32[(self.shape_base + _1)] for _1 in range(0,self.nd)], dtype=numpy.dtype(numpy.int32)))._a_S("\n")._a_S("  ptr       = ")._a__3I(numpy.array([self.i32[(self.ptr_base + _2)] for _2 in range(0,(self.nelem + 1))], dtype=numpy.dtype(numpy.int32)))._a_S("\n")
   if (self.ncodeatom > 0):
    _0._a_S("  codeptr   = ")._a__3I(numpy.array([self.i32[(self.codeptr_base + _3)] for _3 in range(0,(self.nnz + 1))], dtype=numpy.dtype(numpy.int32)))._a_S("\n")
   if self.hassp:
    _0._a_S("  sp        = ")._a__3J(numpy.array([self.i64[(self.sp_base + _4)] for _4 in range(0,self.nelem)], dtype=numpy.dtype(numpy.int64)))._a_S("\n")
   for _5 in range(0,self.nelem):
    _0._a_S("  row[")._a_I(_5)._a_S("]")._a_S("\n")._a_S("    nidx : ")._a__3J(numpy.array([self.i64[(self.nidxs_base + _6)] for _6 in range(self.i32[(self.ptr_base + _5)],self.i32[((self.ptr_base + _5) + 1)])], dtype=numpy.dtype(numpy.int64)))._a_S("\n")._a_S("    cof  : ")._a__3D(numpy.array([self.f64[(self.cof_base + _7)] for _7 in range(self.i32[(self.ptr_base + _5)],self.i32[((self.ptr_base + _5) + 1)])], dtype=numpy.dtype(numpy.float64)))._a_S("\n")
    if (self.ncodeatom > 0):
     for _8 in range(self.i32[(self.ptr_base + _5)],self.i32[((self.ptr_base + _5) + 1)]):
      _0._a_S("      code[")._a_J(self.i64[(self.nidxs_base + _8)])._a_S("] ")._a__3I(numpy.array([self.i32[(self.code_base + _9)] for _9 in range(self.i32[(self.codeptr_base + _8)],self.i32[((self.codeptr_base + _8) + 1)])], dtype=numpy.dtype(numpy.int32)))._a__3D(numpy.array([self.f64[(self.cconst_base + _10)] for _10 in range(self.i32[(self.codeptr_base + _8)],self.i32[((self.codeptr_base + _8) + 1)])], dtype=numpy.dtype(numpy.float64)))._a_S("\n")
   return (_0._toString_())
  @staticmethod
  def _match_peek_1hassp_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_peek_1hassp_(*args):
    if len(args) != 0: return False
    return True
  def _peek_1hassp_alt_(self,):
    return self._peek_1hassp_()
  def _peek_1hassp_(self,):
   return ((self.peeki32((3 + self.peek_nd()))!=0))
  @staticmethod
  def _match_peek_1nnz_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_peek_1nnz_(*args):
    if len(args) != 0: return False
    return True
  def _peek_1nnz_alt_(self,):
    return self._peek_1nnz_()
  def _peek_1nnz_(self,):
   return numpy.int32(self.peeki32((2 + self.peek_nd())))
  @staticmethod
  def _match_peek_1nelem_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_peek_1nelem_(*args):
    if len(args) != 0: return False
    return True
  def _peek_1nelem_alt_(self,):
    return self._peek_1nelem_()
  def _peek_1nelem_(self,):
   return numpy.int32(self.peeki32((1 + self.peek_nd())))
  @staticmethod
  def _match_peek_1dim_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_peek_1dim_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _peek_1dim_alt_I(self,_t__0):
    return self._peek_1dim_I(numpy.int32(__0))
  def _peek_1dim_I(self,_0):
   return numpy.int32(self.peeki32((_0 + 1)))
  @staticmethod
  def _match_peek_1nd_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_peek_1nd_(*args):
    if len(args) != 0: return False
    return True
  def _peek_1nd_alt_(self,):
    return self._peek_1nd_()
  def _peek_1nd_(self,):
   return numpy.int32(self.peeki32())
  @staticmethod
  def _match_alloc_1expr_IIIZ(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2) and __arg_match_Z__(_3))
  @staticmethod
  def _match_alt_alloc_1expr_IIIZ(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2) and __arg_alt_match_Z__(_3))
  def _alloc_1expr_alt_IIIZ(self,_t__0,_t__1,_t__2,_t__3):
    return self._alloc_1expr_IIIZ(numpy.int32(__0),numpy.int32(__1),numpy.int32(__2),_3)
  def _alloc_1expr_IIIZ(self,_0,_1,_2,_3):
   self.alloc_expr(_0,_1,_2,_3,0)
  @staticmethod
  def _match_alloc_1expr_IIIZI(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match_I__(_2) and __arg_match_Z__(_3) and __arg_match_I__(_4))
  @staticmethod
  def _match_alt_alloc_1expr_IIIZI(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_I__(_2) and __arg_alt_match_Z__(_3) and __arg_alt_match_I__(_4))
  def _alloc_1expr_alt_IIIZI(self,_t__0,_t__1,_t__2,_t__3,_t__4):
    return self._alloc_1expr_IIIZI(numpy.int32(__0),numpy.int32(__1),numpy.int32(__2),_3,numpy.int32(__4))
  def _alloc_1expr_IIIZI(self,_0,_1,_2,_3,_4):
   if ((_0 < 0) or ((_1 < 0) or ((_2 < 0) or (_4 < 0)))):
    raise mosek_fusion_ExpressionError._ctor_S("Attempted to allocate negative amount on work stack")
   self.cof_base = self.allocf64(_2)
   self.cconst_base = self.allocf64(_4)
   self.nidxs_base = self.alloci64(_2)
   self.sp_base = (self.alloci64(_1) if (_3 ) else (- 9999))
   self.code_base = self.alloci32(_4)
   self.codeptr_base = (self.alloci32((_2 + 1)) if ((_4 > 0) ) else (- 9999))
   self.ptr_base = self.alloci32((_1 + 1))
   self.pushi32(_4)
   self.pushi32((1 if (_3 ) else 0))
   self.pushi32(_2)
   self.pushi32(_1)
   self.shape_base = self.alloci32(_0)
   self.pushi32(_0)
   (self.ncodeatom) = _4
   (self.nd) = _0
   (self.nelem) = _1
   (self.nnz) = _2
   (self.hassp) = _3
  @staticmethod
  def _match_pop_1expr_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_pop_1expr_(*args):
    if len(args) != 0: return False
    return True
  def _pop_1expr_alt_(self,):
    return self._pop_1expr_()
  def _pop_1expr_(self,):
   self.nd = self.popi32()
   self.shape_base = self.popi32(self.nd)
   self.nelem = self.popi32()
   self.nnz = self.popi32()
   self.hassp = (self.popi32()!=0)
   self.ncodeatom = self.popi32()
   self.ptr_base = self.popi32((self.nelem + 1))
   self.codeptr_base = (self.popi32((self.nnz + 1)) if ((self.ncodeatom > 0) ) else (- 9999))
   self.code_base = self.popi32(self.ncodeatom)
   self.sp_base = (self.popi64(self.nelem) if (self.hassp ) else (- 9999))
   self.nidxs_base = self.popi64(self.nnz)
   self.cconst_base = self.popf64(self.ncodeatom)
   self.cof_base = self.popf64(self.nnz)
  @staticmethod
  def _match_copy_1expr_Lmosek_4fusion_4WorkStack_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0))
  @staticmethod
  def _match_alt_copy_1expr_Lmosek_4fusion_4WorkStack_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0))
  def _copy_1expr_alt_Lmosek_4fusion_4WorkStack_2(self,_t__0):
    return self._copy_1expr_Lmosek_4fusion_4WorkStack_2(_0)
  def _copy_1expr_Lmosek_4fusion_4WorkStack_2(self,_0):
   _1=self.pi32
   _2=self.pi64
   _3=self.pf64
   self.pop_expr()
   _4=_0.alloci32((_1 - self.pi32))
   _5=_0.alloci64((_2 - self.pi64))
   _6=_0.allocf64((_3 - self.pf64))
   mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.i32,self.pi32,(_0.i32),_4,(_1 - self.pi32))
   mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(self.i64,self.pi64,(_0.i64),_5,(_2 - self.pi64))
   mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.f64,self.pf64,(_0.f64),_6,(_3 - self.pf64))
   self.pi32 = _1
   self.pi64 = _2
   self.pf64 = _3
  @staticmethod
  def _match_move_1expr_Lmosek_4fusion_4WorkStack_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4WorkStack_2__(_0))
  @staticmethod
  def _match_alt_move_1expr_Lmosek_4fusion_4WorkStack_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4WorkStack_2__(_0))
  def _move_1expr_alt_Lmosek_4fusion_4WorkStack_2(self,_t__0):
    return self._move_1expr_Lmosek_4fusion_4WorkStack_2(_0)
  def _move_1expr_Lmosek_4fusion_4WorkStack_2(self,_0):
   _1=self.pi32
   _2=self.pi64
   _3=self.pf64
   self.pop_expr()
   _4=_0.alloci32((_1 - self.pi32))
   _5=_0.alloci64((_2 - self.pi64))
   _6=_0.allocf64((_3 - self.pf64))
   mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.i32,self.pi32,(_0.i32),_4,(_1 - self.pi32))
   mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(self.i64,self.pi64,(_0.i64),_5,(_2 - self.pi64))
   mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.f64,self.pf64,(_0.f64),_6,(_3 - self.pf64))
  @staticmethod
  def _match_peek_1expr_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_peek_1expr_(*args):
    if len(args) != 0: return False
    return True
  def _peek_1expr_alt_(self,):
    return self._peek_1expr_()
  def _peek_1expr_(self,):
   _0=self.pi32
   _1=self.pi64
   _2=self.pf64
   self.pop_expr()
   self.pi32 = _0
   self.pi64 = _1
   self.pf64 = _2
  @staticmethod
  def _match_ensure_1sparsity_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_ensure_1sparsity_(*args):
    if len(args) != 0: return False
    return True
  def _ensure_1sparsity_alt_(self,):
    return self._ensure_1sparsity_()
  def _ensure_1sparsity_(self,):
   _0=self.i32[(self.pi32 - 1)]
   _1=(self.i32[((self.pi32 - _0) - 3)]!=0)
   _2=self.i32[((self.pi32 - _0) - 1)]
   if (not _1):
    self.i32[((self.pi32 - _0) - 3)] = 1
    _3=self.alloci64(_2)
    for _4 in range(0,_2):
     self.i64[_3] = _4
  @staticmethod
  def _match_clear_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_clear_(*args):
    if len(args) != 0: return False
    return True
  def _clear_alt_(self,):
    return self._clear_()
  def _clear_(self,):
   self.pi32 = 0
   self.pi64 = 0
   self.pf64 = 0
  @staticmethod
  def _match_allocf64_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_allocf64_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _allocf64_alt_I(self,_t__0):
    return self._allocf64_I(numpy.int32(__0))
  def _allocf64_I(self,_0):
   self.ensuref64(_0)
   _1=self.pf64
   self.pf64 += _0
   return numpy.int32(_1)
  @staticmethod
  def _match_alloci64_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_alloci64_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _alloci64_alt_I(self,_t__0):
    return self._alloci64_I(numpy.int32(__0))
  def _alloci64_I(self,_0):
   self.ensurei64(_0)
   _1=self.pi64
   self.pi64 += _0
   return numpy.int32(_1)
  @staticmethod
  def _match_alloci32_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_alloci32_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _alloci32_alt_I(self,_t__0):
    return self._alloci32_I(numpy.int32(__0))
  def _alloci32_I(self,_0):
   if (_0 > 0):
    self.ensurei32(_0)
    _1=self.pi32
    self.pi32 += _0
    return numpy.int32(_1)
   else:
    return numpy.int32(0)
  @staticmethod
  def _match_pushf64_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_D__(_0))
  @staticmethod
  def _match_alt_pushf64_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_D__(_0))
  def _pushf64_alt_D(self,_t__0):
    return self._pushf64_D(numpy.float64(__0))
  def _pushf64_D(self,_0):
   self.ensuref64(1)
   self.f64[self.pf64] = _0
   self.pf64 += 1
  @staticmethod
  def _match_pushi64_J(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_J__(_0))
  @staticmethod
  def _match_alt_pushi64_J(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_J__(_0))
  def _pushi64_alt_J(self,_t__0):
    return self._pushi64_J(numpy.int64(__0))
  def _pushi64_J(self,_0):
   self.ensurei64(1)
   self.i64[self.pi64] = _0
   self.pi64 += 1
  @staticmethod
  def _match_pushi32_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_pushi32_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _pushi32_alt_I(self,_t__0):
    return self._pushi32_I(numpy.int32(__0))
  def _pushi32_I(self,_0):
   self.ensurei32(1)
   self.i32[self.pi32] = _0
   self.pi32 += 1
  @staticmethod
  def _match_ensuref64_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_ensuref64_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _ensuref64_alt_I(self,_t__0):
    return self._ensuref64_I(numpy.int32(__0))
  def _ensuref64_I(self,_0):
   if ((self.pf64 + _0) > int((self.f64).shape[0])):
    _1=((int((self.f64).shape[0]) * 2) if (((_0 < int((self.f64).shape[0])) and (int((self.f64).shape[0]) < 1073741823)) ) else (int((self.f64).shape[0]) + _0))
    _2=numpy.zeros((_1,), dtype=numpy.dtype(numpy.float64))
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.f64,0,_2,0,self.pf64)
    self.f64 = _2
  @staticmethod
  def _match_ensurei64_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_ensurei64_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _ensurei64_alt_I(self,_t__0):
    return self._ensurei64_I(numpy.int32(__0))
  def _ensurei64_I(self,_0):
   if ((self.pi64 + _0) > int((self.i64).shape[0])):
    _1=(int((self.i64).shape[0]) + (int((self.i64).shape[0]) if (((_0 < int((self.i64).shape[0])) and (int((self.i64).shape[0]) < 1073741823)) ) else _0))
    _2=numpy.zeros((_1,), dtype=numpy.dtype(numpy.int64))
    mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(self.i64,0,_2,0,self.pi64)
    self.i64 = _2
  @staticmethod
  def _match_ensurei32_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_ensurei32_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _ensurei32_alt_I(self,_t__0):
    return self._ensurei32_I(numpy.int32(__0))
  def _ensurei32_I(self,_0):
   if ((self.pi32 + _0) > int((self.i32).shape[0])):
    _1=((int((self.i32).shape[0]) * 2) if (((_0 < int((self.i32).shape[0])) and (int((self.i32).shape[0]) < 1073741823)) ) else (int((self.i32).shape[0]) + _0))
    _2=numpy.zeros((_1,), dtype=numpy.dtype(numpy.int32))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.i32,0,_2,0,self.pi32)
    self.i32 = _2
  @staticmethod
  def _match_popf64_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_popf64_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _popf64_alt_I(self,_t__0):
    return self._popf64_I(numpy.int32(__0))
  def _popf64_I(self,_0):
   self.pf64 -= _0
   if (self.pf64 < 0):
    raise mosek_fusion_UnexpectedError._ctor_S("Internal: stack underflow")
   return numpy.int32(self.pf64)
  @staticmethod
  def _match_popi64_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_popi64_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _popi64_alt_I(self,_t__0):
    return self._popi64_I(numpy.int32(__0))
  def _popi64_I(self,_0):
   self.pi64 -= _0
   if (self.pi64 < 0):
    raise mosek_fusion_UnexpectedError._ctor_S("Internal: stack underflow")
   return numpy.int32(self.pi64)
  @staticmethod
  def _match_popi32_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_popi32_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _popi32_alt_I(self,_t__0):
    return self._popi32_I(numpy.int32(__0))
  def _popi32_I(self,_0):
   self.pi32 -= _0
   if (self.pi32 < 0):
    raise mosek_fusion_UnexpectedError._ctor_S("Internal: stack underflow")
   return numpy.int32(self.pi32)
  @staticmethod
  def _match_popf64_I_3DI(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match__3D__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_popf64_I_3DI(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3D__(_1) and __arg_alt_match_I__(_2))
  def _popf64_alt_I_3DI(self,_t__0,_t__1,_t__2):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.float64))
   _2=numpy.int32(_t__2)
   _1_res = self._popf64_I_3DI(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _popf64_I_3DI(self,_0,_1,_2):
   self.pf64 -= _0
   if (self.pf64 < 0):
    raise mosek_fusion_UnexpectedError._ctor_S("Internal: stack underflow")
   mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.f64,self.pf64,_1,_2,_0)
  @staticmethod
  def _match_popi64_I_3JI(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match__3J__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_popi64_I_3JI(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match_I__(_2))
  def _popi64_alt_I_3JI(self,_t__0,_t__1,_t__2):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.int32(_t__2)
   _1_res = self._popi64_I_3JI(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _popi64_I_3JI(self,_0,_1,_2):
   self.pi64 -= _0
   if (self.pi64 < 0):
    raise mosek_fusion_UnexpectedError._ctor_S("Internal: stack underflow")
   mosek.fusion.Utils.Tools._arraycopy__3JI_3JII(self.i64,self.pi64,_1,_2,_0)
  @staticmethod
  def _match_popi32_I_3II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match__3I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_popi32_I_3II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match_I__(_2))
  def _popi32_alt_I_3II(self,_t__0,_t__1,_t__2):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.int32(_t__2)
   _1_res = self._popi32_I_3II(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _popi32_I_3II(self,_0,_1,_2):
   self.pi32 -= _0
   if (self.pi32 < 0):
    raise mosek_fusion_UnexpectedError._ctor_S("Internal: stack underflow")
   mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.i32,self.pi32,_1,_2,_0)
  @staticmethod
  def _match_popf64_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_popf64_(*args):
    if len(args) != 0: return False
    return True
  def _popf64_alt_(self,):
    return self._popf64_()
  def _popf64_(self,):
   self.pf64 -= 1
   if (self.pf64 < 0):
    raise mosek_fusion_UnexpectedError._ctor_S("Internal: stack underflow")
   return numpy.float64(self.f64[self.pf64])
  @staticmethod
  def _match_popi64_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_popi64_(*args):
    if len(args) != 0: return False
    return True
  def _popi64_alt_(self,):
    return self._popi64_()
  def _popi64_(self,):
   if (self.pi64 < 0):
    raise mosek_fusion_UnexpectedError._ctor_S("Internal: stack underflow")
   self.pi64 -= 1
   return numpy.int64(self.i64[self.pi64])
  @staticmethod
  def _match_popi32_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_popi32_(*args):
    if len(args) != 0: return False
    return True
  def _popi32_alt_(self,):
    return self._popi32_()
  def _popi32_(self,):
   self.pi32 -= 1
   if (self.pi32 < 0):
    raise mosek_fusion_UnexpectedError._ctor_S("Internal: stack underflow")
   return numpy.int32(self.i32[self.pi32])
  @staticmethod
  def _match_peekf64_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_peekf64_(*args):
    if len(args) != 0: return False
    return True
  def _peekf64_alt_(self,):
    return self._peekf64_()
  def _peekf64_(self,):
   return numpy.float64(self.f64[(self.pf64 - 1)])
  @staticmethod
  def _match_peeki64_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_peeki64_(*args):
    if len(args) != 0: return False
    return True
  def _peeki64_alt_(self,):
    return self._peeki64_()
  def _peeki64_(self,):
   return numpy.int64(self.i64[(self.pi64 - 1)])
  @staticmethod
  def _match_peeki32_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_peeki32_(*args):
    if len(args) != 0: return False
    return True
  def _peeki32_alt_(self,):
    return self._peeki32_()
  def _peeki32_(self,):
   return numpy.int32(self.i32[(self.pi32 - 1)])
  @staticmethod
  def _match_peekf64_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_peekf64_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _peekf64_alt_I(self,_t__0):
    return self._peekf64_I(numpy.int32(__0))
  def _peekf64_I(self,_0):
   return numpy.float64(self.f64[((self.pf64 - _0) - 1)])
  @staticmethod
  def _match_peeki64_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_peeki64_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _peeki64_alt_I(self,_t__0):
    return self._peeki64_I(numpy.int32(__0))
  def _peeki64_I(self,_0):
   return numpy.int64(self.i64[((self.pi64 - _0) - 1)])
  @staticmethod
  def _match_peeki32_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_peeki32_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _peeki32_alt_I(self,_t__0):
    return self._peeki32_I(numpy.int32(__0))
  def _peeki32_I(self,_0):
   return numpy.int32(self.i32[((self.pi32 - _0) - 1)])
 return WorkStack
mosek_fusion_WorkStack=__mk_mosek_fusion_WorkStack()
del __mk_mosek_fusion_WorkStack
def __mk_mosek_fusion_SymmetricMatrix():
 class SymmetricMatrix(object):
  __slots__ = ['_SymmetricMatrix__nnz','_SymmetricMatrix__scale','_SymmetricMatrix__vval','_SymmetricMatrix__vsubj','_SymmetricMatrix__vsubi','_SymmetricMatrix__uval','_SymmetricMatrix__usubj','_SymmetricMatrix__usubi','_SymmetricMatrix__d1','_SymmetricMatrix__d0']
  @staticmethod
  def antiDiag(*args):
    if False: pass
    elif mosek_fusion_SymmetricMatrix._match_antiDiag__3D(*args): 
      return mosek_fusion_SymmetricMatrix._antiDiag__3D(*args)
    elif mosek_fusion_SymmetricMatrix._match_alt_antiDiag__3D(*args): 
      return mosek_fusion_SymmetricMatrix._antiDiag_alt__3D(*args)
    else:
      raise ValueError('Invalid argument list antiDiag('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SymmetricMatrix.antiDiag(array(double,ndim=1))')
  @staticmethod
  def diag(*args):
    if False: pass
    elif mosek_fusion_SymmetricMatrix._match_diag__3D(*args): 
      return mosek_fusion_SymmetricMatrix._diag__3D(*args)
    elif mosek_fusion_SymmetricMatrix._match_alt_diag__3D(*args): 
      return mosek_fusion_SymmetricMatrix._diag_alt__3D(*args)
    else:
      raise ValueError('Invalid argument list diag('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SymmetricMatrix.diag(array(double,ndim=1))')
  def getdim(self,*args):
    if False: pass
    elif mosek_fusion_SymmetricMatrix._match_getdim_(*args): 
      return self._getdim_(*args)
    elif mosek_fusion_SymmetricMatrix._match_alt_getdim_(*args): 
      return self._getdim_alt_(*args)
    else:
      raise ValueError('Invalid argument list getdim('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SymmetricMatrix.getdim()')
  @staticmethod
  def rankOne(*args):
    if False: pass
    elif mosek_fusion_SymmetricMatrix._match_rankOne__3D(*args): 
      return mosek_fusion_SymmetricMatrix._rankOne__3D(*args)
    elif mosek_fusion_SymmetricMatrix._match_alt_rankOne__3D(*args): 
      return mosek_fusion_SymmetricMatrix._rankOne_alt__3D(*args)
    elif mosek_fusion_SymmetricMatrix._match_rankOne_I_3I_3D(*args): 
      return mosek_fusion_SymmetricMatrix._rankOne_I_3I_3D(*args)
    elif mosek_fusion_SymmetricMatrix._match_alt_rankOne_I_3I_3D(*args): 
      return mosek_fusion_SymmetricMatrix._rankOne_alt_I_3I_3D(*args)
    else:
      raise ValueError('Invalid argument list rankOne('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SymmetricMatrix.rankOne(array(double,ndim=1))\n\tmosek.fusion.SymmetricMatrix.rankOne(int32,array(int32,ndim=1),array(double,ndim=1))')
  def mul(self,*args):
    if False: pass
    elif mosek_fusion_SymmetricMatrix._match_mul_D(*args): 
      return self._mul_D(*args)
    elif mosek_fusion_SymmetricMatrix._match_alt_mul_D(*args): 
      return self._mul_alt_D(*args)
    else:
      raise ValueError('Invalid argument list mul('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SymmetricMatrix.mul(double)')
  def sub(self,*args):
    if False: pass
    elif mosek_fusion_SymmetricMatrix._match_sub_Lmosek_4fusion_4SymmetricMatrix_2(*args): 
      return self._sub_Lmosek_4fusion_4SymmetricMatrix_2(*args)
    elif mosek_fusion_SymmetricMatrix._match_alt_sub_Lmosek_4fusion_4SymmetricMatrix_2(*args): 
      return self._sub_alt_Lmosek_4fusion_4SymmetricMatrix_2(*args)
    else:
      raise ValueError('Invalid argument list sub('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SymmetricMatrix.sub(mosek.fusion.SymmetricMatrix)')
  def add(self,*args):
    if False: pass
    elif mosek_fusion_SymmetricMatrix._match_add_Lmosek_4fusion_4SymmetricMatrix_2(*args): 
      return self._add_Lmosek_4fusion_4SymmetricMatrix_2(*args)
    elif mosek_fusion_SymmetricMatrix._match_alt_add_Lmosek_4fusion_4SymmetricMatrix_2(*args): 
      return self._add_alt_Lmosek_4fusion_4SymmetricMatrix_2(*args)
    else:
      raise ValueError('Invalid argument list add('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SymmetricMatrix.add(mosek.fusion.SymmetricMatrix)')
  def __repr__(self): return 'mosek.fusion.SymmetricMatrix'
  @staticmethod
  def _ctor_II_3I_3I_3D_3I_3I_3DD(dim0,dim1,usubi,usubj,uval,vsubi,vsubj,vval,scale):
    o = SymmetricMatrix.__new__(SymmetricMatrix)
    o._ctor_init_II_3I_3I_3D_3I_3I_3DD(dim0,dim1,usubi,usubj,uval,vsubi,vsubj,vval,scale)
    return o
  @staticmethod
  def __match_ctor_II_3I_3I_3D_3I_3I_3DD(*args):
    if len(args) != 9: return False
    dim0,dim1,usubi,usubj,uval,vsubi,vsubj,vval,scale, = args
    return (__arg_match_I__(dim0) and __arg_match_I__(dim1) and __arg_match__3I__(usubi) and __arg_match__3I__(usubj) and __arg_match__3D__(uval) and __arg_match__3I__(vsubi) and __arg_match__3I__(vsubj) and __arg_match__3D__(vval) and __arg_match_D__(scale))
  @staticmethod
  def __match_alt_ctor_II_3I_3I_3D_3I_3I_3DD(*args):
    if len(args) != 9: return False
    dim0,dim1,usubi,usubj,uval,vsubi,vsubj,vval,scale, = args
    return (__arg_alt_match_I__(dim0) and __arg_alt_match_I__(dim1) and __arg_alt_match__3I__(usubi) and __arg_alt_match__3I__(usubj) and __arg_alt_match__3D__(uval) and __arg_alt_match__3I__(vsubi) and __arg_alt_match__3I__(vsubj) and __arg_alt_match__3D__(vval) and __arg_alt_match_D__(scale))
  def _ctor_alt_init_II_3I_3I_3D_3I_3I_3DD(self,dim0,dim1,usubi,usubj,uval,vsubi,vsubj,vval,scale):
    self._ctor_init_II_3I_3I_3D_3I_3I_3DD(numpy.int32(dim0),numpy.int32(dim1),numpy.array(usubi,dtype=numpy.dtype(numpy.int32)),numpy.array(usubj,dtype=numpy.dtype(numpy.int32)),numpy.array(uval,dtype=numpy.dtype(numpy.float64)),numpy.array(vsubi,dtype=numpy.dtype(numpy.int32)),numpy.array(vsubj,dtype=numpy.dtype(numpy.int32)),numpy.array(vval,dtype=numpy.dtype(numpy.float64)),numpy.float64(scale))
  def _ctor_init_II_3I_3I_3D_3I_3I_3DD(self,dim0,dim1,usubi,usubj,uval,vsubi,vsubj,vval,scale):
   (self.__d0) = dim0
   (self.__d1) = dim1
   (self.__usubi) = usubi
   (self.__usubj) = usubj
   (self.__uval) = uval
   (self.__vsubi) = vsubi
   (self.__vsubj) = vsubj
   (self.__vval) = vval
   (self.__scale) = scale
   self.__nnz = (- 1)
  @staticmethod
  def _match_rankOne_I_3I_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match__3I__(_1) and __arg_match__3D__(_2))
  @staticmethod
  def _match_alt_rankOne_I_3I_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3D__(_2))
  @staticmethod
  def _rankOne_alt_I_3I_3D(_t__0,_t__1,_t__2):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_SymmetricMatrix._rankOne_I_3I_3D(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _rankOne_I_3I_3D(_0,_1,_2):
   if (int((_1).shape[0])!=int((_2).shape[0])):
    raise mosek_fusion_LengthError._ctor_S("Mismatching array lengths")
   for _3 in range(0,int((_1).shape[0])):
    if ((_1[_3] < 0) or (_1[_3] >= _0)):
     raise mosek_fusion_LengthError._ctor_S("Invalid index in argument 'sub'")
   _4=numpy.array([_1[_5] for _5 in range(0,int((_1).shape[0]))], dtype=numpy.dtype(numpy.int32))
   _6=numpy.array([1 for _7 in range(0,int((_1).shape[0]))], dtype=numpy.dtype(numpy.int32))
   _8=numpy.array([_2[_9] for _9 in range(0,int((_2).shape[0]))], dtype=numpy.dtype(numpy.float64))
   return (mosek_fusion_SymmetricMatrix._ctor_II_3I_3I_3D_3I_3I_3DD(_0,1,_4,_6,_8,_4,_6,_8,1.0))
  @staticmethod
  def _match_rankOne__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_rankOne__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  @staticmethod
  def _rankOne_alt__3D(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_SymmetricMatrix._rankOne__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _rankOne__3D(_0):
   _1=int((_0).shape[0])
   _2=numpy.array([_3 for _3 in range(0,_1)], dtype=numpy.dtype(numpy.int32))
   _4=numpy.array([1 for _5 in range(0,_1)], dtype=numpy.dtype(numpy.int32))
   _6=numpy.array([_0[_7] for _7 in range(0,_1)], dtype=numpy.dtype(numpy.float64))
   return (mosek_fusion_SymmetricMatrix._ctor_II_3I_3I_3D_3I_3I_3DD(_1,1,_2,_4,_6,_2,_4,_6,1.0))
  @staticmethod
  def _match_antiDiag__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_antiDiag__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  @staticmethod
  def _antiDiag_alt__3D(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_SymmetricMatrix._antiDiag__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _antiDiag__3D(_0):
   _1=int((_0).shape[0])
   _2=numpy.array([_3 for _3 in range(0,_1)], dtype=numpy.dtype(numpy.int32))
   return (mosek_fusion_SymmetricMatrix._ctor_II_3I_3I_3D_3I_3I_3DD(_1,_1,_2,numpy.array([(_1 - _4) for _4 in range(0,_1)], dtype=numpy.dtype(numpy.int32)),numpy.array([_0[_5] for _5 in range(0,_1)], dtype=numpy.dtype(numpy.float64)),_2,_2,numpy.array([1.0 for _6 in range(0,_1)], dtype=numpy.dtype(numpy.float64)),1.0))
  @staticmethod
  def _match_diag__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_diag__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  @staticmethod
  def _diag_alt__3D(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_SymmetricMatrix._diag__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _diag__3D(_0):
   _1=int((_0).shape[0])
   _2=numpy.array([_3 for _3 in range(0,_1)], dtype=numpy.dtype(numpy.int32))
   return (mosek_fusion_SymmetricMatrix._ctor_II_3I_3I_3D_3I_3I_3DD(_1,_1,_2,_2,numpy.array([_0[_4] for _4 in range(0,_1)], dtype=numpy.dtype(numpy.float64)),_2,_2,numpy.array([1.0 for _5 in range(0,_1)], dtype=numpy.dtype(numpy.float64)),1.0))
  @staticmethod
  def _match_add_Lmosek_4fusion_4SymmetricMatrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4SymmetricMatrix_2__(_0))
  @staticmethod
  def _match_alt_add_Lmosek_4fusion_4SymmetricMatrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4SymmetricMatrix_2__(_0))
  def _add_alt_Lmosek_4fusion_4SymmetricMatrix_2(self,_t__0):
    return self._add_Lmosek_4fusion_4SymmetricMatrix_2(_0)
  def _add_Lmosek_4fusion_4SymmetricMatrix_2(self,_0):
   _1=self.getdim()
   if (_0.getdim()!=_1):
    raise mosek_fusion_DimensionError._ctor_S("Mismatching dimensions")
   _2=int((self.__usubi).shape[0])
   _3=int(((_0.__usubi)).shape[0])
   _4=(_2 + _3)
   _5=int((self.__vsubi).shape[0])
   _6=int(((_0.__vsubi)).shape[0])
   _7=(_5 + _6)
   _8=numpy.zeros((_7,), dtype=numpy.dtype(numpy.float64))
   _9=numpy.zeros((_7,), dtype=numpy.dtype(numpy.int32))
   _10=numpy.zeros((_7,), dtype=numpy.dtype(numpy.int32))
   _11=numpy.zeros((_4,), dtype=numpy.dtype(numpy.float64))
   _12=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   _13=numpy.zeros((_4,), dtype=numpy.dtype(numpy.int32))
   mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__usubi,0,_13,0,_2)
   mosek.fusion.Utils.Tools._arraycopy__3II_3III((_0.__usubi),0,_13,_2,_3)
   mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__usubj,0,_12,0,_2)
   for _14 in range(0,_3):
    _12[(_14 + _2)] = ((_0.__usubj)[_14] + self.__d1)
   if ((self.__scale > 1.0) or (self.__scale < 1.0)):
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.__uval,0,_11,0,_2)
   else:
    for _15 in range(0,_2):
     _11[_15] = (self.__scale * self.__uval[_15])
   if (((_0.__scale) > 1.0) or ((_0.__scale) < 1.0)):
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII((_0.__uval),0,_11,_2,_3)
   else:
    for _16 in range(0,_3):
     _11[(_16 + _2)] = ((_0.__scale) * (_0.__uval)[_16])
   mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__usubi,0,_13,0,_2)
   for _17 in range(0,_6):
    _10[(_17 + _5)] = ((_0.__vsubi)[_17] + (_0.__d1))
   mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__vsubj,0,_9,0,_5)
   mosek.fusion.Utils.Tools._arraycopy__3II_3III((_0.__vsubj),_5,_9,_5,_6)
   if ((self.__scale > 1.0) or (self.__scale < 1.0)):
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self.__vval,0,_8,0,_5)
   else:
    for _18 in range(0,_5):
     _8[_18] = (self.__scale * self.__vval[_18])
   if (((_0.__scale) > 1.0) or ((_0.__scale) < 1.0)):
    mosek.fusion.Utils.Tools._arraycopy__3DI_3DII((_0.__vval),0,_8,_5,_6)
   else:
    for _19 in range(0,_6):
     _8[(_19 + _5)] = ((_0.__scale) * (_0.__vval)[_19])
   return (mosek_fusion_SymmetricMatrix._ctor_II_3I_3I_3D_3I_3I_3DD(self.__d0,(self.__d1 + (_0.__d1)),_13,_12,_11,_10,_9,_8,1.0))
  @staticmethod
  def _match_sub_Lmosek_4fusion_4SymmetricMatrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4SymmetricMatrix_2__(_0))
  @staticmethod
  def _match_alt_sub_Lmosek_4fusion_4SymmetricMatrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4SymmetricMatrix_2__(_0))
  def _sub_alt_Lmosek_4fusion_4SymmetricMatrix_2(self,_t__0):
    return self._sub_Lmosek_4fusion_4SymmetricMatrix_2(_0)
  def _sub_Lmosek_4fusion_4SymmetricMatrix_2(self,_0):
   return (self.add(_0.mul((- 1.0))))
  @staticmethod
  def _match_mul_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_D__(_0))
  @staticmethod
  def _match_alt_mul_D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_D__(_0))
  def _mul_alt_D(self,_t__0):
    return self._mul_D(numpy.float64(__0))
  def _mul_D(self,_0):
   return (mosek_fusion_SymmetricMatrix._ctor_II_3I_3I_3D_3I_3I_3DD(self.__d0,self.__d1,self.__usubi,self.__usubj,self.__uval,self.__vsubi,self.__vsubj,self.__vval,(self.__scale * _0)))
  @staticmethod
  def _match_getdim_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getdim_(*args):
    if len(args) != 0: return False
    return True
  def _getdim_alt_(self,):
    return self._getdim_()
  def _getdim_(self,):
   return numpy.int32(self.__d0)
 return SymmetricMatrix
mosek_fusion_SymmetricMatrix=__mk_mosek_fusion_SymmetricMatrix()
del __mk_mosek_fusion_SymmetricMatrix
def __mk_mosek_fusion_NDSparseArray():
 class NDSparseArray(object):
  __slots__ = ['_cof','_inst','_dims','_size']
  @staticmethod
  def make(*args):
    if False: pass
    elif mosek_fusion_NDSparseArray._match_make_Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_NDSparseArray._make_Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_NDSparseArray._match_alt_make_Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_NDSparseArray._make_alt_Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_NDSparseArray._match_make__3I_3J_3D(*args): 
      return mosek_fusion_NDSparseArray._make__3I_3J_3D(*args)
    elif mosek_fusion_NDSparseArray._match_alt_make__3I_3J_3D(*args): 
      return mosek_fusion_NDSparseArray._make_alt__3I_3J_3D(*args)
    elif mosek_fusion_NDSparseArray._match_make__3I_3_5I_3D(*args): 
      return mosek_fusion_NDSparseArray._make__3I_3_5I_3D(*args)
    elif mosek_fusion_NDSparseArray._match_alt_make__3I_3_5I_3D(*args): 
      return mosek_fusion_NDSparseArray._make_alt__3I_3_5I_3D(*args)
    else:
      raise ValueError('Invalid argument list make('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.NDSparseArray.make(mosek.fusion.Matrix)\n\tmosek.fusion.NDSparseArray.make(array(int32,ndim=1),array(int64,ndim=1),array(double,ndim=1))\n\tmosek.fusion.NDSparseArray.make(array(int32,ndim=1),array(int32,ndim=2),array(double,ndim=1))')
  def __repr__(self): return 'mosek.fusion.NDSparseArray'
  @staticmethod
  def _ctor__3I_3_5I_3D(dims_,sub,cof_):
    o = NDSparseArray.__new__(NDSparseArray)
    o._ctor_init__3I_3_5I_3D(dims_,sub,cof_)
    return o
  @staticmethod
  def __match_ctor__3I_3_5I_3D(*args):
    if len(args) != 3: return False
    dims_,sub,cof_, = args
    return (__arg_match__3I__(dims_) and __arg_match__3_5I__(sub) and __arg_match__3D__(cof_))
  @staticmethod
  def __match_alt_ctor__3I_3_5I_3D(*args):
    if len(args) != 3: return False
    dims_,sub,cof_, = args
    return (__arg_alt_match__3I__(dims_) and __arg_alt_match__3_5I__(sub) and __arg_alt_match__3D__(cof_))
  def _ctor_alt_init__3I_3_5I_3D(self,dims_,sub,cof_):
    self._ctor_init__3I_3_5I_3D(numpy.array(dims_,dtype=numpy.dtype(numpy.int32)),numpy.array(sub,dtype=numpy.dtype(numpy.int32)),numpy.array(cof_,dtype=numpy.dtype(numpy.float64)))
  def _ctor_init__3I_3_5I_3D(self,dims_,sub,cof_):
   _0=numpy.zeros((int((sub).shape[0]),), dtype=numpy.dtype(numpy.int64))
   self._size = 1
   for _1 in range(0,int((dims_).shape[0])):
    self._size = (self._size * dims_[_1])
   _2=int((dims_).shape[0])
   if (int((sub).shape[0])!=int((cof_).shape[0])):
    raise mosek_fusion_LengthError._ctor_S("Mismatching data array length")
   if (int((sub).shape[1])!=_2):
    raise mosek_fusion_IndexError._ctor_S("An index key in sub has wrong length")
   _3=False
   for _4 in range(0,int((sub).shape[0])):
    for _5 in range(0,int((sub).shape[1])):
     if ((sub[_4,_5] < 0) or (sub[_4,_5] >= dims_[_5])):
      _3 = True
   if _3:
    raise mosek_fusion_IndexError._ctor_S("An index in sub is out of bounds")
   for _6 in range(0,int((sub).shape[0])):
    _7=0
    for _8 in range(0,int((sub).shape[1])):
     _7 = ((_7 * dims_[_8]) + sub[_6,_8])
    _0[_6] = _7
   self._dims = mosek.fusion.Utils.Tools._arraycopy__3I(dims_)
   _9=True
   for _10 in range(1,int((_0).shape[0])):
    _9 = (_9 and (_0[_10] >= _0[(_10 - 1)]))
   if _9:
    _11=1
    for _12 in range(1,int((_0).shape[0])):
     if (_0[(_12 - 1)] < _0[_12]):
      _11 += 1
    if (_11==int((_0).shape[0])):
     self._inst = mosek.fusion.Utils.Tools._arraycopy__3J(_0)
     self._cof = mosek.fusion.Utils.Tools._arraycopy__3D(cof_)
    else:
     self._inst = numpy.zeros((_11,), dtype=numpy.dtype(numpy.int64))
     self._inst[0] = _0[0]
     self._cof = numpy.zeros((_11,), dtype=numpy.dtype(numpy.float64))
     self._cof[0] = cof_[0]
     _13=0
     for _14 in range(1,int((_0).shape[0])):
      if (_0[_14] > _0[(_14 - 1)]):
       _13 += 1
       self._inst[_13] = _0[_14]
       self._cof[_13] = cof_[_14]
      else:
       self._cof[_13] = (self._cof[_13] + cof_[_14])
   else:
    _15=mosek.fusion.Utils.Tools._range_J(int((_0).shape[0]))
    mosek.fusion.CommonTools._argQsort__3J_3J_3JJJ(_15,_0,None,0,int((_0).shape[0]))
    _16=1
    for _17 in range(1,int((_0).shape[0])):
     if (_0[_15[(_17 - 1)]] < _0[_15[_17]]):
      _16 += 1
    self._inst = numpy.zeros((_16,), dtype=numpy.dtype(numpy.int64))
    self._inst[0] = _0[_15[0]]
    self._cof = numpy.zeros((_16,), dtype=numpy.dtype(numpy.float64))
    self._cof[0] = cof_[_15[0]]
    _18=0
    for _19 in range(1,int((_0).shape[0])):
     if (_0[_15[_19]] > _0[_15[(_19 - 1)]]):
      _18 += 1
      self._inst[_18] = _0[_15[_19]]
      self._cof[_18] = cof_[_15[_19]]
     else:
      self._cof[_18] = (self._cof[_18] + cof_[_15[_19]])
  @staticmethod
  def _ctor__3I_3J_3D(dims_,inst_,cof_):
    o = NDSparseArray.__new__(NDSparseArray)
    o._ctor_init__3I_3J_3D(dims_,inst_,cof_)
    return o
  @staticmethod
  def __match_ctor__3I_3J_3D(*args):
    if len(args) != 3: return False
    dims_,inst_,cof_, = args
    return (__arg_match__3I__(dims_) and __arg_match__3J__(inst_) and __arg_match__3D__(cof_))
  @staticmethod
  def __match_alt_ctor__3I_3J_3D(*args):
    if len(args) != 3: return False
    dims_,inst_,cof_, = args
    return (__arg_alt_match__3I__(dims_) and __arg_alt_match__3J__(inst_) and __arg_alt_match__3D__(cof_))
  def _ctor_alt_init__3I_3J_3D(self,dims_,inst_,cof_):
    self._ctor_init__3I_3J_3D(numpy.array(dims_,dtype=numpy.dtype(numpy.int32)),numpy.array(inst_,dtype=numpy.dtype(numpy.int64)),numpy.array(cof_,dtype=numpy.dtype(numpy.float64)))
  def _ctor_init__3I_3J_3D(self,dims_,inst_,cof_):
   self._size = 1
   for _0 in range(0,int((dims_).shape[0])):
    self._size = (self._size * dims_[_0])
   _1=int((inst_).shape[0])
   if (_1!=int((cof_).shape[0])):
    raise mosek_fusion_LengthError._ctor_S("Mismatching data array length")
   _2=False
   for _3 in range(0,_1):
    _2 = (_2 or ((inst_[_3] < 0) or (inst_[_3] >= self._size)))
   if _2:
    raise mosek_fusion_IndexError._ctor_S("An index in inst is out of bounds")
   self._dims = mosek.fusion.Utils.Tools._arraycopy__3I(dims_)
   _4=True
   for _5 in range(1,int((inst_).shape[0])):
    _4 = (_4 and (inst_[_5] >= inst_[(_5 - 1)]))
   if _4:
    _6=1
    for _7 in range(1,int((inst_).shape[0])):
     if (inst_[(_7 - 1)] < inst_[_7]):
      _6 += 1
    if (_6==int((inst_).shape[0])):
     self._inst = mosek.fusion.Utils.Tools._arraycopy__3J(inst_)
     self._cof = mosek.fusion.Utils.Tools._arraycopy__3D(cof_)
    else:
     self._inst = numpy.zeros((_6,), dtype=numpy.dtype(numpy.int64))
     self._inst[0] = inst_[0]
     self._cof = numpy.zeros((_6,), dtype=numpy.dtype(numpy.float64))
     self._cof[0] = cof_[0]
     _8=0
     for _9 in range(1,int((inst_).shape[0])):
      if (inst_[_9] > inst_[(_9 - 1)]):
       _8 += 1
       self._inst[_8] = inst_[_9]
       self._cof[_8] = cof_[_9]
      else:
       self._cof[_8] = (self._cof[_8] + cof_[_9])
   else:
    _10=mosek.fusion.Utils.Tools._range_J(int((inst_).shape[0]))
    mosek.fusion.CommonTools._argQsort__3J_3J_3JJJ(_10,inst_,None,0,int((inst_).shape[0]))
    _11=1
    for _12 in range(1,int((inst_).shape[0])):
     if (inst_[_10[(_12 - 1)]] < inst_[_10[_12]]):
      _11 += 1
    self._inst = numpy.zeros((_11,), dtype=numpy.dtype(numpy.int64))
    self._inst[0] = inst_[_10[0]]
    self._cof = numpy.zeros((_11,), dtype=numpy.dtype(numpy.float64))
    self._cof[0] = cof_[_10[0]]
    _13=0
    for _14 in range(1,int((inst_).shape[0])):
     if (inst_[_10[_14]] > self._inst[_10[(_14 - 1)]]):
      _13 += 1
      self._inst[_13] = inst_[_10[_14]]
      self._cof[_13] = cof_[_10[_14]]
     else:
      self._cof[_13] = (self._cof[_13] + cof_[_10[_14]])
  @staticmethod
  def _ctor_Lmosek_4fusion_4Matrix_2(m):
    o = NDSparseArray.__new__(NDSparseArray)
    o._ctor_init_Lmosek_4fusion_4Matrix_2(m)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    m, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(m))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    m, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(m))
  def _ctor_alt_init_Lmosek_4fusion_4Matrix_2(self,m):
    self._ctor_init_Lmosek_4fusion_4Matrix_2(m)
  def _ctor_init_Lmosek_4fusion_4Matrix_2(self,m):
   _0=m.numNonzeros()
   _1=m.numColumns()
   _2=m.numRows()
   _3=numpy.zeros((_0,), dtype=numpy.dtype(numpy.float64))
   _4=numpy.zeros((_0,), dtype=numpy.dtype(numpy.int32))
   _5=numpy.zeros((_0,), dtype=numpy.dtype(numpy.int32))
   m.getDataAsTriplets(_5,_4,_3)
   self._size = (numpy.int64(m.numRows()) * numpy.int64(m.numColumns()))
   self._dims = numpy.array([_2,_1], dtype=numpy.dtype(numpy.int32))
   self._inst = numpy.array([((numpy.int64(_5[_6]) * _1) + numpy.int64(_4[_6])) for _6 in range(0,_0)], dtype=numpy.dtype(numpy.int64))
   self._cof = _3
  @staticmethod
  def _match_make_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _match_alt_make_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _make_alt_Lmosek_4fusion_4Matrix_2(_t__0):
    return mosek_fusion_NDSparseArray._make_Lmosek_4fusion_4Matrix_2(_0)
  @staticmethod
  def _make_Lmosek_4fusion_4Matrix_2(_0):
   return (mosek_fusion_NDSparseArray._ctor_Lmosek_4fusion_4Matrix_2(_0))
  @staticmethod
  def _match_make__3I_3J_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3I__(_0) and __arg_match__3J__(_1) and __arg_match__3D__(_2))
  @staticmethod
  def _match_alt_make__3I_3J_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3J__(_1) and __arg_alt_match__3D__(_2))
  @staticmethod
  def _make_alt__3I_3J_3D(_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int64))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_NDSparseArray._make__3I_3J_3D(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _make__3I_3J_3D(_0,_1,_2):
   return (mosek_fusion_NDSparseArray._ctor__3I_3J_3D(_0,_1,_2))
  @staticmethod
  def _match_make__3I_3_5I_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3I__(_0) and __arg_match__3_5I__(_1) and __arg_match__3D__(_2))
  @staticmethod
  def _match_alt_make__3I_3_5I_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3_5I__(_1) and __arg_alt_match__3D__(_2))
  @staticmethod
  def _make_alt__3I_3_5I_3D(_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,ndmin=_monty.checkShape(_t__1,2),dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_NDSparseArray._make__3I_3_5I_3D(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _make__3I_3_5I_3D(_0,_1,_2):
   return (mosek_fusion_NDSparseArray._ctor__3I_3_5I_3D(_0,_1,_2))
 return NDSparseArray
mosek_fusion_NDSparseArray=__mk_mosek_fusion_NDSparseArray()
del __mk_mosek_fusion_NDSparseArray
def __mk_mosek_fusion_Matrix():
 class Matrix(object):
  __slots__ = ['_dimj','_dimi']
  def numColumns(self,*args):
    if False: pass
    elif mosek_fusion_Matrix._match_numColumns_(*args): 
      return self._numColumns_(*args)
    elif mosek_fusion_Matrix._match_alt_numColumns_(*args): 
      return self._numColumns_alt_(*args)
    else:
      raise ValueError('Invalid argument list numColumns('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Matrix.numColumns()')
  @staticmethod
  def eye(*args):
    if False: pass
    elif mosek_fusion_Matrix._match_eye_I(*args): 
      return mosek_fusion_Matrix._eye_I(*args)
    elif mosek_fusion_Matrix._match_alt_eye_I(*args): 
      return mosek_fusion_Matrix._eye_alt_I(*args)
    else:
      raise ValueError('Invalid argument list eye('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Matrix.eye(int32)')
  @staticmethod
  def sparse(*args):
    if False: pass
    elif mosek_fusion_Matrix._match_sparse__3_5D(*args): 
      return mosek_fusion_Matrix._sparse__3_5D(*args)
    elif mosek_fusion_Matrix._match_alt_sparse__3_5D(*args): 
      return mosek_fusion_Matrix._sparse_alt__3_5D(*args)
    elif mosek_fusion_Matrix._match_sparse__3_3Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Matrix._sparse__3_3Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Matrix._match_alt_sparse__3_3Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Matrix._sparse_alt__3_3Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Matrix._match_sparse_Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Matrix._sparse_Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Matrix._match_alt_sparse_Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Matrix._sparse_alt_Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Matrix._match_sparse_II(*args): 
      return mosek_fusion_Matrix._sparse_II(*args)
    elif mosek_fusion_Matrix._match_alt_sparse_II(*args): 
      return mosek_fusion_Matrix._sparse_alt_II(*args)
    elif mosek_fusion_Matrix._match_sparse__3I_3I_3D(*args): 
      return mosek_fusion_Matrix._sparse__3I_3I_3D(*args)
    elif mosek_fusion_Matrix._match_alt_sparse__3I_3I_3D(*args): 
      return mosek_fusion_Matrix._sparse_alt__3I_3I_3D(*args)
    elif mosek_fusion_Matrix._match_sparse__3I_3ID(*args): 
      return mosek_fusion_Matrix._sparse__3I_3ID(*args)
    elif mosek_fusion_Matrix._match_alt_sparse__3I_3ID(*args): 
      return mosek_fusion_Matrix._sparse_alt__3I_3ID(*args)
    elif mosek_fusion_Matrix._match_sparse_II_3I_3ID(*args): 
      return mosek_fusion_Matrix._sparse_II_3I_3ID(*args)
    elif mosek_fusion_Matrix._match_alt_sparse_II_3I_3ID(*args): 
      return mosek_fusion_Matrix._sparse_alt_II_3I_3ID(*args)
    elif mosek_fusion_Matrix._match_sparse_II_3I_3I_3D(*args): 
      return mosek_fusion_Matrix._sparse_II_3I_3I_3D(*args)
    elif mosek_fusion_Matrix._match_alt_sparse_II_3I_3I_3D(*args): 
      return mosek_fusion_Matrix._sparse_alt_II_3I_3I_3D(*args)
    else:
      raise ValueError('Invalid argument list sparse('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Matrix.sparse(array(double,ndim=2))\n\tmosek.fusion.Matrix.sparse(array(array(mosek.fusion.Matrix,ndim=1),ndim=1))\n\tmosek.fusion.Matrix.sparse(mosek.fusion.Matrix)\n\tmosek.fusion.Matrix.sparse(int32,int32)\n\tmosek.fusion.Matrix.sparse(array(int32,ndim=1),array(int32,ndim=1),array(double,ndim=1))\n\tmosek.fusion.Matrix.sparse(array(int32,ndim=1),array(int32,ndim=1),double)\n\tmosek.fusion.Matrix.sparse(int32,int32,array(int32,ndim=1),array(int32,ndim=1),double)\n\tmosek.fusion.Matrix.sparse(int32,int32,array(int32,ndim=1),array(int32,ndim=1),array(double,ndim=1))')
  @staticmethod
  def antidiag(*args):
    if False: pass
    elif mosek_fusion_Matrix._match_antidiag__3D(*args): 
      return mosek_fusion_Matrix._antidiag__3D(*args)
    elif mosek_fusion_Matrix._match_alt_antidiag__3D(*args): 
      return mosek_fusion_Matrix._antidiag_alt__3D(*args)
    elif mosek_fusion_Matrix._match_antidiag__3DI(*args): 
      return mosek_fusion_Matrix._antidiag__3DI(*args)
    elif mosek_fusion_Matrix._match_alt_antidiag__3DI(*args): 
      return mosek_fusion_Matrix._antidiag_alt__3DI(*args)
    elif mosek_fusion_Matrix._match_antidiag_ID(*args): 
      return mosek_fusion_Matrix._antidiag_ID(*args)
    elif mosek_fusion_Matrix._match_alt_antidiag_ID(*args): 
      return mosek_fusion_Matrix._antidiag_alt_ID(*args)
    elif mosek_fusion_Matrix._match_antidiag_IDI(*args): 
      return mosek_fusion_Matrix._antidiag_IDI(*args)
    elif mosek_fusion_Matrix._match_alt_antidiag_IDI(*args): 
      return mosek_fusion_Matrix._antidiag_alt_IDI(*args)
    else:
      raise ValueError('Invalid argument list antidiag('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Matrix.antidiag(array(double,ndim=1))\n\tmosek.fusion.Matrix.antidiag(array(double,ndim=1),int32)\n\tmosek.fusion.Matrix.antidiag(int32,double)\n\tmosek.fusion.Matrix.antidiag(int32,double,int32)')
  def getDataAsTriplets(self,*args):
    if False: pass
    elif mosek_fusion_Matrix._match_getDataAsTriplets__3I_3I_3D(*args): 
      return self._getDataAsTriplets__3I_3I_3D(*args)
    elif mosek_fusion_Matrix._match_alt_getDataAsTriplets__3I_3I_3D(*args): 
      return self._getDataAsTriplets_alt__3I_3I_3D(*args)
    else:
      raise ValueError('Invalid argument list getDataAsTriplets('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Matrix.getDataAsTriplets(array(int32,ndim=1),array(int32,ndim=1),array(double,ndim=1))')
  def get(self,*args):
    if False: pass
    elif mosek_fusion_Matrix._match_get_II(*args): 
      return self._get_II(*args)
    elif mosek_fusion_Matrix._match_alt_get_II(*args): 
      return self._get_alt_II(*args)
    else:
      raise ValueError('Invalid argument list get('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Matrix.get(int32,int32)')
  @staticmethod
  def dense(*args):
    if False: pass
    elif mosek_fusion_Matrix._match_dense__3_5D(*args): 
      return mosek_fusion_Matrix._dense__3_5D(*args)
    elif mosek_fusion_Matrix._match_alt_dense__3_5D(*args): 
      return mosek_fusion_Matrix._dense_alt__3_5D(*args)
    elif mosek_fusion_Matrix._match_dense_Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Matrix._dense_Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Matrix._match_alt_dense_Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Matrix._dense_alt_Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Matrix._match_dense_IID(*args): 
      return mosek_fusion_Matrix._dense_IID(*args)
    elif mosek_fusion_Matrix._match_alt_dense_IID(*args): 
      return mosek_fusion_Matrix._dense_alt_IID(*args)
    elif mosek_fusion_Matrix._match_dense_II_3D(*args): 
      return mosek_fusion_Matrix._dense_II_3D(*args)
    elif mosek_fusion_Matrix._match_alt_dense_II_3D(*args): 
      return mosek_fusion_Matrix._dense_alt_II_3D(*args)
    else:
      raise ValueError('Invalid argument list dense('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Matrix.dense(array(double,ndim=2))\n\tmosek.fusion.Matrix.dense(mosek.fusion.Matrix)\n\tmosek.fusion.Matrix.dense(int32,int32,double)\n\tmosek.fusion.Matrix.dense(int32,int32,array(double,ndim=1))')
  @staticmethod
  def ones(*args):
    if False: pass
    elif mosek_fusion_Matrix._match_ones_II(*args): 
      return mosek_fusion_Matrix._ones_II(*args)
    elif mosek_fusion_Matrix._match_alt_ones_II(*args): 
      return mosek_fusion_Matrix._ones_alt_II(*args)
    else:
      raise ValueError('Invalid argument list ones('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Matrix.ones(int32,int32)')
  def numRows(self,*args):
    if False: pass
    elif mosek_fusion_Matrix._match_numRows_(*args): 
      return self._numRows_(*args)
    elif mosek_fusion_Matrix._match_alt_numRows_(*args): 
      return self._numRows_alt_(*args)
    else:
      raise ValueError('Invalid argument list numRows('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Matrix.numRows()')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_Matrix._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_Matrix._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Matrix.toString()')
  @staticmethod
  def diag(*args):
    if False: pass
    elif mosek_fusion_Matrix._match_diag__3D(*args): 
      return mosek_fusion_Matrix._diag__3D(*args)
    elif mosek_fusion_Matrix._match_alt_diag__3D(*args): 
      return mosek_fusion_Matrix._diag_alt__3D(*args)
    elif mosek_fusion_Matrix._match_diag__3Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Matrix._diag__3Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Matrix._match_alt_diag__3Lmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Matrix._diag_alt__3Lmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Matrix._match_diag__3DI(*args): 
      return mosek_fusion_Matrix._diag__3DI(*args)
    elif mosek_fusion_Matrix._match_alt_diag__3DI(*args): 
      return mosek_fusion_Matrix._diag_alt__3DI(*args)
    elif mosek_fusion_Matrix._match_diag_ILmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Matrix._diag_ILmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Matrix._match_alt_diag_ILmosek_4fusion_4Matrix_2(*args): 
      return mosek_fusion_Matrix._diag_alt_ILmosek_4fusion_4Matrix_2(*args)
    elif mosek_fusion_Matrix._match_diag_ID(*args): 
      return mosek_fusion_Matrix._diag_ID(*args)
    elif mosek_fusion_Matrix._match_alt_diag_ID(*args): 
      return mosek_fusion_Matrix._diag_alt_ID(*args)
    elif mosek_fusion_Matrix._match_diag_IDI(*args): 
      return mosek_fusion_Matrix._diag_IDI(*args)
    elif mosek_fusion_Matrix._match_alt_diag_IDI(*args): 
      return mosek_fusion_Matrix._diag_alt_IDI(*args)
    else:
      raise ValueError('Invalid argument list diag('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Matrix.diag(array(double,ndim=1))\n\tmosek.fusion.Matrix.diag(array(mosek.fusion.Matrix,ndim=1))\n\tmosek.fusion.Matrix.diag(array(double,ndim=1),int32)\n\tmosek.fusion.Matrix.diag(int32,mosek.fusion.Matrix)\n\tmosek.fusion.Matrix.diag(int32,double)\n\tmosek.fusion.Matrix.diag(int32,double,int32)')
  def transpose(self,*args):
    if False: pass
    elif mosek_fusion_Matrix._match_transpose_(*args): 
      return self._transpose_(*args)
    elif mosek_fusion_Matrix._match_alt_transpose_(*args): 
      return self._transpose_alt_(*args)
    else:
      raise ValueError('Invalid argument list transpose('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Matrix.transpose()')
  def numNonzeros(self,*args):
    if False: pass
    elif mosek_fusion_Matrix._match_numNonzeros_(*args): 
      return self._numNonzeros_(*args)
    elif mosek_fusion_Matrix._match_alt_numNonzeros_(*args): 
      return self._numNonzeros_alt_(*args)
    else:
      raise ValueError('Invalid argument list numNonzeros('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Matrix.numNonzeros()')
  def isSparse(self,*args):
    if False: pass
    elif mosek_fusion_Matrix._match_isSparse_(*args): 
      return self._isSparse_(*args)
    elif mosek_fusion_Matrix._match_alt_isSparse_(*args): 
      return self._isSparse_alt_(*args)
    else:
      raise ValueError('Invalid argument list isSparse('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Matrix.isSparse()')
  def getDataAsArray(self,*args):
    if False: pass
    elif mosek_fusion_Matrix._match_getDataAsArray_(*args): 
      return self._getDataAsArray_(*args)
    elif mosek_fusion_Matrix._match_alt_getDataAsArray_(*args): 
      return self._getDataAsArray_alt_(*args)
    else:
      raise ValueError('Invalid argument list getDataAsArray('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Matrix.getDataAsArray()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.Matrix: '+self._toString_()
  @staticmethod
  def _ctor_II(di,dj):
    o = Matrix.__new__(Matrix)
    o._ctor_init_II(di,dj)
    return o
  @staticmethod
  def __match_ctor_II(*args):
    if len(args) != 2: return False
    di,dj, = args
    return (__arg_match_I__(di) and __arg_match_I__(dj))
  @staticmethod
  def __match_alt_ctor_II(*args):
    if len(args) != 2: return False
    di,dj, = args
    return (__arg_alt_match_I__(di) and __arg_alt_match_I__(dj))
  def _ctor_alt_init_II(self,di,dj):
    self._ctor_init_II(numpy.int32(di),numpy.int32(dj))
  def _ctor_init_II(self,di,dj):
   if ((di < 0) or (dj < 0)):
    raise mosek_fusion_DimensionError._ctor_S("Invalid dimensions")
   self._dimi = di
   self._dimj = dj
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   return ("")
  def _switchDims_alt_(self,):
    return self._switchDims_()
  def _switchDims_(self,):
   _0=self._dimi
   self._dimi = self._dimj
   self._dimj = _0
  @staticmethod
  def _match_diag_ILmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _match_alt_diag_ILmosek_4fusion_4Matrix_2(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_Lmosek_4fusion_4Matrix_2__(_1))
  @staticmethod
  def _diag_alt_ILmosek_4fusion_4Matrix_2(_t__0,_t__1):
    return mosek_fusion_Matrix._diag_ILmosek_4fusion_4Matrix_2(numpy.int32(__0),_1)
  @staticmethod
  def _diag_ILmosek_4fusion_4Matrix_2(_0,_1):
   return (mosek.fusion.Matrix._diag__3Lmosek_4fusion_4Matrix_2(numpy.array([_1 for _2 in range(0,_0)], dtype=numpy.dtype(object))))
  @staticmethod
  def _match_diag__3Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _match_alt_diag__3Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _diag_alt__3Lmosek_4fusion_4Matrix_2(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(object))
   _1_res = mosek_fusion_Matrix._diag__3Lmosek_4fusion_4Matrix_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _diag__3Lmosek_4fusion_4Matrix_2(_0):
   _1=_0
   _2=0
   _3=0
   _4=0
   for _5 in range(0,int((_0).shape[0])):
    _4 = (_4 + (_0[_5]._dimi))
    _3 = (_3 + (_0[_5]._dimj))
    _2 = (_2 + _0[_5].numNonzeros())
   _6=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int32))
   _7=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int32))
   _8=numpy.zeros((_2,), dtype=numpy.dtype(numpy.float64))
   _9=0
   _10=0
   _11=0
   for _12 in range(0,int((_0).shape[0])):
    _13=_0[_12].numNonzeros()
    _14=numpy.zeros((_13,), dtype=numpy.dtype(numpy.float64))
    _15=numpy.zeros((_13,), dtype=numpy.dtype(numpy.int32))
    _16=numpy.zeros((_13,), dtype=numpy.dtype(numpy.int32))
    _0[_12].getDataAsTriplets(_16,_15,_14)
    mosek.fusion.Utils.Tools._arraycopy__3DJ_3DJJ(_14,0,_8,_11,_13)
    for _17 in range(0,_13):
     _6[(_11 + _17)] = (_16[_17] + _10)
     _7[(_11 + _17)] = (_16[_17] + _9)
    _11 = (_11 + _13)
    _10 = (_10 + (_0[_12]._dimi))
    _9 = (_9 + (_0[_12]._dimj))
   return (mosek_fusion_SparseMatrix._ctor_II_3I_3I_3D(_4,_3,_6,_7,_8))
  @staticmethod
  def _match_antidiag_IDI(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_D__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_antidiag_IDI(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_D__(_1) and __arg_alt_match_I__(_2))
  @staticmethod
  def _antidiag_alt_IDI(_t__0,_t__1,_t__2):
    return mosek_fusion_Matrix._antidiag_IDI(numpy.int32(__0),numpy.float64(__1),numpy.int32(__2))
  @staticmethod
  def _antidiag_IDI(_0,_1,_2):
   if ((_2 < _0) and (_2 >= 0)):
    return (mosek.fusion.Matrix._antidiag__3DI(mosek.fusion.Utils.Tools._makevector_DI(_1,(_0 - _2)),_2))
   elif ((_2 > (- _0)) and (_2 < 0)): # bld/grindsted/final/default/src/fusion/Matrix.mbi:489:16-32
    return (mosek.fusion.Matrix._antidiag__3DI(mosek.fusion.Utils.Tools._makevector_DI(_1,(_0 + _2)),_2))
   else:
    raise mosek_fusion_DimensionError._ctor_S("Diagonal index out of bounds")
  @staticmethod
  def _match_antidiag_ID(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_D__(_1))
  @staticmethod
  def _match_alt_antidiag_ID(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_D__(_1))
  @staticmethod
  def _antidiag_alt_ID(_t__0,_t__1):
    return mosek_fusion_Matrix._antidiag_ID(numpy.int32(__0),numpy.float64(__1))
  @staticmethod
  def _antidiag_ID(_0,_1):
   return (mosek.fusion.Matrix._antidiag__3DI(mosek.fusion.Utils.Tools._makevector_DI(_1,_0),0))
  @staticmethod
  def _match_diag_IDI(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_D__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_diag_IDI(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_D__(_1) and __arg_alt_match_I__(_2))
  @staticmethod
  def _diag_alt_IDI(_t__0,_t__1,_t__2):
    return mosek_fusion_Matrix._diag_IDI(numpy.int32(__0),numpy.float64(__1),numpy.int32(__2))
  @staticmethod
  def _diag_IDI(_0,_1,_2):
   if ((_2 < _0) and (_2 >= 0)):
    return (mosek.fusion.Matrix._diag__3DI(mosek.fusion.Utils.Tools._makevector_DI(_1,(_0 - _2)),_2))
   elif ((_2 > (- _0)) and (_2 < 0)): # bld/grindsted/final/default/src/fusion/Matrix.mbi:473:16-32
    return (mosek.fusion.Matrix._diag__3DI(mosek.fusion.Utils.Tools._makevector_DI(_1,(_0 + _2)),_2))
   else:
    raise mosek_fusion_DimensionError._ctor_S("Diagonal index out of bounds")
  @staticmethod
  def _match_diag_ID(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_D__(_1))
  @staticmethod
  def _match_alt_diag_ID(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_D__(_1))
  @staticmethod
  def _diag_alt_ID(_t__0,_t__1):
    return mosek_fusion_Matrix._diag_ID(numpy.int32(__0),numpy.float64(__1))
  @staticmethod
  def _diag_ID(_0,_1):
   return (mosek.fusion.Matrix._diag__3DI(mosek.fusion.Utils.Tools._makevector_DI(_1,_0),0))
  @staticmethod
  def _match_antidiag__3DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_antidiag__3DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _antidiag_alt__3DI(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=numpy.int32(_t__1)
   _1_res = mosek_fusion_Matrix._antidiag__3DI(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _antidiag__3DI(_0,_1):
   _2=(_1 if ((_1 > 0) ) else (- _1))
   _3=(int((_0).shape[0]) + _2)
   _4=int((_0).shape[0])
   if (_1 >= 0):
    _5=mosek.fusion.Utils.Tools._range_II(_1,(_4 + _1))
    _6=numpy.array([((_4 + _1) - _7) for _7 in range(1,(_4 + 1))], dtype=numpy.dtype(numpy.int32))
    return (mosek_fusion_SparseMatrix._ctor_II_3I_3I_3D(_3,_3,_5,_6,_0))
   else:
    _8=mosek.fusion.Utils.Tools._range_II(0,_4)
    _9=numpy.array([(_4 - _10) for _10 in range(1,(_4 + 1))], dtype=numpy.dtype(numpy.int32))
    return (mosek_fusion_SparseMatrix._ctor_II_3I_3I_3D(_3,_3,_8,_9,_0))
  @staticmethod
  def _match_antidiag__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_antidiag__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  @staticmethod
  def _antidiag_alt__3D(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Matrix._antidiag__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _antidiag__3D(_0):
   return (mosek.fusion.Matrix._antidiag__3DI(_0,0))
  @staticmethod
  def _match_diag__3DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match__3D__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_diag__3DI(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match__3D__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _diag_alt__3DI(_t__0,_t__1):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1=numpy.int32(_t__1)
   _1_res = mosek_fusion_Matrix._diag__3DI(_0,_1)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _diag__3DI(_0,_1):
   _2=(_1 if ((_1 > 0) ) else (- _1))
   _3=(int((_0).shape[0]) + _2)
   _4=int((_0).shape[0])
   if (_1 >= 0):
    _5=mosek.fusion.Utils.Tools._range_II(0,_4)
    _6=mosek.fusion.Utils.Tools._range_II(_2,(_4 + _2))
    return (mosek_fusion_SparseMatrix._ctor_II_3I_3I_3D(_3,_3,_5,_6,_0))
   else:
    _7=mosek.fusion.Utils.Tools._range_II(_2,(_4 + _2))
    _8=mosek.fusion.Utils.Tools._range_II(0,_4)
    return (mosek_fusion_SparseMatrix._ctor_II_3I_3I_3D(_3,_3,_7,_8,_0))
  @staticmethod
  def _match_diag__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3D__(_0))
  @staticmethod
  def _match_alt_diag__3D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3D__(_0))
  @staticmethod
  def _diag_alt__3D(_t__0):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Matrix._diag__3D(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _diag__3D(_0):
   return (mosek.fusion.Matrix._diag__3DI(_0,0))
  @staticmethod
  def _match_ones_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_ones_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _ones_alt_II(_t__0,_t__1):
    return mosek_fusion_Matrix._ones_II(numpy.int32(__0),numpy.int32(__1))
  @staticmethod
  def _ones_II(_0,_1):
   return (mosek.fusion.Matrix._dense_IID(_0,_1,1.0))
  @staticmethod
  def _match_eye_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_eye_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  @staticmethod
  def _eye_alt_I(_t__0):
    return mosek_fusion_Matrix._eye_I(numpy.int32(__0))
  @staticmethod
  def _eye_I(_0):
   return (mosek.fusion.Matrix._diag__3D(numpy.array([1.0 for _1 in range(0,_0)], dtype=numpy.dtype(numpy.float64))))
  @staticmethod
  def _match_dense_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _match_alt_dense_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _dense_alt_Lmosek_4fusion_4Matrix_2(_t__0):
    return mosek_fusion_Matrix._dense_Lmosek_4fusion_4Matrix_2(_0)
  @staticmethod
  def _dense_Lmosek_4fusion_4Matrix_2(_0):
   return (mosek_fusion_DenseMatrix._ctor_Lmosek_4fusion_4Matrix_2(_0))
  @staticmethod
  def _match_dense_IID(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match_D__(_2))
  @staticmethod
  def _match_alt_dense_IID(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match_D__(_2))
  @staticmethod
  def _dense_alt_IID(_t__0,_t__1,_t__2):
    return mosek_fusion_Matrix._dense_IID(numpy.int32(__0),numpy.int32(__1),numpy.float64(__2))
  @staticmethod
  def _dense_IID(_0,_1,_2):
   return (mosek_fusion_DenseMatrix._ctor_IID(_0,_1,_2))
  @staticmethod
  def _match_dense_II_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match__3D__(_2))
  @staticmethod
  def _match_alt_dense_II_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match__3D__(_2))
  @staticmethod
  def _dense_alt_II_3D(_t__0,_t__1,_t__2):
   _0=numpy.int32(_t__0)
   _1=numpy.int32(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Matrix._dense_II_3D(_0,_1,_2)
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _dense_II_3D(_0,_1,_2):
   return (mosek_fusion_DenseMatrix._ctor_II_3D(_0,_1,_2))
  @staticmethod
  def _match_dense__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5D__(_0))
  @staticmethod
  def _match_alt_dense__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5D__(_0))
  @staticmethod
  def _dense_alt__3_5D(_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Matrix._dense__3_5D(_0)
   return _1_res
  @staticmethod
  def _dense__3_5D(_0):
   return (mosek_fusion_DenseMatrix._ctor__3_5D(_0))
  @staticmethod
  def _match_sparse_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _match_alt_sparse_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _sparse_alt_Lmosek_4fusion_4Matrix_2(_t__0):
    return mosek_fusion_Matrix._sparse_Lmosek_4fusion_4Matrix_2(_0)
  @staticmethod
  def _sparse_Lmosek_4fusion_4Matrix_2(_0):
   _1=numpy.zeros((_0.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
   _2=numpy.zeros((_0.numNonzeros(),), dtype=numpy.dtype(numpy.int32))
   _3=numpy.zeros((_0.numNonzeros(),), dtype=numpy.dtype(numpy.float64))
   _0.getDataAsTriplets(_1,_2,_3)
   return (mosek_fusion_SparseMatrix._ctor_II_3I_3I_3D(_0.numRows(),_0.numColumns(),_1,_2,_3))
  @staticmethod
  def _match_sparse__3_3Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_3Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _match_alt_sparse__3_3Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_3Lmosek_4fusion_4Matrix_2__(_0))
  @staticmethod
  def _sparse_alt__3_3Lmosek_4fusion_4Matrix_2(_t__0):
   _0=_monty.makeJaggedArray(_t__0,(1,1),numpy.dtype(object))
   _1_res = mosek_fusion_Matrix._sparse__3_3Lmosek_4fusion_4Matrix_2(_0)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _sparse__3_3Lmosek_4fusion_4Matrix_2(_0):
   _1=int((_0).shape[0])
   _2=int((_0[0]).shape[0])
   _3=numpy.zeros((_1,), dtype=numpy.dtype(numpy.int32))
   _4=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int32))
   _5=0
   _6=0
   _7=0
   while (_7 < _1):
    _8=0
    while (_8 < _2):
     _9=_0[_7][_8]
     if (_9 is not None):
      if (_4[_8]==0):
       _4[_8] = (_9._dimj)
      elif (_4[_8]!=(_9._dimj)): # bld/grindsted/final/default/src/fusion/Matrix.mbi:253:23-41
       raise mosek_fusion_SparseFormatError._ctor_S("Sparse matrix construction blocks are not aligned")
      if (_3[_7]==0):
       _3[_7] = (_9._dimi)
      elif (_3[_7]!=(_9._dimi)): # bld/grindsted/final/default/src/fusion/Matrix.mbi:262:23-41
       raise mosek_fusion_SparseFormatError._ctor_S("Sparse matrix construction blocks are not aligned")
      _5 = (_5 + _9.numNonzeros())
     _6 += 1
     _8 += 1
    _7 += 1
   _10=numpy.zeros((_5,), dtype=numpy.dtype(numpy.float64))
   _11=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int32))
   _12=numpy.zeros((_5,), dtype=numpy.dtype(numpy.int32))
   _13=0
   _14=0
   _15=0
   while (_15 < _1):
    _16=numpy.zeros((_2,), dtype=numpy.dtype(numpy.int32))
    _17=0
    while (_17 < _3[_15]):
     _18=0
     _19=0
     while (_19 < _2):
      _20=_0[_15][_19]
      if (_20 is not None):
       _22=_20
       if   isinstance(_22,mosek_fusion_DenseMatrix):
        m=_22
        _22=_16[_19]
        _23=0
        while (_23 < (m._dimj)):
         _10[_13] = (m._data)[_22]
         _11[_13] = (_14 + _17)
         _12[_13] = (_18 + _23)
         _22 += 1
         _13 += 1
         _23 += 1
        _16[_19] = _22
       elif isinstance(_22,mosek_fusion_SparseMatrix):
        _24=_22
        _25 = _16[_19]
        while ((_25 < (_24._nnz)) and ((_24._subi)[_25]==_17)):
         _10[_13] = (_24._val)[_25]
         _12[_13] = ((_24._subj)[_25] + _18)
         _11[_13] = (_14 + _17)
         _13 += 1
         _25 += 1
        _16[_19] = _25
       else:
        m=_22
        raise mosek_fusion_MatrixError._ctor_S("Unknown matrix type.")
      _18 = (_18 + _4[_19])
      _19 += 1
     _17 += 1
    _14 = (_14 + _3[_15])
    _15 += 1
   _26=0
   _27=0
   _28=0
   while (_28 < _1):
    _26 = (_26 + _3[_28])
    _28 += 1
   _29=0
   while (_29 < _2):
    _27 = (_27 + _4[_29])
    _29 += 1
   return (mosek_fusion_SparseMatrix._ctor_II_3I_3I_3D(_26,_27,_11,_12,_10))
  @staticmethod
  def _match_sparse__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match__3_5D__(_0))
  @staticmethod
  def _match_alt_sparse__3_5D(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match__3_5D__(_0))
  @staticmethod
  def _sparse_alt__3_5D(_t__0):
   _0=numpy.array(_t__0,ndmin=_monty.checkShape(_t__0,2),dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Matrix._sparse__3_5D(_0)
   return _1_res
  @staticmethod
  def _sparse__3_5D(_0):
   _1=int((_0).shape[0])
   _2=int((_0).shape[1])
   _3=numpy.int64((_1 * _2))
   _4=0
   _5=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
   _6=numpy.zeros((_3,), dtype=numpy.dtype(numpy.int32))
   _7=numpy.zeros((_3,), dtype=numpy.dtype(numpy.float64))
   _8=0
   while (_8 < _1):
    _9=0
    while (_9 < _2):
     _5[_4] = _8
     _6[_4] = _9
     _7[_4] = _0[_8,_9]
     _4 += 1
     _9 += 1
    _8 += 1
   return (mosek_fusion_SparseMatrix._ctor_II_3I_3I_3D(_1,_2,_5,_6,_7))
  @staticmethod
  def _match_sparse_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_sparse_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  @staticmethod
  def _sparse_alt_II(_t__0,_t__1):
    return mosek_fusion_Matrix._sparse_II(numpy.int32(__0),numpy.int32(__1))
  @staticmethod
  def _sparse_II(_0,_1):
   return (mosek_fusion_SparseMatrix._ctor_II_3I_3I_3DJ(_0,_1,numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)),numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)),numpy.zeros((0,), dtype=numpy.dtype(numpy.float64)),0))
  @staticmethod
  def _match_sparse_II_3I_3ID(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match__3I__(_2) and __arg_match__3I__(_3) and __arg_match_D__(_4))
  @staticmethod
  def _match_alt_sparse_II_3I_3ID(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match__3I__(_2) and __arg_alt_match__3I__(_3) and __arg_alt_match_D__(_4))
  @staticmethod
  def _sparse_alt_II_3I_3ID(_t__0,_t__1,_t__2,_t__3,_t__4):
   _0=numpy.int32(_t__0)
   _1=numpy.int32(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.int32))
   _4=numpy.float64(_t__4)
   _1_res = mosek_fusion_Matrix._sparse_II_3I_3ID(_0,_1,_2,_3,_4)
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _sparse_II_3I_3ID(_0,_1,_2,_3,_4):
   _5=0
   if (_2 is not None):
    _5 = int((_2).shape[0])
   elif (_3 is not None): # bld/grindsted/final/default/src/fusion/Matrix.mbi:197:16-28
    _5 = int((_3).shape[0])
   return (mosek.fusion.Matrix._sparse_II_3I_3I_3D(_0,_1,_2,_3,mosek.fusion.Utils.Tools._makevector_DI(_4,_5)))
  @staticmethod
  def _match_sparse__3I_3ID(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1) and __arg_match_D__(_2))
  @staticmethod
  def _match_alt_sparse__3I_3ID(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match_D__(_2))
  @staticmethod
  def _sparse_alt__3I_3ID(_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.float64(_t__2)
   _1_res = mosek_fusion_Matrix._sparse__3I_3ID(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _sparse__3I_3ID(_0,_1,_2):
   _3=0
   _4=0
   _5=int((_0).shape[0])
   if (_5 > int((_1).shape[0])):
    _5 = int((_1).shape[0])
   for _6 in range(0,_5):
    if (_4 < _0[_6]):
     _4 = _0[_6]
    if (_3 < _1[_6]):
     _3 = _1[_6]
   return (mosek.fusion.Matrix._sparse_II_3I_3ID((_4 + 1),(_3 + 1),_0,_1,_2))
  @staticmethod
  def _match_sparse__3I_3I_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1) and __arg_match__3D__(_2))
  @staticmethod
  def _match_alt_sparse__3I_3I_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3D__(_2))
  @staticmethod
  def _sparse_alt__3I_3I_3D(_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Matrix._sparse__3I_3I_3D(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _sparse__3I_3I_3D(_0,_1,_2):
   _3=0
   _4=0
   _5=int((_0).shape[0])
   if (_5 > int((_1).shape[0])):
    _5 = int((_1).shape[0])
   if (_5 > int((_2).shape[0])):
    _5 = int((_2).shape[0])
   for _6 in range(0,_5):
    if (_4 < _0[_6]):
     _4 = _0[_6]
    if (_3 < _1[_6]):
     _3 = _1[_6]
   return (mosek.fusion.Matrix._sparse_II_3I_3I_3D((_4 + 1),(_3 + 1),_0,_1,_2))
  @staticmethod
  def _match_sparse_II_3I_3I_3D(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match__3I__(_2) and __arg_match__3I__(_3) and __arg_match__3D__(_4))
  @staticmethod
  def _match_alt_sparse_II_3I_3I_3D(*args):
    if len(args) != 5: return False
    _0,_1,_2,_3,_4, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match__3I__(_2) and __arg_alt_match__3I__(_3) and __arg_alt_match__3D__(_4))
  @staticmethod
  def _sparse_alt_II_3I_3I_3D(_t__0,_t__1,_t__2,_t__3,_t__4):
   _0=numpy.int32(_t__0)
   _1=numpy.int32(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.array(_t__3,dtype=numpy.dtype(numpy.int32))
   _4=numpy.array(_t__4,dtype=numpy.dtype(numpy.float64))
   _1_res = mosek_fusion_Matrix._sparse_II_3I_3I_3D(_0,_1,_2,_3,_4)
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__3[:] = _3
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__4[:] = _4
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  @staticmethod
  def _sparse_II_3I_3I_3D(_0,_1,_2,_3,_4):
   _5=(_4 if ((_4 is not None) ) else numpy.zeros((0,), dtype=numpy.dtype(numpy.float64)))
   _6=(_3 if ((_3 is not None) ) else numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)))
   _7=(_2 if ((_2 is not None) ) else numpy.zeros((0,), dtype=numpy.dtype(numpy.int32)))
   _8=int((_7).shape[0])
   if ((int((_6).shape[0])!=_8) or (int((_5).shape[0])!=_8)):
    raise mosek_fusion_SparseFormatError._ctor_S("Arrays defining sparse data have different lengths")
   return (mosek_fusion_SparseMatrix._ctor_II_3I_3I_3DJ(_0,_1,_7,_6,_5,_8))
  @staticmethod
  def _match_get_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_get_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _get_alt_II(self,_t__0,_t__1):
    return self._get_II(numpy.int32(__0),numpy.int32(__1))
  def _get_II(self,_0,_1):
   pass
  @staticmethod
  def _match_isSparse_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_isSparse_(*args):
    if len(args) != 0: return False
    return True
  def _isSparse_alt_(self,):
    return self._isSparse_()
  def _isSparse_(self,):
   pass
  @staticmethod
  def _match_getDataAsArray_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getDataAsArray_(*args):
    if len(args) != 0: return False
    return True
  def _getDataAsArray_alt_(self,):
    return self._getDataAsArray_()
  def _getDataAsArray_(self,):
   pass
  @staticmethod
  def _match_getDataAsTriplets__3I_3I_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1) and __arg_match__3D__(_2))
  @staticmethod
  def _match_alt_getDataAsTriplets__3I_3I_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3D__(_2))
  def _getDataAsTriplets_alt__3I_3I_3D(self,_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _1_res = self._getDataAsTriplets__3I_3I_3D(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _getDataAsTriplets__3I_3I_3D(self,_0,_1,_2):
   pass
  @staticmethod
  def _match_transpose_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_transpose_(*args):
    if len(args) != 0: return False
    return True
  def _transpose_alt_(self,):
    return self._transpose_()
  def _transpose_(self,):
   pass
  @staticmethod
  def _match_numNonzeros_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_numNonzeros_(*args):
    if len(args) != 0: return False
    return True
  def _numNonzeros_alt_(self,):
    return self._numNonzeros_()
  def _numNonzeros_(self,):
   pass
  @staticmethod
  def _match_numColumns_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_numColumns_(*args):
    if len(args) != 0: return False
    return True
  def _numColumns_alt_(self,):
    return self._numColumns_()
  def _numColumns_(self,):
   return numpy.int32(self._dimj)
  @staticmethod
  def _match_numRows_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_numRows_(*args):
    if len(args) != 0: return False
    return True
  def _numRows_alt_(self,):
    return self._numRows_()
  def _numRows_(self,):
   return numpy.int32(self._dimi)
 return Matrix
mosek_fusion_Matrix=__mk_mosek_fusion_Matrix()
del __mk_mosek_fusion_Matrix
def __mk_mosek_fusion_DenseMatrix():
 class DenseMatrix(mosek_fusion_Matrix):
  __slots__ = ['_nnz','_data']
  def transpose(self,*args):
    if False: pass
    elif mosek_fusion_DenseMatrix._match_transpose_(*args): 
      return self._transpose_(*args)
    elif mosek_fusion_DenseMatrix._match_alt_transpose_(*args): 
      return self._transpose_alt_(*args)
    else:
      raise ValueError('Invalid argument list transpose('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.DenseMatrix.transpose()')
  def get(self,*args):
    if False: pass
    elif mosek_fusion_DenseMatrix._match_get_II(*args): 
      return self._get_II(*args)
    elif mosek_fusion_DenseMatrix._match_alt_get_II(*args): 
      return self._get_alt_II(*args)
    else:
      raise ValueError('Invalid argument list get('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.DenseMatrix.get(int32,int32)')
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_DenseMatrix._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_DenseMatrix._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.DenseMatrix.toString()')
  def getDataAsArray(self,*args):
    if False: pass
    elif mosek_fusion_DenseMatrix._match_getDataAsArray_(*args): 
      return self._getDataAsArray_(*args)
    elif mosek_fusion_DenseMatrix._match_alt_getDataAsArray_(*args): 
      return self._getDataAsArray_alt_(*args)
    else:
      raise ValueError('Invalid argument list getDataAsArray('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.DenseMatrix.getDataAsArray()')
  def isSparse(self,*args):
    if False: pass
    elif mosek_fusion_DenseMatrix._match_isSparse_(*args): 
      return self._isSparse_(*args)
    elif mosek_fusion_DenseMatrix._match_alt_isSparse_(*args): 
      return self._isSparse_alt_(*args)
    else:
      raise ValueError('Invalid argument list isSparse('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.DenseMatrix.isSparse()')
  def getDataAsTriplets(self,*args):
    if False: pass
    elif mosek_fusion_DenseMatrix._match_getDataAsTriplets__3I_3I_3D(*args): 
      return self._getDataAsTriplets__3I_3I_3D(*args)
    elif mosek_fusion_DenseMatrix._match_alt_getDataAsTriplets__3I_3I_3D(*args): 
      return self._getDataAsTriplets_alt__3I_3I_3D(*args)
    else:
      raise ValueError('Invalid argument list getDataAsTriplets('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.DenseMatrix.getDataAsTriplets(array(int32,ndim=1),array(int32,ndim=1),array(double,ndim=1))')
  def numNonzeros(self,*args):
    if False: pass
    elif mosek_fusion_DenseMatrix._match_numNonzeros_(*args): 
      return self._numNonzeros_(*args)
    elif mosek_fusion_DenseMatrix._match_alt_numNonzeros_(*args): 
      return self._numNonzeros_alt_(*args)
    else:
      raise ValueError('Invalid argument list numNonzeros('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.DenseMatrix.numNonzeros()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.DenseMatrix: '+self._toString_()
  @staticmethod
  def _ctor_II_3D(dimi_,dimj_,cof):
    o = DenseMatrix.__new__(DenseMatrix)
    o._ctor_init_II_3D(dimi_,dimj_,cof)
    return o
  @staticmethod
  def __match_ctor_II_3D(*args):
    if len(args) != 3: return False
    dimi_,dimj_,cof, = args
    return (__arg_match_I__(dimi_) and __arg_match_I__(dimj_) and __arg_match__3D__(cof))
  @staticmethod
  def __match_alt_ctor_II_3D(*args):
    if len(args) != 3: return False
    dimi_,dimj_,cof, = args
    return (__arg_alt_match_I__(dimi_) and __arg_alt_match_I__(dimj_) and __arg_alt_match__3D__(cof))
  def _ctor_alt_init_II_3D(self,dimi_,dimj_,cof):
    self._ctor_init_II_3D(numpy.int32(dimi_),numpy.int32(dimj_),numpy.array(cof,dtype=numpy.dtype(numpy.float64)))
  def _ctor_init_II_3D(self,dimi_,dimj_,cof):
   mosek_fusion_Matrix._ctor_init_II(self,dimi_,dimj_)
   self._nnz = numpy.int64((dimi_ * dimj_))
   self._data = numpy.zeros(((dimi_ * dimj_),), dtype=numpy.dtype(numpy.float64))
   mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(cof,0,self._data,0,(dimi_ * dimj_))
  @staticmethod
  def _ctor_Lmosek_4fusion_4Matrix_2(m_):
    o = DenseMatrix.__new__(DenseMatrix)
    o._ctor_init_Lmosek_4fusion_4Matrix_2(m_)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    m_, = args
    return (__arg_match_Lmosek_4fusion_4Matrix_2__(m_))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4Matrix_2(*args):
    if len(args) != 1: return False
    m_, = args
    return (__arg_alt_match_Lmosek_4fusion_4Matrix_2__(m_))
  def _ctor_alt_init_Lmosek_4fusion_4Matrix_2(self,m_):
    self._ctor_init_Lmosek_4fusion_4Matrix_2(m_)
  def _ctor_init_Lmosek_4fusion_4Matrix_2(self,m_):
   mosek_fusion_Matrix._ctor_init_II(self,(m_._dimi),(m_._dimj))
   _1=m_
   if   isinstance(_1,mosek_fusion_DenseMatrix):
    m=_1
    self._data = mosek.fusion.Utils.Tools._arraycopy__3D((m._data))
   elif isinstance(_1,mosek_fusion_SparseMatrix):
    _1=_1
    self._data = mosek.fusion.Utils.Tools._zeros_I(((_1._dimi) * (_1._dimj)))
    for _2 in range(0,(_1._nnz)):
     self._data[(((_1._subi)[_2] * self._dimj) + (_1._subj)[_2])] = (_1._val)[_2]
   else:
    m=_1
    raise mosek_fusion_MatrixError._ctor_S("Unknown matrix type.")
   self._nnz = numpy.int64((self._dimi * self._dimj))
  @staticmethod
  def _ctor__3_5D(d):
    o = DenseMatrix.__new__(DenseMatrix)
    o._ctor_init__3_5D(d)
    return o
  @staticmethod
  def __match_ctor__3_5D(*args):
    if len(args) != 1: return False
    d, = args
    return (__arg_match__3_5D__(d))
  @staticmethod
  def __match_alt_ctor__3_5D(*args):
    if len(args) != 1: return False
    d, = args
    return (__arg_alt_match__3_5D__(d))
  def _ctor_alt_init__3_5D(self,d):
    self._ctor_init__3_5D(numpy.array(d,dtype=numpy.dtype(numpy.float64)))
  def _ctor_init__3_5D(self,d):
   mosek_fusion_Matrix._ctor_init_II(self,int((d).shape[0]),int((d).shape[1]))
   self._data = numpy.array([d[_0,_1] for _0 in range(0,self._dimi) for _1 in range(0,self._dimj)], dtype=numpy.dtype(numpy.float64))
   self._nnz = numpy.int64((self._dimi * self._dimj))
  @staticmethod
  def _ctor_IID(dimi_,dimj_,value_):
    o = DenseMatrix.__new__(DenseMatrix)
    o._ctor_init_IID(dimi_,dimj_,value_)
    return o
  @staticmethod
  def __match_ctor_IID(*args):
    if len(args) != 3: return False
    dimi_,dimj_,value_, = args
    return (__arg_match_I__(dimi_) and __arg_match_I__(dimj_) and __arg_match_D__(value_))
  @staticmethod
  def __match_alt_ctor_IID(*args):
    if len(args) != 3: return False
    dimi_,dimj_,value_, = args
    return (__arg_alt_match_I__(dimi_) and __arg_alt_match_I__(dimj_) and __arg_alt_match_D__(value_))
  def _ctor_alt_init_IID(self,dimi_,dimj_,value_):
    self._ctor_init_IID(numpy.int32(dimi_),numpy.int32(dimj_),numpy.float64(value_))
  def _ctor_init_IID(self,dimi_,dimj_,value_):
   mosek_fusion_Matrix._ctor_init_II(self,dimi_,dimj_)
   self._data = numpy.array([value_ for _0 in range(0,dimi_) for _1 in range(0,dimj_)], dtype=numpy.dtype(numpy.float64))
   self._nnz = numpy.int64((dimi_ * dimj_))
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   _0=mosek.fusion.Utils.StringBuffer()
   _0._a_S("DenseMatrix(")
   _0._a_I(self._dimi)
   _0._a_S(",")
   _0._a_I(self._dimj)
   _0._a_S(": ")
   _1=0
   _2=0
   while (_2 < self._dimi):
    if (_2 > 0):
     _0._a_S(",")
    _0._a_S("[ ")
    _0._a_D(self._data[_1])
    _1 += 1
    _3=1
    while (_3 < self._dimj):
     _0._a_S(",")
     _0._a_D(self._data[_1])
     _1 += 1
     _3 += 1
    _0._a_S(" ]")
    _2 += 1
   _0._a_S(")")
   return (_0._toString_())
  @staticmethod
  def _match_transpose_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_transpose_(*args):
    if len(args) != 0: return False
    return True
  def _transpose_alt_(self,):
    return self._transpose_()
  def _transpose_(self,):
   _0=numpy.zeros(((self._dimi * self._dimj),), dtype=numpy.dtype(numpy.float64))
   _1=0
   _2=self._dimi
   for _3 in range(0,self._dimi):
    _4=_3
    for _5 in range(0,self._dimj):
     _0[_4] = self._data[_1]
     _4 = (_4 + _2)
     _1 += 1
   return (mosek_fusion_DenseMatrix._ctor_II_3D(self._dimj,self._dimi,_0))
  @staticmethod
  def _match_isSparse_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_isSparse_(*args):
    if len(args) != 0: return False
    return True
  def _isSparse_alt_(self,):
    return self._isSparse_()
  def _isSparse_(self,):
   return (False)
  @staticmethod
  def _match_getDataAsArray_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getDataAsArray_(*args):
    if len(args) != 0: return False
    return True
  def _getDataAsArray_alt_(self,):
    return self._getDataAsArray_()
  def _getDataAsArray_(self,):
   return (mosek.fusion.Utils.Tools._arraycopy__3D(self._data))
  @staticmethod
  def _match_getDataAsTriplets__3I_3I_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1) and __arg_match__3D__(_2))
  @staticmethod
  def _match_alt_getDataAsTriplets__3I_3I_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3D__(_2))
  def _getDataAsTriplets_alt__3I_3I_3D(self,_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _1_res = self._getDataAsTriplets__3I_3I_3D(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _getDataAsTriplets__3I_3I_3D(self,_0,_1,_2):
   if ((int((_0).shape[0]) < self._nnz) or ((int((_1).shape[0]) < self._nnz) or (int((_2).shape[0]) < self._nnz))):
    raise mosek_fusion_LengthError._ctor_S("Output arrays are not long enough.")
   mosek.fusion.Utils.Tools._arraycopy__3DI_3DII(self._data,0,_2,0,int((self._data).shape[0]))
   _3=0
   for _4 in range(0,self._dimi):
    for _5 in range(0,self._dimj):
     _0[_3] = _4
     _1[_3] = _5
     _3 += 1
  @staticmethod
  def _match_get_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_get_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _get_alt_II(self,_t__0,_t__1):
    return self._get_II(numpy.int32(__0),numpy.int32(__1))
  def _get_II(self,_0,_1):
   return numpy.float64(self._data[((_0 * self._dimj) + _1)])
  @staticmethod
  def _match_numNonzeros_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_numNonzeros_(*args):
    if len(args) != 0: return False
    return True
  def _numNonzeros_alt_(self,):
    return self._numNonzeros_()
  def _numNonzeros_(self,):
   return numpy.int64(numpy.int64((self._dimi * self._dimj)))
 return DenseMatrix
mosek_fusion_DenseMatrix=__mk_mosek_fusion_DenseMatrix()
del __mk_mosek_fusion_DenseMatrix
def __mk_mosek_fusion_SparseMatrix():
 class SparseMatrix(mosek_fusion_Matrix):
  __slots__ = ['_nnz','_val','_subj','_subi']
  def toString(self,*args):
    if False: pass
    elif mosek_fusion_SparseMatrix._match_toString_(*args): 
      return self._toString_(*args)
    elif mosek_fusion_SparseMatrix._match_alt_toString_(*args): 
      return self._toString_alt_(*args)
    else:
      raise ValueError('Invalid argument list toString('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SparseMatrix.toString()')
  def getDataAsTriplets(self,*args):
    if False: pass
    elif mosek_fusion_SparseMatrix._match_getDataAsTriplets__3I_3I_3D(*args): 
      return self._getDataAsTriplets__3I_3I_3D(*args)
    elif mosek_fusion_SparseMatrix._match_alt_getDataAsTriplets__3I_3I_3D(*args): 
      return self._getDataAsTriplets_alt__3I_3I_3D(*args)
    else:
      raise ValueError('Invalid argument list getDataAsTriplets('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SparseMatrix.getDataAsTriplets(array(int32,ndim=1),array(int32,ndim=1),array(double,ndim=1))')
  def numNonzeros(self,*args):
    if False: pass
    elif mosek_fusion_SparseMatrix._match_numNonzeros_(*args): 
      return self._numNonzeros_(*args)
    elif mosek_fusion_SparseMatrix._match_alt_numNonzeros_(*args): 
      return self._numNonzeros_alt_(*args)
    else:
      raise ValueError('Invalid argument list numNonzeros('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SparseMatrix.numNonzeros()')
  def transpose(self,*args):
    if False: pass
    elif mosek_fusion_SparseMatrix._match_transpose_(*args): 
      return self._transpose_(*args)
    elif mosek_fusion_SparseMatrix._match_alt_transpose_(*args): 
      return self._transpose_alt_(*args)
    else:
      raise ValueError('Invalid argument list transpose('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SparseMatrix.transpose()')
  def get(self,*args):
    if False: pass
    elif mosek_fusion_SparseMatrix._match_get_II(*args): 
      return self._get_II(*args)
    elif mosek_fusion_SparseMatrix._match_alt_get_II(*args): 
      return self._get_alt_II(*args)
    else:
      raise ValueError('Invalid argument list get('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SparseMatrix.get(int32,int32)')
  def isSparse(self,*args):
    if False: pass
    elif mosek_fusion_SparseMatrix._match_isSparse_(*args): 
      return self._isSparse_(*args)
    elif mosek_fusion_SparseMatrix._match_alt_isSparse_(*args): 
      return self._isSparse_alt_(*args)
    else:
      raise ValueError('Invalid argument list isSparse('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SparseMatrix.isSparse()')
  def getDataAsArray(self,*args):
    if False: pass
    elif mosek_fusion_SparseMatrix._match_getDataAsArray_(*args): 
      return self._getDataAsArray_(*args)
    elif mosek_fusion_SparseMatrix._match_alt_getDataAsArray_(*args): 
      return self._getDataAsArray_alt_(*args)
    else:
      raise ValueError('Invalid argument list getDataAsArray('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.SparseMatrix.getDataAsArray()')
  def __str__(self): return self._toString_()
  def __repr__(self): return 'mosek.fusion.SparseMatrix: '+self._toString_()
  @staticmethod
  def _ctor_II_3I_3I_3DJ(dimi_,dimj_,subi_,subj_,val_,nelm):
    o = SparseMatrix.__new__(SparseMatrix)
    o._ctor_init_II_3I_3I_3DJ(dimi_,dimj_,subi_,subj_,val_,nelm)
    return o
  @staticmethod
  def __match_ctor_II_3I_3I_3DJ(*args):
    if len(args) != 6: return False
    dimi_,dimj_,subi_,subj_,val_,nelm, = args
    return (__arg_match_I__(dimi_) and __arg_match_I__(dimj_) and __arg_match__3I__(subi_) and __arg_match__3I__(subj_) and __arg_match__3D__(val_) and __arg_match_J__(nelm))
  @staticmethod
  def __match_alt_ctor_II_3I_3I_3DJ(*args):
    if len(args) != 6: return False
    dimi_,dimj_,subi_,subj_,val_,nelm, = args
    return (__arg_alt_match_I__(dimi_) and __arg_alt_match_I__(dimj_) and __arg_alt_match__3I__(subi_) and __arg_alt_match__3I__(subj_) and __arg_alt_match__3D__(val_) and __arg_alt_match_J__(nelm))
  def _ctor_alt_init_II_3I_3I_3DJ(self,dimi_,dimj_,subi_,subj_,val_,nelm):
    self._ctor_init_II_3I_3I_3DJ(numpy.int32(dimi_),numpy.int32(dimj_),numpy.array(subi_,dtype=numpy.dtype(numpy.int32)),numpy.array(subj_,dtype=numpy.dtype(numpy.int32)),numpy.array(val_,dtype=numpy.dtype(numpy.float64)),numpy.int64(nelm))
  def _ctor_init_II_3I_3I_3DJ(self,dimi_,dimj_,subi_,subj_,val_,nelm):
   mosek_fusion_Matrix._ctor_init_II(self,dimi_,dimj_)
   if (nelm > 0):
    if ((int((subi_).shape[0]) < nelm) or ((int((subj_).shape[0]) < nelm) or (int((val_).shape[0]) < nelm))):
     raise mosek_fusion_SparseFormatError._ctor_S("Mismatching arrays in sparse data.")
    _0=False
    for _1 in range(0,nelm):
     if ((subi_[_1] < 0) or ((subi_[_1] >= self._dimi) or ((subj_[_1] < 0) or (subj_[_1] >= self._dimj)))):
      _0 = True
    if _0:
     raise mosek_fusion_SparseFormatError._ctor_S("Subscript out of bounds.")
    _2=numpy.ndarray((1,), dtype=numpy.dtype(object))
    _3=numpy.ndarray((1,), dtype=numpy.dtype(object))
    _4=numpy.ndarray((1,), dtype=numpy.dtype(object))
    mosek.fusion.CommonTools._tripletSort__3I_3I_3D_3_3I_3_3I_3_3DJII(subi_,subj_,val_,_2,_3,_4,nelm,self._dimi,self._dimj)
    self._subi = _2[0]
    self._subj = _3[0]
    self._val = _4[0]
    self._nnz = int((self._val).shape[0])
   else:
    self._subi = numpy.zeros((0,), dtype=numpy.dtype(numpy.int32))
    self._subj = numpy.zeros((0,), dtype=numpy.dtype(numpy.int32))
    self._val = numpy.zeros((0,), dtype=numpy.dtype(numpy.float64))
    self._nnz = 0
  @staticmethod
  def _ctor_II_3I_3I_3D(dimi_,dimj_,subi_,subj_,val_):
    o = SparseMatrix.__new__(SparseMatrix)
    o._ctor_init_II_3I_3I_3D(dimi_,dimj_,subi_,subj_,val_)
    return o
  @staticmethod
  def __match_ctor_II_3I_3I_3D(*args):
    if len(args) != 5: return False
    dimi_,dimj_,subi_,subj_,val_, = args
    return (__arg_match_I__(dimi_) and __arg_match_I__(dimj_) and __arg_match__3I__(subi_) and __arg_match__3I__(subj_) and __arg_match__3D__(val_))
  @staticmethod
  def __match_alt_ctor_II_3I_3I_3D(*args):
    if len(args) != 5: return False
    dimi_,dimj_,subi_,subj_,val_, = args
    return (__arg_alt_match_I__(dimi_) and __arg_alt_match_I__(dimj_) and __arg_alt_match__3I__(subi_) and __arg_alt_match__3I__(subj_) and __arg_alt_match__3D__(val_))
  def _ctor_alt_init_II_3I_3I_3D(self,dimi_,dimj_,subi_,subj_,val_):
    self._ctor_init_II_3I_3I_3D(numpy.int32(dimi_),numpy.int32(dimj_),numpy.array(subi_,dtype=numpy.dtype(numpy.int32)),numpy.array(subj_,dtype=numpy.dtype(numpy.int32)),numpy.array(val_,dtype=numpy.dtype(numpy.float64)))
  def _ctor_init_II_3I_3I_3D(self,dimi_,dimj_,subi_,subj_,val_):
   mosek_fusion_Matrix._ctor_init_II(self,dimi_,dimj_)
   _0=0
   for _1 in range(0,int((val_).shape[0])):
    if ((val_[_1] > 0) or (val_[_1] < 0)):
     _0 += 1
   if ((_0 > 0) and (_0 < int((subi_).shape[0]))):
    self._subi = numpy.zeros((_0,), dtype=numpy.dtype(numpy.int32))
    self._subj = numpy.zeros((_0,), dtype=numpy.dtype(numpy.int32))
    self._val = numpy.zeros((_0,), dtype=numpy.dtype(numpy.float64))
    self._nnz = _0
    _2=0
    for _3 in range(0,int((val_).shape[0])):
     if ((val_[_3] < 0) or (val_[_3] > 0)):
      self._val[_2] = val_[_3]
      self._subj[_2] = subj_[_3]
      self._subi[_2] = subi_[_3]
      _2 += 1
   else:
    self._subi = subi_
    self._subj = subj_
    self._val = val_
    if (subi_ is None):
     self._nnz = 0
    else:
     self._nnz = int((self._subi).shape[0])
  def _formPtrb_alt_(self,):
    return self._formPtrb_()
  def _formPtrb_(self,):
   _0=numpy.zeros(((self._dimi + 1),), dtype=numpy.dtype(numpy.int64))
   _1=0
   for _2 in range(0,self._dimi):
    _0[_2] = _1
    while ((_1 < self._nnz) and (self._subi[_1]==_2)):
     pass
     _1 += 1
   _0[self._dimi] = _1
   return (_0)
  @staticmethod
  def _match_toString_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_toString_(*args):
    if len(args) != 0: return False
    return True
  def _toString_alt_(self,):
    return self._toString_()
  def _toString_(self,):
   _0=mosek.fusion.Utils.StringBuffer()
   _0._a_S("SparseMatrix(")._a_I(self._dimi)._a_S(",")._a_I(self._dimj)._a_S(", [")
   if ((self._subi is not None) and (int((self._subi).shape[0]) > 0)):
    _0._a_S("(")._a_I(self._subi[0])._a_S(",")._a_I(self._subj[0])._a_S(",")._a_D(self._val[0])._a_S(")")
    for _1 in range(1,int((self._subi).shape[0])):
     _0._a_S(",(")._a_I(self._subi[_1])._a_S(",")._a_I(self._subj[_1])._a_S(",")._a_D(self._val[_1])._a_S(")")
   _0._a_S(" ])")
   return (_0._toString_())
  @staticmethod
  def _match_numNonzeros_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_numNonzeros_(*args):
    if len(args) != 0: return False
    return True
  def _numNonzeros_alt_(self,):
    return self._numNonzeros_()
  def _numNonzeros_(self,):
   return numpy.int64(self._nnz)
  @staticmethod
  def _match_transpose_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_transpose_(*args):
    if len(args) != 0: return False
    return True
  def _transpose_alt_(self,):
    return self._transpose_()
  def _transpose_(self,):
   return (mosek.fusion.Matrix._sparse_II_3I_3I_3D(self._dimj,self._dimi,self._subj,self._subi,self._val))
  @staticmethod
  def _match_isSparse_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_isSparse_(*args):
    if len(args) != 0: return False
    return True
  def _isSparse_alt_(self,):
    return self._isSparse_()
  def _isSparse_(self,):
   return (True)
  @staticmethod
  def _match_getDataAsArray_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_getDataAsArray_(*args):
    if len(args) != 0: return False
    return True
  def _getDataAsArray_alt_(self,):
    return self._getDataAsArray_()
  def _getDataAsArray_(self,):
   _0=numpy.zeros(((self._dimi * self._dimj),), dtype=numpy.dtype(numpy.float64))
   for _1 in range(0,int((self._subi).shape[0])):
    _0[((self._subi[_1] * self._dimj) + self._subj[_1])] = self._val[_1]
   return (_0)
  @staticmethod
  def _match_getDataAsTriplets__3I_3I_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match__3I__(_0) and __arg_match__3I__(_1) and __arg_match__3D__(_2))
  @staticmethod
  def _match_alt_getDataAsTriplets__3I_3I_3D(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match__3I__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match__3D__(_2))
  def _getDataAsTriplets_alt__3I_3I_3D(self,_t__0,_t__1,_t__2):
   _0=numpy.array(_t__0,dtype=numpy.dtype(numpy.int32))
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.float64))
   _1_res = self._getDataAsTriplets__3I_3I_3D(_0,_1,_2)
   try:
     _t__0[:] = _0
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _getDataAsTriplets__3I_3I_3D(self,_0,_1,_2):
   if ((int((_0).shape[0]) < self._nnz) or ((int((_1).shape[0]) < self._nnz) or (int((_2).shape[0]) < self._nnz))):
    raise mosek_fusion_LengthError._ctor_S("Output arrays are not long enough.")
   if ((self._subi is not None) and (int((self._subi).shape[0]) > 0)):
    mosek.fusion.Utils.Tools._arraycopy__3IJ_3IJJ(self._subi,0,_0,0,self._nnz)
    mosek.fusion.Utils.Tools._arraycopy__3IJ_3IJJ(self._subj,0,_1,0,self._nnz)
    mosek.fusion.Utils.Tools._arraycopy__3DJ_3DJJ(self._val,0,_2,0,self._nnz)
  @staticmethod
  def _match_get_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_get_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _get_alt_II(self,_t__0,_t__1):
    return self._get_II(numpy.int32(__0),numpy.int32(__1))
  def _get_II(self,_0,_1):
   if ((_0 < 0) or ((_0 >= self._dimi) or ((_1 < 0) or (_1 >= self._dimj)))):
    raise mosek_fusion_IndexError._ctor_S("Index out if bounds")
   _2=int((self._subi).shape[0])
   _3=0
   while ((_2 - _3) > 1):
    _4=((_3 + _2) // 2)
    if ((self._subi[_4] < _0) or ((self._subi[_4]==_0) and (self._subj[_4] < _1))):
     _3 = _4
    elif ((self._subi[_4] > _0) or ((self._subi[_4]==_0) and (self._subj[_4] > _1))): # bld/grindsted/final/default/src/fusion/Matrix.mbi:600:18-63
     _2 = _4
    else:
     return numpy.float64(self._val[_4])
   if ((self._subi[_3]==_0) and (self._subj[_3]==_1)):
    return numpy.float64(self._val[_3])
   else:
    return numpy.float64(0.0)
 return SparseMatrix
mosek_fusion_SparseMatrix=__mk_mosek_fusion_SparseMatrix()
del __mk_mosek_fusion_SparseMatrix
def __mk_mosek_fusion_LinkedBlocks():
 class LinkedBlocks(object):
  __slots__ = ['_LinkedBlocks__bfirst','_LinkedBlocks__bsize','_LinkedBlocks__blocks','_LinkedBlocks__ints']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_(*args): 
      self._ctor_init_(*args)
    elif self.__match_alt_ctor_(*args):
      self._ctor_alt_init_(*args)
    elif self.__match_ctor_I(*args): 
      self._ctor_init_I(*args)
    elif self.__match_alt_ctor_I(*args):
      self._ctor_alt_init_I(*args)
    elif self.__match_ctor_Lmosek_4fusion_4LinkedBlocks_2(*args): 
      self._ctor_init_Lmosek_4fusion_4LinkedBlocks_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4LinkedBlocks_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4LinkedBlocks_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.LinkedBlocks.ctor()\n\tmosek.fusion.LinkedBlocks.ctor(int32)\n\tmosek.fusion.LinkedBlocks.ctor(mosek.fusion.LinkedBlocks)')
  def numallocated(self,*args):
    if False: pass
    elif mosek_fusion_LinkedBlocks._match_numallocated_(*args): 
      return self._numallocated_(*args)
    elif mosek_fusion_LinkedBlocks._match_alt_numallocated_(*args): 
      return self._numallocated_alt_(*args)
    else:
      raise ValueError('Invalid argument list numallocated('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinkedBlocks.numallocated()')
  def validate(self,*args):
    if False: pass
    elif mosek_fusion_LinkedBlocks._match_validate_(*args): 
      return self._validate_(*args)
    elif mosek_fusion_LinkedBlocks._match_alt_validate_(*args): 
      return self._validate_alt_(*args)
    else:
      raise ValueError('Invalid argument list validate('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinkedBlocks.validate()')
  def get(self,*args):
    if False: pass
    elif mosek_fusion_LinkedBlocks._match_get_I_3II(*args): 
      return self._get_I_3II(*args)
    elif mosek_fusion_LinkedBlocks._match_alt_get_I_3II(*args): 
      return self._get_alt_I_3II(*args)
    else:
      raise ValueError('Invalid argument list get('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinkedBlocks.get(int32,array(int32,ndim=1),int32)')
  def free(self,*args):
    if False: pass
    elif mosek_fusion_LinkedBlocks._match_free_I(*args): 
      return self._free_I(*args)
    elif mosek_fusion_LinkedBlocks._match_alt_free_I(*args): 
      return self._free_alt_I(*args)
    else:
      raise ValueError('Invalid argument list free('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinkedBlocks.free(int32)')
  def block_capacity(self,*args):
    if False: pass
    elif mosek_fusion_LinkedBlocks._match_block_1capacity_(*args): 
      return self._block_1capacity_(*args)
    elif mosek_fusion_LinkedBlocks._match_alt_block_1capacity_(*args): 
      return self._block_1capacity_alt_(*args)
    else:
      raise ValueError('Invalid argument list block_capacity('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinkedBlocks.block_capacity()')
  def blocksize(self,*args):
    if False: pass
    elif mosek_fusion_LinkedBlocks._match_blocksize_I(*args): 
      return self._blocksize_I(*args)
    elif mosek_fusion_LinkedBlocks._match_alt_blocksize_I(*args): 
      return self._blocksize_alt_I(*args)
    else:
      raise ValueError('Invalid argument list blocksize('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinkedBlocks.blocksize(int32)')
  def capacity(self,*args):
    if False: pass
    elif mosek_fusion_LinkedBlocks._match_capacity_(*args): 
      return self._capacity_(*args)
    elif mosek_fusion_LinkedBlocks._match_alt_capacity_(*args): 
      return self._capacity_alt_(*args)
    else:
      raise ValueError('Invalid argument list capacity('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinkedBlocks.capacity()')
  def maxidx(self,*args):
    if False: pass
    elif mosek_fusion_LinkedBlocks._match_maxidx_I(*args): 
      return self._maxidx_I(*args)
    elif mosek_fusion_LinkedBlocks._match_alt_maxidx_I(*args): 
      return self._maxidx_alt_I(*args)
    else:
      raise ValueError('Invalid argument list maxidx('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinkedBlocks.maxidx(int32)')
  def alloc(self,*args):
    if False: pass
    elif mosek_fusion_LinkedBlocks._match_alloc_I(*args): 
      return self._alloc_I(*args)
    elif mosek_fusion_LinkedBlocks._match_alt_alloc_I(*args): 
      return self._alloc_alt_I(*args)
    else:
      raise ValueError('Invalid argument list alloc('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinkedBlocks.alloc(int32)')
  def numblocks(self,*args):
    if False: pass
    elif mosek_fusion_LinkedBlocks._match_numblocks_(*args): 
      return self._numblocks_(*args)
    elif mosek_fusion_LinkedBlocks._match_alt_numblocks_(*args): 
      return self._numblocks_alt_(*args)
    else:
      raise ValueError('Invalid argument list numblocks('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinkedBlocks.numblocks()')
  def __repr__(self): return 'mosek.fusion.LinkedBlocks'
  @staticmethod
  def _ctor_():
    o = LinkedBlocks.__new__(LinkedBlocks)
    o._ctor_init_()
    return o
  @staticmethod
  def __match_ctor_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def __match_alt_ctor_(*args):
    if len(args) != 0: return False
    return True
  def _ctor_alt_init_(self,):
    self._ctor_init_()
  def _ctor_init_(self,):
   mosek_fusion_LinkedBlocks._ctor_init_I(self,0)
  @staticmethod
  def _ctor_I(n):
    o = LinkedBlocks.__new__(LinkedBlocks)
    o._ctor_init_I(n)
    return o
  @staticmethod
  def __match_ctor_I(*args):
    if len(args) != 1: return False
    n, = args
    return (__arg_match_I__(n))
  @staticmethod
  def __match_alt_ctor_I(*args):
    if len(args) != 1: return False
    n, = args
    return (__arg_alt_match_I__(n))
  def _ctor_alt_init_I(self,n):
    self._ctor_init_I(numpy.int32(n))
  def _ctor_init_I(self,n):
   _0=128
   self.__ints = mosek_fusion_LinkedInts._ctor_I(n)
   self.__blocks = mosek_fusion_LinkedInts._ctor_I(_0)
   self.__bsize = numpy.zeros((_0,), dtype=numpy.dtype(numpy.int32))
   self.__bfirst = numpy.zeros((_0,), dtype=numpy.dtype(numpy.int32))
  @staticmethod
  def _ctor_Lmosek_4fusion_4LinkedBlocks_2(other):
    o = LinkedBlocks.__new__(LinkedBlocks)
    o._ctor_init_Lmosek_4fusion_4LinkedBlocks_2(other)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4LinkedBlocks_2(*args):
    if len(args) != 1: return False
    other, = args
    return (__arg_match_Lmosek_4fusion_4LinkedBlocks_2__(other))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4LinkedBlocks_2(*args):
    if len(args) != 1: return False
    other, = args
    return (__arg_alt_match_Lmosek_4fusion_4LinkedBlocks_2__(other))
  def _ctor_alt_init_Lmosek_4fusion_4LinkedBlocks_2(self,other):
    self._ctor_init_Lmosek_4fusion_4LinkedBlocks_2(other)
  def _ctor_init_Lmosek_4fusion_4LinkedBlocks_2(self,other):
   self.__ints = mosek_fusion_LinkedInts._ctor_Lmosek_4fusion_4LinkedInts_2((other.__ints))
   self.__blocks = mosek_fusion_LinkedInts._ctor_Lmosek_4fusion_4LinkedInts_2((other.__blocks))
   self.__bsize = mosek.fusion.Utils.Tools._arraycopy__3I((other.__bsize))
   self.__bfirst = mosek.fusion.Utils.Tools._arraycopy__3I((other.__bfirst))
  @staticmethod
  def _match_free_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_free_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _free_alt_I(self,_t__0):
    return self._free_I(numpy.int32(__0))
  def _free_I(self,_0):
   _1=self.__bfirst[_0]
   self.__ints.free(_1,self.__bsize[_0])
   self.__bsize[_0] = (- 1)
   self.__bfirst[_0] = (- 1)
   self.__blocks.free(_0,1)
  @staticmethod
  def _match_alloc_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_alloc_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _alloc_alt_I(self,_t__0):
    return self._alloc_I(numpy.int32(__0))
  def _alloc_I(self,_0):
   _1=(self.__ints.alloc(_0) if ((_0 > 0) ) else (- 1))
   _2=self.__blocks.alloc()
   if (self.__blocks.capacity() > int((self.__bsize).shape[0])):
    _3=numpy.zeros((self.__blocks.capacity(),), dtype=numpy.dtype(numpy.int32))
    _4=numpy.zeros((self.__blocks.capacity(),), dtype=numpy.dtype(numpy.int32))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__bsize,0,_3,0,int((self.__bsize).shape[0]))
    mosek.fusion.Utils.Tools._arraycopy__3II_3III(self.__bfirst,0,_4,0,int((self.__bfirst).shape[0]))
    self.__bsize = _3
    self.__bfirst = _4
   self.__bfirst[_2] = _1
   self.__bsize[_2] = _0
   return numpy.int32(_2)
  @staticmethod
  def _match_maxidx_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_maxidx_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _maxidx_alt_I(self,_t__0):
    return self._maxidx_I(numpy.int32(__0))
  def _maxidx_I(self,_0):
   return numpy.int32(self.__ints.maxidx(self.__bfirst[_0],self.__bsize[_0]))
  @staticmethod
  def _match_numallocated_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_numallocated_(*args):
    if len(args) != 0: return False
    return True
  def _numallocated_alt_(self,):
    return self._numallocated_()
  def _numallocated_(self,):
   return numpy.int32(self.__ints.numallocated())
  @staticmethod
  def _match_get_I_3II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match__3I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_get_I_3II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match_I__(_2))
  def _get_alt_I_3II(self,_t__0,_t__1,_t__2):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.int32(_t__2)
   _1_res = self._get_I_3II(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _get_I_3II(self,_0,_1,_2):
   self.__ints.get(self.__bfirst[_0],self.__bsize[_0],_1,_2)
  @staticmethod
  def _match_numblocks_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_numblocks_(*args):
    if len(args) != 0: return False
    return True
  def _numblocks_alt_(self,):
    return self._numblocks_()
  def _numblocks_(self,):
   return numpy.int32(int((self.__bsize).shape[0]))
  @staticmethod
  def _match_blocksize_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_blocksize_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _blocksize_alt_I(self,_t__0):
    return self._blocksize_I(numpy.int32(__0))
  def _blocksize_I(self,_0):
   return numpy.int32(self.__bsize[_0])
  @staticmethod
  def _match_block_1capacity_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_block_1capacity_(*args):
    if len(args) != 0: return False
    return True
  def _block_1capacity_alt_(self,):
    return self._block_1capacity_()
  def _block_1capacity_(self,):
   return numpy.int32(self.__blocks.capacity())
  @staticmethod
  def _match_capacity_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_capacity_(*args):
    if len(args) != 0: return False
    return True
  def _capacity_alt_(self,):
    return self._capacity_()
  def _capacity_(self,):
   return numpy.int32(self.__ints.capacity())
  @staticmethod
  def _match_validate_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_validate_(*args):
    if len(args) != 0: return False
    return True
  def _validate_alt_(self,):
    return self._validate_()
  def _validate_(self,):
   return ((self.__ints.validate() and self.__blocks.validate()))
 return LinkedBlocks
mosek_fusion_LinkedBlocks=__mk_mosek_fusion_LinkedBlocks()
del __mk_mosek_fusion_LinkedBlocks
def __mk_mosek_fusion_LinkedInts():
 class LinkedInts(object):
  __slots__ = ['_LinkedInts__nfree','_LinkedInts__last_free','_LinkedInts__first_free','_LinkedInts__first_used','_LinkedInts__prev','_LinkedInts__next']
  def __init__(self,*args):
    if False: pass
    elif self.__match_ctor_(*args): 
      self._ctor_init_(*args)
    elif self.__match_alt_ctor_(*args):
      self._ctor_alt_init_(*args)
    elif self.__match_ctor_I(*args): 
      self._ctor_init_I(*args)
    elif self.__match_alt_ctor_I(*args):
      self._ctor_alt_init_I(*args)
    elif self.__match_ctor_Lmosek_4fusion_4LinkedInts_2(*args): 
      self._ctor_init_Lmosek_4fusion_4LinkedInts_2(*args)
    elif self.__match_alt_ctor_Lmosek_4fusion_4LinkedInts_2(*args):
      self._ctor_alt_init_Lmosek_4fusion_4LinkedInts_2(*args)
    else:
      raise ValueError('Invalid argument list for constructor. Candidates are:\n\tmosek.fusion.LinkedInts.ctor()\n\tmosek.fusion.LinkedInts.ctor(int32)\n\tmosek.fusion.LinkedInts.ctor(mosek.fusion.LinkedInts)')
  def maxidx(self,*args):
    if False: pass
    elif mosek_fusion_LinkedInts._match_maxidx_II(*args): 
      return self._maxidx_II(*args)
    elif mosek_fusion_LinkedInts._match_alt_maxidx_II(*args): 
      return self._maxidx_alt_II(*args)
    else:
      raise ValueError('Invalid argument list maxidx('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinkedInts.maxidx(int32,int32)')
  def free(self,*args):
    if False: pass
    elif mosek_fusion_LinkedInts._match_free_II(*args): 
      return self._free_II(*args)
    elif mosek_fusion_LinkedInts._match_alt_free_II(*args): 
      return self._free_alt_II(*args)
    else:
      raise ValueError('Invalid argument list free('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinkedInts.free(int32,int32)')
  def validate(self,*args):
    if False: pass
    elif mosek_fusion_LinkedInts._match_validate_(*args): 
      return self._validate_(*args)
    elif mosek_fusion_LinkedInts._match_alt_validate_(*args): 
      return self._validate_alt_(*args)
    else:
      raise ValueError('Invalid argument list validate('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinkedInts.validate()')
  def alloc(self,*args):
    if False: pass
    elif mosek_fusion_LinkedInts._match_alloc_(*args): 
      return self._alloc_(*args)
    elif mosek_fusion_LinkedInts._match_alt_alloc_(*args): 
      return self._alloc_alt_(*args)
    elif mosek_fusion_LinkedInts._match_alloc_I(*args): 
      return self._alloc_I(*args)
    elif mosek_fusion_LinkedInts._match_alt_alloc_I(*args): 
      return self._alloc_alt_I(*args)
    elif mosek_fusion_LinkedInts._match_alloc_I_3II(*args): 
      return self._alloc_I_3II(*args)
    elif mosek_fusion_LinkedInts._match_alt_alloc_I_3II(*args): 
      return self._alloc_alt_I_3II(*args)
    else:
      raise ValueError('Invalid argument list alloc('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinkedInts.alloc()\n\tmosek.fusion.LinkedInts.alloc(int32)\n\tmosek.fusion.LinkedInts.alloc(int32,array(int32,ndim=1),int32)')
  def capacity(self,*args):
    if False: pass
    elif mosek_fusion_LinkedInts._match_capacity_(*args): 
      return self._capacity_(*args)
    elif mosek_fusion_LinkedInts._match_alt_capacity_(*args): 
      return self._capacity_alt_(*args)
    else:
      raise ValueError('Invalid argument list capacity('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinkedInts.capacity()')
  def get(self,*args):
    if False: pass
    elif mosek_fusion_LinkedInts._match_get_II_3II(*args): 
      return self._get_II_3II(*args)
    elif mosek_fusion_LinkedInts._match_alt_get_II_3II(*args): 
      return self._get_alt_II_3II(*args)
    else:
      raise ValueError('Invalid argument list get('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinkedInts.get(int32,int32,array(int32,ndim=1),int32)')
  def numallocated(self,*args):
    if False: pass
    elif mosek_fusion_LinkedInts._match_numallocated_(*args): 
      return self._numallocated_(*args)
    elif mosek_fusion_LinkedInts._match_alt_numallocated_(*args): 
      return self._numallocated_alt_(*args)
    else:
      raise ValueError('Invalid argument list numallocated('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.LinkedInts.numallocated()')
  def __repr__(self): return 'mosek.fusion.LinkedInts'
  @staticmethod
  def _ctor_I(cap_):
    o = LinkedInts.__new__(LinkedInts)
    o._ctor_init_I(cap_)
    return o
  @staticmethod
  def __match_ctor_I(*args):
    if len(args) != 1: return False
    cap_, = args
    return (__arg_match_I__(cap_))
  @staticmethod
  def __match_alt_ctor_I(*args):
    if len(args) != 1: return False
    cap_, = args
    return (__arg_alt_match_I__(cap_))
  def _ctor_alt_init_I(self,cap_):
    self._ctor_init_I(numpy.int32(cap_))
  def _ctor_init_I(self,cap_):
   _0=(cap_ if ((cap_ > 0) ) else 128)
   self.__next = numpy.zeros((_0,), dtype=numpy.dtype(numpy.int32))
   self.__prev = numpy.zeros((_0,), dtype=numpy.dtype(numpy.int32))
   self.__first_used = (- 1)
   self.__first_free = 0
   self.__last_free = (_0 - 1)
   for _1 in range(1,_0):
    self.__prev[_1] = (_1 - 1)
    self.__next[(_1 - 1)] = _1
   self.__prev[0] = (- 1)
   self.__next[(_0 - 1)] = (- 1)
   self.__nfree = _0
  @staticmethod
  def _ctor_():
    o = LinkedInts.__new__(LinkedInts)
    o._ctor_init_()
    return o
  @staticmethod
  def __match_ctor_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def __match_alt_ctor_(*args):
    if len(args) != 0: return False
    return True
  def _ctor_alt_init_(self,):
    self._ctor_init_()
  def _ctor_init_(self,):
   mosek_fusion_LinkedInts._ctor_init_I(self,128)
  @staticmethod
  def _ctor_Lmosek_4fusion_4LinkedInts_2(other):
    o = LinkedInts.__new__(LinkedInts)
    o._ctor_init_Lmosek_4fusion_4LinkedInts_2(other)
    return o
  @staticmethod
  def __match_ctor_Lmosek_4fusion_4LinkedInts_2(*args):
    if len(args) != 1: return False
    other, = args
    return (__arg_match_Lmosek_4fusion_4LinkedInts_2__(other))
  @staticmethod
  def __match_alt_ctor_Lmosek_4fusion_4LinkedInts_2(*args):
    if len(args) != 1: return False
    other, = args
    return (__arg_alt_match_Lmosek_4fusion_4LinkedInts_2__(other))
  def _ctor_alt_init_Lmosek_4fusion_4LinkedInts_2(self,other):
    self._ctor_init_Lmosek_4fusion_4LinkedInts_2(other)
  def _ctor_init_Lmosek_4fusion_4LinkedInts_2(self,other):
   self.__next = mosek.fusion.Utils.Tools._arraycopy__3I((other.__next))
   self.__prev = mosek.fusion.Utils.Tools._arraycopy__3I((other.__prev))
   self.__first_used = (other.__first_used)
   self.__first_free = (other.__first_free)
   self.__last_free = (other.__last_free)
   self.__nfree = (other.__nfree)
  @staticmethod
  def _match_free_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_free_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _free_alt_II(self,_t__0,_t__1):
    return self._free_II(numpy.int32(__0),numpy.int32(__1))
  def _free_II(self,_0,_1):
   _2=_0
   _3=_2
   for _4 in range(0,(_1 - 1)):
    _3 = self.__next[_3]
   _5=self.__prev[_2]
   _6=self.__next[_3]
   if (_5 >= 0):
    self.__next[_5] = _6
   else:
    self.__first_used = _6
   if (_6 >= 0):
    self.__prev[_6] = _5
   self.__prev[_2] = (- 1)
   self.__next[_3] = self.__first_free
   if (self.__first_free >= 0):
    self.__prev[self.__first_free] = _3
   self.__first_free = _2
   if (self.__last_free < 0):
    self.__last_free = _3
   self.__nfree += _1
  @staticmethod
  def _match_alloc_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_alloc_(*args):
    if len(args) != 0: return False
    return True
  def _alloc_alt_(self,):
    return self._alloc_()
  def _alloc_(self,):
   return numpy.int32(self.__allocblock_I(1))
  @staticmethod
  def _match_alloc_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_match_I__(_0))
  @staticmethod
  def _match_alt_alloc_I(*args):
    if len(args) != 1: return False
    _0, = args
    return (__arg_alt_match_I__(_0))
  def _alloc_alt_I(self,_t__0):
    return self._alloc_I(numpy.int32(__0))
  def _alloc_I(self,_0):
   return numpy.int32(self.__allocblock_I(_0))
  @staticmethod
  def _match_alloc_I_3II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_I__(_0) and __arg_match__3I__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_alloc_I_3II(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match__3I__(_1) and __arg_alt_match_I__(_2))
  def _alloc_alt_I_3II(self,_t__0,_t__1,_t__2):
   _0=numpy.int32(_t__0)
   _1=numpy.array(_t__1,dtype=numpy.dtype(numpy.int32))
   _2=numpy.int32(_t__2)
   _1_res = self._alloc_I_3II(_0,_1,_2)
   try:
     _t__1[:] = _1
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _alloc_I_3II(self,_0,_1,_2):
   _3=self.__allocblock_I(_0)
   for _4 in range(0,_0):
    _1[(_4 + _2)] = _3
    _3 = self.__next[_3]
  @staticmethod
  def _match_get_II_3II(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1) and __arg_match__3I__(_2) and __arg_match_I__(_3))
  @staticmethod
  def _match_alt_get_II_3II(*args):
    if len(args) != 4: return False
    _0,_1,_2,_3, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1) and __arg_alt_match__3I__(_2) and __arg_alt_match_I__(_3))
  def _get_alt_II_3II(self,_t__0,_t__1,_t__2,_t__3):
   _0=numpy.int32(_t__0)
   _1=numpy.int32(_t__1)
   _2=numpy.array(_t__2,dtype=numpy.dtype(numpy.int32))
   _3=numpy.int32(_t__3)
   _1_res = self._get_II_3II(_0,_1,_2,_3)
   try:
     _t__2[:] = _2
   except TypeError:
     pass # if we cannot copy back - ignore it
   return _1_res
  def _get_II_3II(self,_0,_1,_2,_3):
   _4=_0
   for _5 in range(0,_1):
    _2[(_5 + _3)] = _4
    _4 = self.__next[_4]
  @staticmethod
  def _match_numallocated_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_numallocated_(*args):
    if len(args) != 0: return False
    return True
  def _numallocated_alt_(self,):
    return self._numallocated_()
  def _numallocated_(self,):
   return numpy.int32((int((self.__next).shape[0]) - self.__nfree))
  @staticmethod
  def _match_maxidx_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_match_I__(_0) and __arg_match_I__(_1))
  @staticmethod
  def _match_alt_maxidx_II(*args):
    if len(args) != 2: return False
    _0,_1, = args
    return (__arg_alt_match_I__(_0) and __arg_alt_match_I__(_1))
  def _maxidx_alt_II(self,_t__0,_t__1):
    return self._maxidx_II(numpy.int32(__0),numpy.int32(__1))
  def _maxidx_II(self,_0,_1):
   _2=_0
   _3=_0
   for _4 in range(1,_1):
    _3 = self.__next[_3]
    if (_2 < _3):
     _2 = _3
   return numpy.int32(_2)
  def __allocblock_alt_I(self,_t__0):
    return self.__allocblock_I(numpy.int32(__0))
  def __allocblock_I(self,_0):
   _1=int((self.__next).shape[0])
   if (self.__nfree < _0):
    _2=(_0 - self.__nfree)
    if (_2 < _1):
     _2 = _1
    self.__recap_I((_2 + _1))
   _3=self.__first_free
   _4=_3
   for _5 in range(0,(_0 - 1)):
    _4 = self.__next[_4]
   self.__first_free = self.__next[_4]
   if (self.__first_free < 0):
    self.__last_free = (- 1)
   else:
    self.__prev[self.__first_free] = (- 1)
   self.__next[_4] = self.__first_used
   if (self.__first_used >= 0):
    self.__prev[self.__first_used] = _4
   self.__first_used = _3
   self.__nfree -= _0
   return numpy.int32(_3)
  def __recap_alt_I(self,_t__0):
    return self.__recap_I(numpy.int32(__0))
  def __recap_I(self,_0):
   _1=int((self.__next).shape[0])
   if (_0 > _1):
    self.__next = mosek.fusion.CommonTools._resize__3II(self.__next,_0)
    self.__prev = mosek.fusion.CommonTools._resize__3II(self.__prev,_0)
    for _2 in range(_1,(_0 - 1)):
     self.__next[_2] = (_2 + 1)
     self.__prev[(_2 + 1)] = _2
    self.__next[(_0 - 1)] = (- 1)
    self.__prev[_1] = self.__last_free
    if (self.__last_free < 0):
     self.__first_free = _1
    else:
     self.__next[self.__last_free] = _1
    self.__last_free = (_0 - 1)
    self.__nfree += (_0 - _1)
  @staticmethod
  def _match_capacity_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_capacity_(*args):
    if len(args) != 0: return False
    return True
  def _capacity_alt_(self,):
    return self._capacity_()
  def _capacity_(self,):
   return numpy.int32(int((self.__next).shape[0]))
  @staticmethod
  def _match_validate_(*args):
    if len(args) != 0: return False
    return True
  @staticmethod
  def _match_alt_validate_(*args):
    if len(args) != 0: return False
    return True
  def _validate_alt_(self,):
    return self._validate_()
  def _validate_(self,):
   _0=numpy.zeros((int((self.__next).shape[0]),), dtype=numpy.dtype(bool))
   _1=self.__first_used
   while (_1 >= 0):
    _0[_1] = True
    _1 = self.__next[_1]
    if ((_1 >= 0) and _0[_1]):
     raise mosek_fusion_UnexpectedError._ctor_S("used list/next is inconsistent")
   _1 = self.__first_free
   _2=0
   while (_1 >= 0):
    _2 += 1
    _0[_1] = True
    _1 = self.__next[_1]
    if ((_1 >= 0) and _0[_1]):
     raise mosek_fusion_UnexpectedError._ctor_S("free list/next is inconsistent")
   if (_2!=self.__nfree):
    raise mosek_fusion_UnexpectedError._ctor_S("free next list did not contain nfree elements")
   for _3 in range(0,int((_0).shape[0])):
    if (not _0[_1]):
     raise mosek_fusion_UnexpectedError._ctor_S("elements missing from used+free list")
   for _4 in range(0,int((_0).shape[0])):
    _0[_4] = False
   _1 = self.__last_free
   _5=0
   while (_1 >= 0):
    _5 += 1
    _0[_1] = True
    _1 = self.__prev[_1]
    if ((_1 >= 0) and _0[_1]):
     raise mosek_fusion_UnexpectedError._ctor_S("prev list is inconsistent")
   if (_5!=self.__nfree):
    raise mosek_fusion_UnexpectedError._ctor_S("free prev list did not contain nfree elements")
   return (True)
 return LinkedInts
mosek_fusion_LinkedInts=__mk_mosek_fusion_LinkedInts()
del __mk_mosek_fusion_LinkedInts
def __mk_mosek_fusion_Parameters():
 class Parameters(object):
  @staticmethod
  def setParameter(*args):
    if False: pass
    elif mosek_fusion_Parameters._match_setParameter_Lmosek_4fusion_4Model_2SS(*args): 
      return mosek_fusion_Parameters._setParameter_Lmosek_4fusion_4Model_2SS(*args)
    elif mosek_fusion_Parameters._match_alt_setParameter_Lmosek_4fusion_4Model_2SS(*args): 
      return mosek_fusion_Parameters._setParameter_alt_Lmosek_4fusion_4Model_2SS(*args)
    elif mosek_fusion_Parameters._match_setParameter_Lmosek_4fusion_4Model_2SI(*args): 
      return mosek_fusion_Parameters._setParameter_Lmosek_4fusion_4Model_2SI(*args)
    elif mosek_fusion_Parameters._match_alt_setParameter_Lmosek_4fusion_4Model_2SI(*args): 
      return mosek_fusion_Parameters._setParameter_alt_Lmosek_4fusion_4Model_2SI(*args)
    elif mosek_fusion_Parameters._match_setParameter_Lmosek_4fusion_4Model_2SD(*args): 
      return mosek_fusion_Parameters._setParameter_Lmosek_4fusion_4Model_2SD(*args)
    elif mosek_fusion_Parameters._match_alt_setParameter_Lmosek_4fusion_4Model_2SD(*args): 
      return mosek_fusion_Parameters._setParameter_alt_Lmosek_4fusion_4Model_2SD(*args)
    else:
      raise ValueError('Invalid argument list setParameter('+','.join(map(repr,args))+'). Candidates are\n\tmosek.fusion.Parameters.setParameter(mosek.fusion.Model,string,string)\n\tmosek.fusion.Parameters.setParameter(mosek.fusion.Model,string,int32)\n\tmosek.fusion.Parameters.setParameter(mosek.fusion.Model,string,double)')
  def __repr__(self): return 'mosek.fusion.Parameters'
  @staticmethod
  def _match_setParameter_Lmosek_4fusion_4Model_2SD(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(_0) and __arg_match_S__(_1) and __arg_match_D__(_2))
  @staticmethod
  def _match_alt_setParameter_Lmosek_4fusion_4Model_2SD(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(_0) and __arg_alt_match_S__(_1) and __arg_alt_match_D__(_2))
  @staticmethod
  def _setParameter_alt_Lmosek_4fusion_4Model_2SD(_t__0,_t__1,_t__2):
    return mosek_fusion_Parameters._setParameter_Lmosek_4fusion_4Model_2SD(_0,_1,numpy.float64(__2))
  @staticmethod
  def _setParameter_Lmosek_4fusion_4Model_2SD(_0,_1,_2):
   if False:
    pass
   elif (_1=="autoUpdateSolInfo"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5146:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (autoUpdateSolInfo)")
   elif (_1=="removeUnusedSolutions"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5148:10-41
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (removeUnusedSolutions)")
   if (_1=="numThreads"):
    if ((_2 - numpy.int32(_2))==0.0):
     _3=_2
     if (0 <= _3):
      _0._task_1put_1param_SD("MSK_IPAR_NUM_THREADS",_3)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (numThreads)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (numThreads)")
   if (_1=="mtSpincount"):
    if ((_2 - numpy.int32(_2))==0.0):
     _4=_2
     if ((0 <= _4) and (_4 <= 1000000000)):
      _0._task_1put_1param_SD("MSK_IPAR_MT_SPINCOUNT",_4)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mtSpincount)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mtSpincount)")
   elif (_1=="optimizer"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5180:10-29
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (optimizer)")
   elif (_1=="simPrecision"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5182:10-32
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrecision)")
   if (_1=="biMaxIterations"):
    if ((_2 - numpy.int32(_2))==0.0):
     _5=_2
     if (0 <= _5):
      _0._task_1put_1param_SD("MSK_IPAR_BI_MAX_ITERATIONS",_5)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (biMaxIterations)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (biMaxIterations)")
   if (_1=="licenseTrhExpiryWrn"):
    if ((_2 - numpy.int32(_2))==0.0):
     _6=_2
     if (0 <= _6):
      _0._task_1put_1param_SD("MSK_IPAR_LICENSE_TRH_EXPIRY_WRN",_6)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licenseTrhExpiryWrn)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licenseTrhExpiryWrn)")
   if (_1=="logCutSecondOpt"):
    if ((_2 - numpy.int32(_2))==0.0):
     _7=_2
     if (0 <= _7):
      _0._task_1put_1param_SD("MSK_IPAR_LOG_CUT_SECOND_OPT",_7)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logCutSecondOpt)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logCutSecondOpt)")
   elif (_1=="logLocalInfo"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5229:10-32
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logLocalInfo)")
   if (_1=="logBi"):
    if ((_2 - numpy.int32(_2))==0.0):
     _8=_2
     if (0 <= _8):
      _0._task_1put_1param_SD("MSK_IPAR_LOG_BI",_8)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logBi)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logBi)")
   if (_1=="logBiFreq"):
    if ((_2 - numpy.int32(_2))==0.0):
     _9=_2
     if (0 <= _9):
      _0._task_1put_1param_SD("MSK_IPAR_LOG_BI_FREQ",_9)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logBiFreq)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logBiFreq)")
   elif (_1=="biCleanOptimizer"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5261:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (biCleanOptimizer)")
   elif (_1=="intpntStartingPoint"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5263:10-39
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntStartingPoint)")
   elif (_1=="intpntDiffStep"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5265:10-34
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntDiffStep)")
   elif (_1=="intpntScaling"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5267:10-33
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntScaling)")
   elif (_1=="intpntSolveForm"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5269:10-35
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntSolveForm)")
   if (_1=="logIntpnt"):
    if ((_2 - numpy.int32(_2))==0.0):
     _10=_2
     if (0 <= _10):
      _0._task_1put_1param_SD("MSK_IPAR_LOG_INTPNT",_10)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logIntpnt)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logIntpnt)")
   if (_1=="intpntMaxIterations"):
    if ((_2 - numpy.int32(_2))==0.0):
     _11=_2
     if (0 <= _11):
      _0._task_1put_1param_SD("MSK_IPAR_INTPNT_MAX_ITERATIONS",_11)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntMaxIterations)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntMaxIterations)")
   if (_1=="intpntOffColTrh"):
    if ((_2 - numpy.int32(_2))==0.0):
     _12=_2
     if (0 <= _12):
      _0._task_1put_1param_SD("MSK_IPAR_INTPNT_OFF_COL_TRH",_12)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntOffColTrh)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntOffColTrh)")
   elif (_1=="intpntOrderMethod"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5316:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntOrderMethod)")
   if (_1=="intpntOrderGpNumSeeds"):
    if ((_2 - numpy.int32(_2))==0.0):
     _13=_2
     if (0 <= _13):
      _0._task_1put_1param_SD("MSK_IPAR_INTPNT_ORDER_GP_NUM_SEEDS",_13)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntOrderGpNumSeeds)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntOrderGpNumSeeds)")
   elif (_1=="intpntBasis"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5333:10-31
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntBasis)")
   elif (_1=="biIgnoreMaxIter"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5335:10-35
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (biIgnoreMaxIter)")
   elif (_1=="biIgnoreNumError"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5337:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (biIgnoreNumError)")
   if (_1=="intpntMaxNumCor"):
    if ((_2 - numpy.int32(_2))==0.0):
     _14=_2
     if ((- 1) <= _14):
      _0._task_1put_1param_SD("MSK_IPAR_INTPNT_MAX_NUM_COR",_14)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntMaxNumCor)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntMaxNumCor)")
   elif (_1=="presolveUse"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5354:10-31
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveUse)")
   if (_1=="logPresolve"):
    if ((_2 - numpy.int32(_2))==0.0):
     _15=_2
     if (0 <= _15):
      _0._task_1put_1param_SD("MSK_IPAR_LOG_PRESOLVE",_15)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logPresolve)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logPresolve)")
   elif (_1=="presolveLindepUse"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5371:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveLindepUse)")
   elif (_1=="presolveLindepNew"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5373:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveLindepNew)")
   if (_1=="presolveMaxNumPass"):
    if ((_2 - numpy.int32(_2))==0.0):
     _16=_2
     if True:
      _0._task_1put_1param_SD("MSK_IPAR_PRESOLVE_MAX_NUM_PASS",_16)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveMaxNumPass)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveMaxNumPass)")
   if (_1=="presolveEliminatorMaxNumTries"):
    if ((_2 - numpy.int32(_2))==0.0):
     _17=_2
     if True:
      _0._task_1put_1param_SD("MSK_IPAR_PRESOLVE_ELIMINATOR_MAX_NUM_TRIES",_17)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveEliminatorMaxNumTries)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveEliminatorMaxNumTries)")
   if (_1=="presolveEliminatorMaxFill"):
    if ((_2 - numpy.int32(_2))==0.0):
     _18=_2
     if True:
      _0._task_1put_1param_SD("MSK_IPAR_PRESOLVE_ELIMINATOR_MAX_FILL",_18)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveEliminatorMaxFill)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveEliminatorMaxFill)")
   elif (_1=="foldingUse"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5420:10-30
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (foldingUse)")
   if (_1=="simPrimalCrash"):
    if ((_2 - numpy.int32(_2))==0.0):
     _19=_2
     if (0 <= _19):
      _0._task_1put_1param_SD("MSK_IPAR_SIM_PRIMAL_CRASH",_19)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalCrash)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalCrash)")
   if (_1=="logSim"):
    if ((_2 - numpy.int32(_2))==0.0):
     _20=_2
     if (0 <= _20):
      _0._task_1put_1param_SD("MSK_IPAR_LOG_SIM",_20)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logSim)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logSim)")
   if (_1=="logSimFreq"):
    if ((_2 - numpy.int32(_2))==0.0):
     _21=_2
     if (0 <= _21):
      _0._task_1put_1param_SD("MSK_IPAR_LOG_SIM_FREQ",_21)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logSimFreq)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logSimFreq)")
   if (_1=="logSimFreqGigaTicks"):
    if ((_2 - numpy.int32(_2))==0.0):
     _22=_2
     if ((- 1) <= _22):
      _0._task_1put_1param_SD("MSK_IPAR_LOG_SIM_FREQ_GIGA_TICKS",_22)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logSimFreqGigaTicks)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logSimFreqGigaTicks)")
   if (_1=="heartbeatSimFreqTicks"):
    if ((_2 - numpy.int32(_2))==0.0):
     _23=_2
     if ((- 1) <= _23):
      _0._task_1put_1param_SD("MSK_IPAR_HEARTBEAT_SIM_FREQ_TICKS",_23)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (heartbeatSimFreqTicks)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (heartbeatSimFreqTicks)")
   if (_1=="simPrimalRestrictSelection"):
    if ((_2 - numpy.int32(_2))==0.0):
     _24=_2
     if ((0 <= _24) and (_24 <= 100)):
      _0._task_1put_1param_SD("MSK_IPAR_SIM_PRIMAL_RESTRICT_SELECTION",_24)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalRestrictSelection)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalRestrictSelection)")
   elif (_1=="simPrimalSelection"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5512:10-38
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalSelection)")
   if (_1=="simDualRestrictSelection"):
    if ((_2 - numpy.int32(_2))==0.0):
     _25=_2
     if ((0 <= _25) and (_25 <= 100)):
      _0._task_1put_1param_SD("MSK_IPAR_SIM_DUAL_RESTRICT_SELECTION",_25)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualRestrictSelection)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualRestrictSelection)")
   elif (_1=="simDualSelection"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5529:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualSelection)")
   if (_1=="simMaxIterations"):
    if ((_2 - numpy.int32(_2))==0.0):
     _26=_2
     if (0 <= _26):
      _0._task_1put_1param_SD("MSK_IPAR_SIM_MAX_ITERATIONS",_26)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simMaxIterations)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simMaxIterations)")
   elif (_1=="simHotstartLu"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5546:10-33
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simHotstartLu)")
   if (_1=="simRefactorFreq"):
    if ((_2 - numpy.int32(_2))==0.0):
     _27=_2
     if (0 <= _27):
      _0._task_1put_1param_SD("MSK_IPAR_SIM_REFACTOR_FREQ",_27)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simRefactorFreq)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simRefactorFreq)")
   if (_1=="simSeed"):
    if ((_2 - numpy.int32(_2))==0.0):
     _28=_2
     if ((0 <= _28) and (_28 <= 32749)):
      _0._task_1put_1param_SD("MSK_IPAR_SIM_SEED",_28)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simSeed)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simSeed)")
   elif (_1=="mioMode"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5578:10-27
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMode)")
   if (_1=="logMio"):
    if ((_2 - numpy.int32(_2))==0.0):
     _29=_2
     if (0 <= _29):
      _0._task_1put_1param_SD("MSK_IPAR_LOG_MIO",_29)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logMio)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logMio)")
   if (_1=="logMioFreq"):
    if ((_2 - numpy.int32(_2))==0.0):
     _30=_2
     if True:
      _0._task_1put_1param_SD("MSK_IPAR_LOG_MIO_FREQ",_30)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logMioFreq)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logMioFreq)")
   if (_1=="mioMaxNumRelaxs"):
    if ((_2 - numpy.int32(_2))==0.0):
     _31=_2
     if True:
      _0._task_1put_1param_SD("MSK_IPAR_MIO_MAX_NUM_RELAXS",_31)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumRelaxs)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumRelaxs)")
   if (_1=="mioMaxNumBranches"):
    if ((_2 - numpy.int32(_2))==0.0):
     _32=_2
     if True:
      _0._task_1put_1param_SD("MSK_IPAR_MIO_MAX_NUM_BRANCHES",_32)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumBranches)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumBranches)")
   if (_1=="mioMaxNumRestarts"):
    if ((_2 - numpy.int32(_2))==0.0):
     _33=_2
     if (0 <= _33):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_MAX_NUM_RESTARTS",_33)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumRestarts)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumRestarts)")
   if (_1=="mioMaxNumRootCutRounds"):
    if ((_2 - numpy.int32(_2))==0.0):
     _34=_2
     if (0 <= _34):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_MAX_NUM_ROOT_CUT_ROUNDS",_34)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumRootCutRounds)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumRootCutRounds)")
   if (_1=="mioMaxNumSolutions"):
    if ((_2 - numpy.int32(_2))==0.0):
     _35=_2
     if True:
      _0._task_1put_1param_SD("MSK_IPAR_MIO_MAX_NUM_SOLUTIONS",_35)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumSolutions)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumSolutions)")
   elif (_1=="mioNodeSelection"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5685:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioNodeSelection)")
   elif (_1=="mioVarSelection"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5687:10-35
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioVarSelection)")
   if (_1=="mioMinRel"):
    if ((_2 - numpy.int32(_2))==0.0):
     _36=_2
     if (0 <= _36):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_MIN_REL",_36)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMinRel)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMinRel)")
   if (_1=="mioHeuristicLevel"):
    if ((_2 - numpy.int32(_2))==0.0):
     _37=_2
     if True:
      _0._task_1put_1param_SD("MSK_IPAR_MIO_HEURISTIC_LEVEL",_37)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioHeuristicLevel)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioHeuristicLevel)")
   if (_1=="mioProbingLevel"):
    if ((_2 - numpy.int32(_2))==0.0):
     _38=_2
     if (((- 1) <= _38) and (_38 <= 3)):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_PROBING_LEVEL",_38)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioProbingLevel)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioProbingLevel)")
   if (_1=="mioSymmetryLevel"):
    if ((_2 - numpy.int32(_2))==0.0):
     _39=_2
     if (((- 1) <= _39) and (_39 <= 4)):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_SYMMETRY_LEVEL",_39)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioSymmetryLevel)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioSymmetryLevel)")
   if (_1=="mioDualRayAnalysisLevel"):
    if ((_2 - numpy.int32(_2))==0.0):
     _40=_2
     if (((- 1) <= _40) and (_40 <= 2)):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_DUAL_RAY_ANALYSIS_LEVEL",_40)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioDualRayAnalysisLevel)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioDualRayAnalysisLevel)")
   if (_1=="mioConflictAnalysisLevel"):
    if ((_2 - numpy.int32(_2))==0.0):
     _41=_2
     if (((- 1) <= _41) and (_41 <= 2)):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_CONFLICT_ANALYSIS_LEVEL",_41)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioConflictAnalysisLevel)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioConflictAnalysisLevel)")
   elif (_1=="mioPresolveAggregatorUse"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5779:10-44
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioPresolveAggregatorUse)")
   if (_1=="mioNumericalEmphasisLevel"):
    if ((_2 - numpy.int32(_2))==0.0):
     _42=_2
     if ((0 <= _42) and (_42 <= 2)):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_NUMERICAL_EMPHASIS_LEVEL",_42)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioNumericalEmphasisLevel)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioNumericalEmphasisLevel)")
   if (_1=="mioMemoryEmphasisLevel"):
    if ((_2 - numpy.int32(_2))==0.0):
     _43=_2
     if ((0 <= _43) and (_43 <= 1)):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_MEMORY_EMPHASIS_LEVEL",_43)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMemoryEmphasisLevel)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMemoryEmphasisLevel)")
   if (_1=="mioCutSelectionLevel"):
    if ((_2 - numpy.int32(_2))==0.0):
     _44=_2
     if (((- 1) <= _44) and (_44 <= 1)):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_CUT_SELECTION_LEVEL",_44)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutSelectionLevel)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutSelectionLevel)")
   if (_1=="mioVbDetectionLevel"):
    if ((_2 - numpy.int32(_2))==0.0):
     _45=_2
     if (((- 1) <= _45) and (_45 <= 2)):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_VB_DETECTION_LEVEL",_45)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioVbDetectionLevel)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioVbDetectionLevel)")
   elif (_1=="mioBranchDir"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5841:10-32
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioBranchDir)")
   elif (_1=="mioRootOptimizer"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5843:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioRootOptimizer)")
   elif (_1=="mioNodeOptimizer"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5845:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioNodeOptimizer)")
   elif (_1=="mioPerspectiveReformulate"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5847:10-45
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioPerspectiveReformulate)")
   elif (_1=="mioPropagateObjectiveConstraint"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5849:10-51
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioPropagateObjectiveConstraint)")
   if (_1=="mioSeed"):
    if ((_2 - numpy.int32(_2))==0.0):
     _46=_2
     if (0 <= _46):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_SEED",_46)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioSeed)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioSeed)")
   elif (_1=="mioConicOuterApproximation"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5866:10-46
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioConicOuterApproximation)")
   elif (_1=="mioQcqoReformulationMethod"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5868:10-46
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioQcqoReformulationMethod)")
   elif (_1=="mioDataPermutationMethod"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5870:10-44
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioDataPermutationMethod)")
   elif (_1=="writeMpsFormat"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5872:10-34
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (writeMpsFormat)")
   if (_1=="writeLpLineWidth"):
    if ((_2 - numpy.int32(_2))==0.0):
     _47=_2
     if (40 <= _47):
      _0._task_1put_1param_SD("MSK_IPAR_WRITE_LP_LINE_WIDTH",_47)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (writeLpLineWidth)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (writeLpLineWidth)")
   elif (_1=="writeLpFullObj"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5889:10-34
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (writeLpFullObj)")
   elif (_1=="writeJsonIndentation"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5891:10-40
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (writeJsonIndentation)")
   elif (_1=="infeasReportAuto"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5893:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (infeasReportAuto)")
   elif (_1=="licenseWait"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5895:10-31
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licenseWait)")
   elif (_1=="licenseSuppressExpireWrns"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5897:10-45
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licenseSuppressExpireWrns)")
   if (_1=="licensePauseTime"):
    if ((_2 - numpy.int32(_2))==0.0):
     _48=_2
     if ((0 <= _48) and (_48 <= 1000000)):
      _0._task_1put_1param_SD("MSK_IPAR_LICENSE_PAUSE_TIME",_48)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licensePauseTime)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licensePauseTime)")
   elif (_1=="licenseDebug"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5914:10-32
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licenseDebug)")
   if (_1=="log"):
    if ((_2 - numpy.int32(_2))==0.0):
     _49=_2
     if (0 <= _49):
      _0._task_1put_1param_SD("MSK_IPAR_LOG",_49)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (log)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (log)")
   if (_1=="logExpand"):
    if ((_2 - numpy.int32(_2))==0.0):
     _50=_2
     if (0 <= _50):
      _0._task_1put_1param_SD("MSK_IPAR_LOG_EXPAND",_50)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logExpand)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logExpand)")
   if (_1=="logFile"):
    if ((_2 - numpy.int32(_2))==0.0):
     _51=_2
     if (0 <= _51):
      _0._task_1put_1param_SD("MSK_IPAR_LOG_FILE",_51)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logFile)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logFile)")
   if (_1=="logOrder"):
    if ((_2 - numpy.int32(_2))==0.0):
     _52=_2
     if (0 <= _52):
      _0._task_1put_1param_SD("MSK_IPAR_LOG_ORDER",_52)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logOrder)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logOrder)")
   elif (_1=="simScaling"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5976:10-30
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simScaling)")
   elif (_1=="simScalingMethod"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5978:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simScalingMethod)")
   if (_1=="simPrimalPhaseoneMethod"):
    if ((_2 - numpy.int32(_2))==0.0):
     _53=_2
     if ((0 <= _53) and (_53 <= 10)):
      _0._task_1put_1param_SD("MSK_IPAR_SIM_PRIMAL_PHASEONE_METHOD",_53)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalPhaseoneMethod)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalPhaseoneMethod)")
   if (_1=="simDualPhaseoneMethod"):
    if ((_2 - numpy.int32(_2))==0.0):
     _54=_2
     if ((0 <= _54) and (_54 <= 10)):
      _0._task_1put_1param_SD("MSK_IPAR_SIM_DUAL_PHASEONE_METHOD",_54)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualPhaseoneMethod)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualPhaseoneMethod)")
   if (_1=="simMaxNumSetbacks"):
    if ((_2 - numpy.int32(_2))==0.0):
     _55=_2
     if (0 <= _55):
      _0._task_1put_1param_SD("MSK_IPAR_SIM_MAX_NUM_SETBACKS",_55)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simMaxNumSetbacks)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simMaxNumSetbacks)")
   elif (_1=="simHotstart"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6025:10-31
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simHotstart)")
   elif (_1=="simBasisFactorUse"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6027:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simBasisFactorUse)")
   elif (_1=="simPrecisionBoost"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6029:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrecisionBoost)")
   elif (_1=="simDegen"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6031:10-28
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDegen)")
   elif (_1=="simReformulation"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6033:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simReformulation)")
   elif (_1=="simExploitDupvec"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6035:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simExploitDupvec)")
   elif (_1=="simSaveLu"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6037:10-29
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simSaveLu)")
   elif (_1=="simNonSingular"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6039:10-34
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simNonSingular)")
   if (_1=="simDualCrash"):
    if ((_2 - numpy.int32(_2))==0.0):
     _56=_2
     if (0 <= _56):
      _0._task_1put_1param_SD("MSK_IPAR_SIM_DUAL_CRASH",_56)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualCrash)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualCrash)")
   elif (_1=="ptfWriteTransform"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6056:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (ptfWriteTransform)")
   elif (_1=="ptfWriteSolutions"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6058:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (ptfWriteSolutions)")
   elif (_1=="ptfWriteParameters"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6060:10-38
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (ptfWriteParameters)")
   elif (_1=="ptfWriteSinglePsdTerms"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6062:10-42
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (ptfWriteSinglePsdTerms)")
   elif (_1=="mioCutCmir"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6064:10-30
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutCmir)")
   elif (_1=="mioCutClique"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6066:10-32
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutClique)")
   elif (_1=="mioCutImpliedBound"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6068:10-38
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutImpliedBound)")
   elif (_1=="mioCutKnapsackCover"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6070:10-39
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutKnapsackCover)")
   elif (_1=="mioCutGmi"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6072:10-29
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutGmi)")
   elif (_1=="mioCutLipro"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6074:10-31
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutLipro)")
   elif (_1=="mioConstructSol"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6076:10-35
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioConstructSol)")
   if (_1=="presolveLindepRelWorkTrh"):
    if ((_2 - numpy.int32(_2))==0.0):
     _57=_2
     if True:
      _0._task_1put_1param_SD("MSK_IPAR_PRESOLVE_LINDEP_REL_WORK_TRH",_57)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveLindepRelWorkTrh)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveLindepRelWorkTrh)")
   if (_1=="presolveLindepAbsWorkTrh"):
    if ((_2 - numpy.int32(_2))==0.0):
     _58=_2
     if True:
      _0._task_1put_1param_SD("MSK_IPAR_PRESOLVE_LINDEP_ABS_WORK_TRH",_58)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveLindepAbsWorkTrh)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveLindepAbsWorkTrh)")
   elif (_1=="cacheLicense"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6108:10-32
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (cacheLicense)")
   elif (_1=="intpntRegularizationUse"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6110:10-43
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntRegularizationUse)")
   elif (_1=="simSolveForm"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6112:10-32
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simSolveForm)")
   elif (_1=="simSwitchOptimizer"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6114:10-38
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simSwitchOptimizer)")
   elif (_1=="autoSortABeforeOpt"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6116:10-38
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (autoSortABeforeOpt)")
   if (_1=="mioRinsMaxNodes"):
    if ((_2 - numpy.int32(_2))==0.0):
     _59=_2
     if ((- 1) <= _59):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_RINS_MAX_NODES",_59)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioRinsMaxNodes)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioRinsMaxNodes)")
   if (_1=="mioRensMaxNodes"):
    if ((_2 - numpy.int32(_2))==0.0):
     _60=_2
     if ((- 1) <= _60):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_RENS_MAX_NODES",_60)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioRensMaxNodes)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioRensMaxNodes)")
   if (_1=="mioCrossoverMaxNodes"):
    if ((_2 - numpy.int32(_2))==0.0):
     _61=_2
     if ((- 1) <= _61):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_CROSSOVER_MAX_NODES",_61)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCrossoverMaxNodes)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCrossoverMaxNodes)")
   if (_1=="mioOptFaceMaxNodes"):
    if ((_2 - numpy.int32(_2))==0.0):
     _62=_2
     if ((- 1) <= _62):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_OPT_FACE_MAX_NODES",_62)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioOptFaceMaxNodes)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioOptFaceMaxNodes)")
   if (_1=="mioFeaspumpLevel"):
    if ((_2 - numpy.int32(_2))==0.0):
     _63=_2
     if (((- 1) <= _63) and (_63 <= 2)):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_FEASPUMP_LEVEL",_63)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioFeaspumpLevel)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioFeaspumpLevel)")
   if (_1=="mioIndependentBlockLevel"):
    if ((_2 - numpy.int32(_2))==0.0):
     _64=_2
     if (((- 1) <= _64) and (_64 <= 3)):
      _0._task_1put_1param_SD("MSK_IPAR_MIO_INDEPENDENT_BLOCK_LEVEL",_64)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioIndependentBlockLevel)")
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioIndependentBlockLevel)")
   elif (_1=="remoteUseCompression"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6208:10-40
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (remoteUseCompression)")
   if (_1=="semidefiniteTolApprox"):
    _65=_2
    if (1.000000e-15 <= _65):
     _0._task_1put_1param_SD("MSK_DPAR_SEMIDEFINITE_TOL_APPROX",_65)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (semidefiniteTolApprox)")
   if (_1=="optimizerMaxTime"):
    _66=_2
    if True:
     _0._task_1put_1param_SD("MSK_DPAR_OPTIMIZER_MAX_TIME",_66)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (optimizerMaxTime)")
   if (_1=="optimizerMaxTicks"):
    _67=_2
    if True:
     _0._task_1put_1param_SD("MSK_DPAR_OPTIMIZER_MAX_TICKS",_67)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (optimizerMaxTicks)")
   if (_1=="lowerObjCut"):
    _68=_2
    if True:
     _0._task_1put_1param_SD("MSK_DPAR_LOWER_OBJ_CUT",_68)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (lowerObjCut)")
   if (_1=="upperObjCut"):
    _69=_2
    if True:
     _0._task_1put_1param_SD("MSK_DPAR_UPPER_OBJ_CUT",_69)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (upperObjCut)")
   if (_1=="upperObjCutFiniteTrh"):
    _70=_2
    if True:
     _0._task_1put_1param_SD("MSK_DPAR_UPPER_OBJ_CUT_FINITE_TRH",_70)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (upperObjCutFiniteTrh)")
   if (_1=="lowerObjCutFiniteTrh"):
    _71=_2
    if True:
     _0._task_1put_1param_SD("MSK_DPAR_LOWER_OBJ_CUT_FINITE_TRH",_71)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (lowerObjCutFiniteTrh)")
   if (_1=="intpntTolRelGap"):
    _72=_2
    if (1.000000e-14 <= _72):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_REL_GAP",_72)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolRelGap)")
   if (_1=="intpntTolStepSize"):
    _73=_2
    if ((0.000000e+00 <= _73) and (_73 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_STEP_SIZE",_73)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolStepSize)")
   if (_1=="simLuTolRelPiv"):
    _74=_2
    if ((1.000000e-06 <= _74) and (_74 <= 9.999990e-01)):
     _0._task_1put_1param_SD("MSK_DPAR_SIM_LU_TOL_REL_PIV",_74)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simLuTolRelPiv)")
   if (_1=="intpntTolRelStep"):
    _75=_2
    if ((1.000000e-04 <= _75) and (_75 <= 9.999990e-01)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_REL_STEP",_75)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolRelStep)")
   if (_1=="intpntTolPath"):
    _76=_2
    if ((0.000000e+00 <= _76) and (_76 <= 9.999000e-01)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_PATH",_76)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolPath)")
   if (_1=="intpntTolPfeas"):
    _77=_2
    if ((0.000000e+00 <= _77) and (_77 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_PFEAS",_77)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolPfeas)")
   if (_1=="intpntTolDfeas"):
    _78=_2
    if ((0.000000e+00 <= _78) and (_78 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_DFEAS",_78)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolDfeas)")
   if (_1=="intpntTolMuRed"):
    _79=_2
    if ((0.000000e+00 <= _79) and (_79 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_MU_RED",_79)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolMuRed)")
   if (_1=="intpntTolInfeas"):
    _80=_2
    if ((0.000000e+00 <= _80) and (_80 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_INFEAS",_80)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolInfeas)")
   if (_1=="intpntCoTolRelGap"):
    _81=_2
    if ((0.000000e+00 <= _81) and (_81 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_REL_GAP",_81)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolRelGap)")
   if (_1=="intpntCoTolPfeas"):
    _82=_2
    if ((0.000000e+00 <= _82) and (_82 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_PFEAS",_82)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolPfeas)")
   if (_1=="intpntCoTolDfeas"):
    _83=_2
    if ((0.000000e+00 <= _83) and (_83 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_DFEAS",_83)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolDfeas)")
   if (_1=="intpntCoTolMuRed"):
    _84=_2
    if ((0.000000e+00 <= _84) and (_84 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_MU_RED",_84)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolMuRed)")
   if (_1=="intpntCoTolNearRel"):
    _85=_2
    if (1.000000e+00 <= _85):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_NEAR_REL",_85)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolNearRel)")
   if (_1=="intpntCoTolInfeas"):
    _86=_2
    if ((0.000000e+00 <= _86) and (_86 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_INFEAS",_86)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolInfeas)")
   if (_1=="intpntTolPsafe"):
    _87=_2
    if (1.000000e-04 <= _87):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_PSAFE",_87)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolPsafe)")
   if (_1=="intpntTolDsafe"):
    _88=_2
    if (1.000000e-04 <= _88):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_DSAFE",_88)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolDsafe)")
   if (_1=="mioMaxTime"):
    _89=_2
    if True:
     _0._task_1put_1param_SD("MSK_DPAR_MIO_MAX_TIME",_89)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxTime)")
   if (_1=="mioRelGapConst"):
    _90=_2
    if (1.000000e-15 <= _90):
     _0._task_1put_1param_SD("MSK_DPAR_MIO_REL_GAP_CONST",_90)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioRelGapConst)")
   if (_1=="mioTolRelGap"):
    _91=_2
    if (0.000000e+00 <= _91):
     _0._task_1put_1param_SD("MSK_DPAR_MIO_TOL_REL_GAP",_91)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolRelGap)")
   if (_1=="mioTolAbsGap"):
    _92=_2
    if (0.000000e+00 <= _92):
     _0._task_1put_1param_SD("MSK_DPAR_MIO_TOL_ABS_GAP",_92)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolAbsGap)")
   if (_1=="mioTolAbsRelaxInt"):
    _93=_2
    if (1.000000e-09 <= _93):
     _0._task_1put_1param_SD("MSK_DPAR_MIO_TOL_ABS_RELAX_INT",_93)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolAbsRelaxInt)")
   if (_1=="mioDjcMaxBigm"):
    _94=_2
    if (0.000000e+00 <= _94):
     _0._task_1put_1param_SD("MSK_DPAR_MIO_DJC_MAX_BIGM",_94)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioDjcMaxBigm)")
   if (_1=="mioCliqueTableSizeFactor"):
    _95=_2
    if ((- 1.000000e+00) <= _95):
     _0._task_1put_1param_SD("MSK_DPAR_MIO_CLIQUE_TABLE_SIZE_FACTOR",_95)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCliqueTableSizeFactor)")
   if (_1=="simPrecisionScalingNormal"):
    _96=_2
    if (1.000000e+00 <= _96):
     _0._task_1put_1param_SD("MSK_DPAR_SIM_PRECISION_SCALING_NORMAL",_96)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrecisionScalingNormal)")
   if (_1=="simPrecisionScalingExtended"):
    _97=_2
    if (1.000000e+00 <= _97):
     _0._task_1put_1param_SD("MSK_DPAR_SIM_PRECISION_SCALING_EXTENDED",_97)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrecisionScalingExtended)")
   if (_1=="basisTolX"):
    _98=_2
    if (1.000000e-09 <= _98):
     _0._task_1put_1param_SD("MSK_DPAR_BASIS_TOL_X",_98)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (basisTolX)")
   if (_1=="basisTolS"):
    _99=_2
    if (1.000000e-09 <= _99):
     _0._task_1put_1param_SD("MSK_DPAR_BASIS_TOL_S",_99)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (basisTolS)")
   if (_1=="basisRelTolS"):
    _100=_2
    if (0.000000e+00 <= _100):
     _0._task_1put_1param_SD("MSK_DPAR_BASIS_REL_TOL_S",_100)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (basisRelTolS)")
   if (_1=="presolveTolX"):
    _101=_2
    if (0.000000e+00 <= _101):
     _0._task_1put_1param_SD("MSK_DPAR_PRESOLVE_TOL_X",_101)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolX)")
   if (_1=="presolveTolPrimalInfeasPerturbation"):
    _102=_2
    if (0.000000e+00 <= _102):
     _0._task_1put_1param_SD("MSK_DPAR_PRESOLVE_TOL_PRIMAL_INFEAS_PERTURBATION",_102)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolPrimalInfeasPerturbation)")
   if (_1=="presolveTolS"):
    _103=_2
    if (0.000000e+00 <= _103):
     _0._task_1put_1param_SD("MSK_DPAR_PRESOLVE_TOL_S",_103)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolS)")
   if (_1=="presolveTolAbsLindep"):
    _104=_2
    if (0.000000e+00 <= _104):
     _0._task_1put_1param_SD("MSK_DPAR_PRESOLVE_TOL_ABS_LINDEP",_104)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolAbsLindep)")
   if (_1=="presolveTolRelLindep"):
    _105=_2
    if (0.000000e+00 <= _105):
     _0._task_1put_1param_SD("MSK_DPAR_PRESOLVE_TOL_REL_LINDEP",_105)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolRelLindep)")
   if (_1=="foldingTolEq"):
    _106=_2
    if (0.000000e+00 <= _106):
     _0._task_1put_1param_SD("MSK_DPAR_FOLDING_TOL_EQ",_106)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (foldingTolEq)")
   if (_1=="simplexAbsTolPiv"):
    _107=_2
    if (1.000000e-12 <= _107):
     _0._task_1put_1param_SD("MSK_DPAR_SIMPLEX_ABS_TOL_PIV",_107)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simplexAbsTolPiv)")
   if (_1=="mioTolFeas"):
    _108=_2
    if ((1.000000e-09 <= _108) and (_108 <= 1.000000e-03)):
     _0._task_1put_1param_SD("MSK_DPAR_MIO_TOL_FEAS",_108)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolFeas)")
   if (_1=="mioTolRelDualBoundImprovement"):
    _109=_2
    if ((0.000000e+00 <= _109) and (_109 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_MIO_TOL_REL_DUAL_BOUND_IMPROVEMENT",_109)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolRelDualBoundImprovement)")
   elif (_1=="dataFileName"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6660:10-32
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (dataFileName)")
   elif (_1=="remoteOptserverHost"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6662:10-39
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (remoteOptserverHost)")
   elif (_1=="remoteTlsCertPath"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6664:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (remoteTlsCertPath)")
   elif (_1=="remoteTlsCert"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:6666:10-33
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (remoteTlsCert)")
   raise mosek_fusion_ParameterError._ctor_S("Unknown parameter")
  @staticmethod
  def _match_setParameter_Lmosek_4fusion_4Model_2SI(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(_0) and __arg_match_S__(_1) and __arg_match_I__(_2))
  @staticmethod
  def _match_alt_setParameter_Lmosek_4fusion_4Model_2SI(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(_0) and __arg_alt_match_S__(_1) and __arg_alt_match_I__(_2))
  @staticmethod
  def _setParameter_alt_Lmosek_4fusion_4Model_2SI(_t__0,_t__1,_t__2):
    return mosek_fusion_Parameters._setParameter_Lmosek_4fusion_4Model_2SI(_0,_1,numpy.int32(__2))
  @staticmethod
  def _setParameter_Lmosek_4fusion_4Model_2SI(_0,_1,_2):
   if False:
    pass
   elif (_1=="autoUpdateSolInfo"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:3928:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (autoUpdateSolInfo)")
   elif (_1=="removeUnusedSolutions"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:3930:10-41
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (removeUnusedSolutions)")
   if (_1=="numThreads"):
    _3=_2
    if (0 <= _3):
     _0._task_1put_1param_SI("MSK_IPAR_NUM_THREADS",_3)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (numThreads)")
   if (_1=="mtSpincount"):
    _4=_2
    if ((0 <= _4) and (_4 <= 1000000000)):
     _0._task_1put_1param_SI("MSK_IPAR_MT_SPINCOUNT",_4)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mtSpincount)")
   elif (_1=="optimizer"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:3952:10-29
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (optimizer)")
   elif (_1=="simPrecision"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:3954:10-32
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrecision)")
   if (_1=="biMaxIterations"):
    _5=_2
    if (0 <= _5):
     _0._task_1put_1param_SI("MSK_IPAR_BI_MAX_ITERATIONS",_5)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (biMaxIterations)")
   if (_1=="licenseTrhExpiryWrn"):
    _6=_2
    if (0 <= _6):
     _0._task_1put_1param_SI("MSK_IPAR_LICENSE_TRH_EXPIRY_WRN",_6)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licenseTrhExpiryWrn)")
   if (_1=="logCutSecondOpt"):
    _7=_2
    if (0 <= _7):
     _0._task_1put_1param_SI("MSK_IPAR_LOG_CUT_SECOND_OPT",_7)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logCutSecondOpt)")
   elif (_1=="logLocalInfo"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:3986:10-32
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logLocalInfo)")
   if (_1=="logBi"):
    _8=_2
    if (0 <= _8):
     _0._task_1put_1param_SI("MSK_IPAR_LOG_BI",_8)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logBi)")
   if (_1=="logBiFreq"):
    _9=_2
    if (0 <= _9):
     _0._task_1put_1param_SI("MSK_IPAR_LOG_BI_FREQ",_9)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logBiFreq)")
   elif (_1=="biCleanOptimizer"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4008:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (biCleanOptimizer)")
   elif (_1=="intpntStartingPoint"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4010:10-39
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntStartingPoint)")
   elif (_1=="intpntDiffStep"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4012:10-34
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntDiffStep)")
   elif (_1=="intpntScaling"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4014:10-33
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntScaling)")
   elif (_1=="intpntSolveForm"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4016:10-35
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntSolveForm)")
   if (_1=="logIntpnt"):
    _10=_2
    if (0 <= _10):
     _0._task_1put_1param_SI("MSK_IPAR_LOG_INTPNT",_10)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logIntpnt)")
   if (_1=="intpntMaxIterations"):
    _11=_2
    if (0 <= _11):
     _0._task_1put_1param_SI("MSK_IPAR_INTPNT_MAX_ITERATIONS",_11)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntMaxIterations)")
   if (_1=="intpntOffColTrh"):
    _12=_2
    if (0 <= _12):
     _0._task_1put_1param_SI("MSK_IPAR_INTPNT_OFF_COL_TRH",_12)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntOffColTrh)")
   elif (_1=="intpntOrderMethod"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4048:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntOrderMethod)")
   if (_1=="intpntOrderGpNumSeeds"):
    _13=_2
    if (0 <= _13):
     _0._task_1put_1param_SI("MSK_IPAR_INTPNT_ORDER_GP_NUM_SEEDS",_13)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntOrderGpNumSeeds)")
   elif (_1=="intpntBasis"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4060:10-31
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntBasis)")
   elif (_1=="biIgnoreMaxIter"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4062:10-35
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (biIgnoreMaxIter)")
   elif (_1=="biIgnoreNumError"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4064:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (biIgnoreNumError)")
   if (_1=="intpntMaxNumCor"):
    _14=_2
    if ((- 1) <= _14):
     _0._task_1put_1param_SI("MSK_IPAR_INTPNT_MAX_NUM_COR",_14)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntMaxNumCor)")
   elif (_1=="presolveUse"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4076:10-31
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveUse)")
   if (_1=="logPresolve"):
    _15=_2
    if (0 <= _15):
     _0._task_1put_1param_SI("MSK_IPAR_LOG_PRESOLVE",_15)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logPresolve)")
   elif (_1=="presolveLindepUse"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4088:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveLindepUse)")
   elif (_1=="presolveLindepNew"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4090:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveLindepNew)")
   if (_1=="presolveMaxNumPass"):
    _16=_2
    if True:
     _0._task_1put_1param_SI("MSK_IPAR_PRESOLVE_MAX_NUM_PASS",_16)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveMaxNumPass)")
   if (_1=="presolveEliminatorMaxNumTries"):
    _17=_2
    if True:
     _0._task_1put_1param_SI("MSK_IPAR_PRESOLVE_ELIMINATOR_MAX_NUM_TRIES",_17)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveEliminatorMaxNumTries)")
   if (_1=="presolveEliminatorMaxFill"):
    _18=_2
    if True:
     _0._task_1put_1param_SI("MSK_IPAR_PRESOLVE_ELIMINATOR_MAX_FILL",_18)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveEliminatorMaxFill)")
   elif (_1=="foldingUse"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4122:10-30
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (foldingUse)")
   if (_1=="simPrimalCrash"):
    _19=_2
    if (0 <= _19):
     _0._task_1put_1param_SI("MSK_IPAR_SIM_PRIMAL_CRASH",_19)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalCrash)")
   if (_1=="logSim"):
    _20=_2
    if (0 <= _20):
     _0._task_1put_1param_SI("MSK_IPAR_LOG_SIM",_20)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logSim)")
   if (_1=="logSimFreq"):
    _21=_2
    if (0 <= _21):
     _0._task_1put_1param_SI("MSK_IPAR_LOG_SIM_FREQ",_21)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logSimFreq)")
   if (_1=="logSimFreqGigaTicks"):
    _22=_2
    if ((- 1) <= _22):
     _0._task_1put_1param_SI("MSK_IPAR_LOG_SIM_FREQ_GIGA_TICKS",_22)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logSimFreqGigaTicks)")
   if (_1=="heartbeatSimFreqTicks"):
    _23=_2
    if ((- 1) <= _23):
     _0._task_1put_1param_SI("MSK_IPAR_HEARTBEAT_SIM_FREQ_TICKS",_23)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (heartbeatSimFreqTicks)")
   if (_1=="simPrimalRestrictSelection"):
    _24=_2
    if ((0 <= _24) and (_24 <= 100)):
     _0._task_1put_1param_SI("MSK_IPAR_SIM_PRIMAL_RESTRICT_SELECTION",_24)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalRestrictSelection)")
   elif (_1=="simPrimalSelection"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4184:10-38
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalSelection)")
   if (_1=="simDualRestrictSelection"):
    _25=_2
    if ((0 <= _25) and (_25 <= 100)):
     _0._task_1put_1param_SI("MSK_IPAR_SIM_DUAL_RESTRICT_SELECTION",_25)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualRestrictSelection)")
   elif (_1=="simDualSelection"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4196:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualSelection)")
   if (_1=="simMaxIterations"):
    _26=_2
    if (0 <= _26):
     _0._task_1put_1param_SI("MSK_IPAR_SIM_MAX_ITERATIONS",_26)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simMaxIterations)")
   elif (_1=="simHotstartLu"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4208:10-33
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simHotstartLu)")
   if (_1=="simRefactorFreq"):
    _27=_2
    if (0 <= _27):
     _0._task_1put_1param_SI("MSK_IPAR_SIM_REFACTOR_FREQ",_27)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simRefactorFreq)")
   if (_1=="simSeed"):
    _28=_2
    if ((0 <= _28) and (_28 <= 32749)):
     _0._task_1put_1param_SI("MSK_IPAR_SIM_SEED",_28)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simSeed)")
   elif (_1=="mioMode"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4230:10-27
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMode)")
   if (_1=="logMio"):
    _29=_2
    if (0 <= _29):
     _0._task_1put_1param_SI("MSK_IPAR_LOG_MIO",_29)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logMio)")
   if (_1=="logMioFreq"):
    _30=_2
    if True:
     _0._task_1put_1param_SI("MSK_IPAR_LOG_MIO_FREQ",_30)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logMioFreq)")
   if (_1=="mioMaxNumRelaxs"):
    _31=_2
    if True:
     _0._task_1put_1param_SI("MSK_IPAR_MIO_MAX_NUM_RELAXS",_31)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumRelaxs)")
   if (_1=="mioMaxNumBranches"):
    _32=_2
    if True:
     _0._task_1put_1param_SI("MSK_IPAR_MIO_MAX_NUM_BRANCHES",_32)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumBranches)")
   if (_1=="mioMaxNumRestarts"):
    _33=_2
    if (0 <= _33):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_MAX_NUM_RESTARTS",_33)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumRestarts)")
   if (_1=="mioMaxNumRootCutRounds"):
    _34=_2
    if (0 <= _34):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_MAX_NUM_ROOT_CUT_ROUNDS",_34)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumRootCutRounds)")
   if (_1=="mioMaxNumSolutions"):
    _35=_2
    if True:
     _0._task_1put_1param_SI("MSK_IPAR_MIO_MAX_NUM_SOLUTIONS",_35)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumSolutions)")
   elif (_1=="mioNodeSelection"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4302:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioNodeSelection)")
   elif (_1=="mioVarSelection"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4304:10-35
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioVarSelection)")
   if (_1=="mioMinRel"):
    _36=_2
    if (0 <= _36):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_MIN_REL",_36)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMinRel)")
   if (_1=="mioHeuristicLevel"):
    _37=_2
    if True:
     _0._task_1put_1param_SI("MSK_IPAR_MIO_HEURISTIC_LEVEL",_37)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioHeuristicLevel)")
   if (_1=="mioProbingLevel"):
    _38=_2
    if (((- 1) <= _38) and (_38 <= 3)):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_PROBING_LEVEL",_38)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioProbingLevel)")
   if (_1=="mioSymmetryLevel"):
    _39=_2
    if (((- 1) <= _39) and (_39 <= 4)):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_SYMMETRY_LEVEL",_39)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioSymmetryLevel)")
   if (_1=="mioDualRayAnalysisLevel"):
    _40=_2
    if (((- 1) <= _40) and (_40 <= 2)):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_DUAL_RAY_ANALYSIS_LEVEL",_40)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioDualRayAnalysisLevel)")
   if (_1=="mioConflictAnalysisLevel"):
    _41=_2
    if (((- 1) <= _41) and (_41 <= 2)):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_CONFLICT_ANALYSIS_LEVEL",_41)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioConflictAnalysisLevel)")
   elif (_1=="mioPresolveAggregatorUse"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4366:10-44
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioPresolveAggregatorUse)")
   if (_1=="mioNumericalEmphasisLevel"):
    _42=_2
    if ((0 <= _42) and (_42 <= 2)):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_NUMERICAL_EMPHASIS_LEVEL",_42)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioNumericalEmphasisLevel)")
   if (_1=="mioMemoryEmphasisLevel"):
    _43=_2
    if ((0 <= _43) and (_43 <= 1)):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_MEMORY_EMPHASIS_LEVEL",_43)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMemoryEmphasisLevel)")
   if (_1=="mioCutSelectionLevel"):
    _44=_2
    if (((- 1) <= _44) and (_44 <= 1)):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_CUT_SELECTION_LEVEL",_44)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutSelectionLevel)")
   if (_1=="mioVbDetectionLevel"):
    _45=_2
    if (((- 1) <= _45) and (_45 <= 2)):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_VB_DETECTION_LEVEL",_45)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioVbDetectionLevel)")
   elif (_1=="mioBranchDir"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4408:10-32
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioBranchDir)")
   elif (_1=="mioRootOptimizer"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4410:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioRootOptimizer)")
   elif (_1=="mioNodeOptimizer"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4412:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioNodeOptimizer)")
   elif (_1=="mioPerspectiveReformulate"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4414:10-45
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioPerspectiveReformulate)")
   elif (_1=="mioPropagateObjectiveConstraint"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4416:10-51
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioPropagateObjectiveConstraint)")
   if (_1=="mioSeed"):
    _46=_2
    if (0 <= _46):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_SEED",_46)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioSeed)")
   elif (_1=="mioConicOuterApproximation"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4428:10-46
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioConicOuterApproximation)")
   elif (_1=="mioQcqoReformulationMethod"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4430:10-46
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioQcqoReformulationMethod)")
   elif (_1=="mioDataPermutationMethod"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4432:10-44
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioDataPermutationMethod)")
   elif (_1=="writeMpsFormat"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4434:10-34
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (writeMpsFormat)")
   if (_1=="writeLpLineWidth"):
    _47=_2
    if (40 <= _47):
     _0._task_1put_1param_SI("MSK_IPAR_WRITE_LP_LINE_WIDTH",_47)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (writeLpLineWidth)")
   elif (_1=="writeLpFullObj"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4446:10-34
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (writeLpFullObj)")
   elif (_1=="writeJsonIndentation"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4448:10-40
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (writeJsonIndentation)")
   elif (_1=="infeasReportAuto"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4450:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (infeasReportAuto)")
   elif (_1=="licenseWait"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4452:10-31
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licenseWait)")
   elif (_1=="licenseSuppressExpireWrns"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4454:10-45
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licenseSuppressExpireWrns)")
   if (_1=="licensePauseTime"):
    _48=_2
    if ((0 <= _48) and (_48 <= 1000000)):
     _0._task_1put_1param_SI("MSK_IPAR_LICENSE_PAUSE_TIME",_48)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licensePauseTime)")
   elif (_1=="licenseDebug"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4466:10-32
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licenseDebug)")
   if (_1=="log"):
    _49=_2
    if (0 <= _49):
     _0._task_1put_1param_SI("MSK_IPAR_LOG",_49)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (log)")
   if (_1=="logExpand"):
    _50=_2
    if (0 <= _50):
     _0._task_1put_1param_SI("MSK_IPAR_LOG_EXPAND",_50)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logExpand)")
   if (_1=="logFile"):
    _51=_2
    if (0 <= _51):
     _0._task_1put_1param_SI("MSK_IPAR_LOG_FILE",_51)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logFile)")
   if (_1=="logOrder"):
    _52=_2
    if (0 <= _52):
     _0._task_1put_1param_SI("MSK_IPAR_LOG_ORDER",_52)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logOrder)")
   elif (_1=="simScaling"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4508:10-30
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simScaling)")
   elif (_1=="simScalingMethod"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4510:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simScalingMethod)")
   if (_1=="simPrimalPhaseoneMethod"):
    _53=_2
    if ((0 <= _53) and (_53 <= 10)):
     _0._task_1put_1param_SI("MSK_IPAR_SIM_PRIMAL_PHASEONE_METHOD",_53)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalPhaseoneMethod)")
   if (_1=="simDualPhaseoneMethod"):
    _54=_2
    if ((0 <= _54) and (_54 <= 10)):
     _0._task_1put_1param_SI("MSK_IPAR_SIM_DUAL_PHASEONE_METHOD",_54)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualPhaseoneMethod)")
   if (_1=="simMaxNumSetbacks"):
    _55=_2
    if (0 <= _55):
     _0._task_1put_1param_SI("MSK_IPAR_SIM_MAX_NUM_SETBACKS",_55)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simMaxNumSetbacks)")
   elif (_1=="simHotstart"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4542:10-31
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simHotstart)")
   elif (_1=="simBasisFactorUse"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4544:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simBasisFactorUse)")
   elif (_1=="simPrecisionBoost"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4546:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrecisionBoost)")
   elif (_1=="simDegen"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4548:10-28
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDegen)")
   elif (_1=="simReformulation"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4550:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simReformulation)")
   elif (_1=="simExploitDupvec"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4552:10-36
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simExploitDupvec)")
   elif (_1=="simSaveLu"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4554:10-29
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simSaveLu)")
   elif (_1=="simNonSingular"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4556:10-34
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simNonSingular)")
   if (_1=="simDualCrash"):
    _56=_2
    if (0 <= _56):
     _0._task_1put_1param_SI("MSK_IPAR_SIM_DUAL_CRASH",_56)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualCrash)")
   elif (_1=="ptfWriteTransform"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4568:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (ptfWriteTransform)")
   elif (_1=="ptfWriteSolutions"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4570:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (ptfWriteSolutions)")
   elif (_1=="ptfWriteParameters"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4572:10-38
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (ptfWriteParameters)")
   elif (_1=="ptfWriteSinglePsdTerms"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4574:10-42
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (ptfWriteSinglePsdTerms)")
   elif (_1=="mioCutCmir"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4576:10-30
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutCmir)")
   elif (_1=="mioCutClique"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4578:10-32
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutClique)")
   elif (_1=="mioCutImpliedBound"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4580:10-38
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutImpliedBound)")
   elif (_1=="mioCutKnapsackCover"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4582:10-39
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutKnapsackCover)")
   elif (_1=="mioCutGmi"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4584:10-29
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutGmi)")
   elif (_1=="mioCutLipro"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4586:10-31
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutLipro)")
   elif (_1=="mioConstructSol"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4588:10-35
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioConstructSol)")
   if (_1=="presolveLindepRelWorkTrh"):
    _57=_2
    if True:
     _0._task_1put_1param_SI("MSK_IPAR_PRESOLVE_LINDEP_REL_WORK_TRH",_57)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveLindepRelWorkTrh)")
   if (_1=="presolveLindepAbsWorkTrh"):
    _58=_2
    if True:
     _0._task_1put_1param_SI("MSK_IPAR_PRESOLVE_LINDEP_ABS_WORK_TRH",_58)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveLindepAbsWorkTrh)")
   elif (_1=="cacheLicense"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4610:10-32
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (cacheLicense)")
   elif (_1=="intpntRegularizationUse"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4612:10-43
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntRegularizationUse)")
   elif (_1=="simSolveForm"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4614:10-32
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simSolveForm)")
   elif (_1=="simSwitchOptimizer"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4616:10-38
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simSwitchOptimizer)")
   elif (_1=="autoSortABeforeOpt"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4618:10-38
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (autoSortABeforeOpt)")
   if (_1=="mioRinsMaxNodes"):
    _59=_2
    if ((- 1) <= _59):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_RINS_MAX_NODES",_59)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioRinsMaxNodes)")
   if (_1=="mioRensMaxNodes"):
    _60=_2
    if ((- 1) <= _60):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_RENS_MAX_NODES",_60)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioRensMaxNodes)")
   if (_1=="mioCrossoverMaxNodes"):
    _61=_2
    if ((- 1) <= _61):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_CROSSOVER_MAX_NODES",_61)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCrossoverMaxNodes)")
   if (_1=="mioOptFaceMaxNodes"):
    _62=_2
    if ((- 1) <= _62):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_OPT_FACE_MAX_NODES",_62)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioOptFaceMaxNodes)")
   if (_1=="mioFeaspumpLevel"):
    _63=_2
    if (((- 1) <= _63) and (_63 <= 2)):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_FEASPUMP_LEVEL",_63)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioFeaspumpLevel)")
   if (_1=="mioIndependentBlockLevel"):
    _64=_2
    if (((- 1) <= _64) and (_64 <= 3)):
     _0._task_1put_1param_SI("MSK_IPAR_MIO_INDEPENDENT_BLOCK_LEVEL",_64)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioIndependentBlockLevel)")
   elif (_1=="remoteUseCompression"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:4680:10-40
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (remoteUseCompression)")
   if (_1=="semidefiniteTolApprox"):
    _65=numpy.float64(_2)
    if (1.000000e-15 <= _65):
     _0._task_1put_1param_SD("MSK_DPAR_SEMIDEFINITE_TOL_APPROX",_65)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (semidefiniteTolApprox)")
   if (_1=="optimizerMaxTime"):
    _66=numpy.float64(_2)
    if True:
     _0._task_1put_1param_SD("MSK_DPAR_OPTIMIZER_MAX_TIME",_66)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (optimizerMaxTime)")
   if (_1=="optimizerMaxTicks"):
    _67=numpy.float64(_2)
    if True:
     _0._task_1put_1param_SD("MSK_DPAR_OPTIMIZER_MAX_TICKS",_67)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (optimizerMaxTicks)")
   if (_1=="lowerObjCut"):
    _68=numpy.float64(_2)
    if True:
     _0._task_1put_1param_SD("MSK_DPAR_LOWER_OBJ_CUT",_68)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (lowerObjCut)")
   if (_1=="upperObjCut"):
    _69=numpy.float64(_2)
    if True:
     _0._task_1put_1param_SD("MSK_DPAR_UPPER_OBJ_CUT",_69)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (upperObjCut)")
   if (_1=="upperObjCutFiniteTrh"):
    _70=numpy.float64(_2)
    if True:
     _0._task_1put_1param_SD("MSK_DPAR_UPPER_OBJ_CUT_FINITE_TRH",_70)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (upperObjCutFiniteTrh)")
   if (_1=="lowerObjCutFiniteTrh"):
    _71=numpy.float64(_2)
    if True:
     _0._task_1put_1param_SD("MSK_DPAR_LOWER_OBJ_CUT_FINITE_TRH",_71)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (lowerObjCutFiniteTrh)")
   if (_1=="intpntTolRelGap"):
    _72=numpy.float64(_2)
    if (1.000000e-14 <= _72):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_REL_GAP",_72)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolRelGap)")
   if (_1=="intpntTolStepSize"):
    _73=numpy.float64(_2)
    if ((0.000000e+00 <= _73) and (_73 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_STEP_SIZE",_73)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolStepSize)")
   if (_1=="simLuTolRelPiv"):
    _74=numpy.float64(_2)
    if ((1.000000e-06 <= _74) and (_74 <= 9.999990e-01)):
     _0._task_1put_1param_SD("MSK_DPAR_SIM_LU_TOL_REL_PIV",_74)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simLuTolRelPiv)")
   if (_1=="intpntTolRelStep"):
    _75=numpy.float64(_2)
    if ((1.000000e-04 <= _75) and (_75 <= 9.999990e-01)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_REL_STEP",_75)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolRelStep)")
   if (_1=="intpntTolPath"):
    _76=numpy.float64(_2)
    if ((0.000000e+00 <= _76) and (_76 <= 9.999000e-01)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_PATH",_76)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolPath)")
   if (_1=="intpntTolPfeas"):
    _77=numpy.float64(_2)
    if ((0.000000e+00 <= _77) and (_77 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_PFEAS",_77)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolPfeas)")
   if (_1=="intpntTolDfeas"):
    _78=numpy.float64(_2)
    if ((0.000000e+00 <= _78) and (_78 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_DFEAS",_78)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolDfeas)")
   if (_1=="intpntTolMuRed"):
    _79=numpy.float64(_2)
    if ((0.000000e+00 <= _79) and (_79 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_MU_RED",_79)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolMuRed)")
   if (_1=="intpntTolInfeas"):
    _80=numpy.float64(_2)
    if ((0.000000e+00 <= _80) and (_80 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_INFEAS",_80)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolInfeas)")
   if (_1=="intpntCoTolRelGap"):
    _81=numpy.float64(_2)
    if ((0.000000e+00 <= _81) and (_81 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_REL_GAP",_81)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolRelGap)")
   if (_1=="intpntCoTolPfeas"):
    _82=numpy.float64(_2)
    if ((0.000000e+00 <= _82) and (_82 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_PFEAS",_82)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolPfeas)")
   if (_1=="intpntCoTolDfeas"):
    _83=numpy.float64(_2)
    if ((0.000000e+00 <= _83) and (_83 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_DFEAS",_83)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolDfeas)")
   if (_1=="intpntCoTolMuRed"):
    _84=numpy.float64(_2)
    if ((0.000000e+00 <= _84) and (_84 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_MU_RED",_84)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolMuRed)")
   if (_1=="intpntCoTolNearRel"):
    _85=numpy.float64(_2)
    if (1.000000e+00 <= _85):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_NEAR_REL",_85)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolNearRel)")
   if (_1=="intpntCoTolInfeas"):
    _86=numpy.float64(_2)
    if ((0.000000e+00 <= _86) and (_86 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_INFEAS",_86)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolInfeas)")
   if (_1=="intpntTolPsafe"):
    _87=numpy.float64(_2)
    if (1.000000e-04 <= _87):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_PSAFE",_87)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolPsafe)")
   if (_1=="intpntTolDsafe"):
    _88=numpy.float64(_2)
    if (1.000000e-04 <= _88):
     _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_DSAFE",_88)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolDsafe)")
   if (_1=="mioMaxTime"):
    _89=numpy.float64(_2)
    if True:
     _0._task_1put_1param_SD("MSK_DPAR_MIO_MAX_TIME",_89)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxTime)")
   if (_1=="mioRelGapConst"):
    _90=numpy.float64(_2)
    if (1.000000e-15 <= _90):
     _0._task_1put_1param_SD("MSK_DPAR_MIO_REL_GAP_CONST",_90)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioRelGapConst)")
   if (_1=="mioTolRelGap"):
    _91=numpy.float64(_2)
    if (0.000000e+00 <= _91):
     _0._task_1put_1param_SD("MSK_DPAR_MIO_TOL_REL_GAP",_91)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolRelGap)")
   if (_1=="mioTolAbsGap"):
    _92=numpy.float64(_2)
    if (0.000000e+00 <= _92):
     _0._task_1put_1param_SD("MSK_DPAR_MIO_TOL_ABS_GAP",_92)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolAbsGap)")
   if (_1=="mioTolAbsRelaxInt"):
    _93=numpy.float64(_2)
    if (1.000000e-09 <= _93):
     _0._task_1put_1param_SD("MSK_DPAR_MIO_TOL_ABS_RELAX_INT",_93)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolAbsRelaxInt)")
   if (_1=="mioDjcMaxBigm"):
    _94=numpy.float64(_2)
    if (0.000000e+00 <= _94):
     _0._task_1put_1param_SD("MSK_DPAR_MIO_DJC_MAX_BIGM",_94)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioDjcMaxBigm)")
   if (_1=="mioCliqueTableSizeFactor"):
    _95=numpy.float64(_2)
    if ((- 1.000000e+00) <= _95):
     _0._task_1put_1param_SD("MSK_DPAR_MIO_CLIQUE_TABLE_SIZE_FACTOR",_95)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCliqueTableSizeFactor)")
   if (_1=="simPrecisionScalingNormal"):
    _96=numpy.float64(_2)
    if (1.000000e+00 <= _96):
     _0._task_1put_1param_SD("MSK_DPAR_SIM_PRECISION_SCALING_NORMAL",_96)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrecisionScalingNormal)")
   if (_1=="simPrecisionScalingExtended"):
    _97=numpy.float64(_2)
    if (1.000000e+00 <= _97):
     _0._task_1put_1param_SD("MSK_DPAR_SIM_PRECISION_SCALING_EXTENDED",_97)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrecisionScalingExtended)")
   if (_1=="basisTolX"):
    _98=numpy.float64(_2)
    if (1.000000e-09 <= _98):
     _0._task_1put_1param_SD("MSK_DPAR_BASIS_TOL_X",_98)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (basisTolX)")
   if (_1=="basisTolS"):
    _99=numpy.float64(_2)
    if (1.000000e-09 <= _99):
     _0._task_1put_1param_SD("MSK_DPAR_BASIS_TOL_S",_99)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (basisTolS)")
   if (_1=="basisRelTolS"):
    _100=numpy.float64(_2)
    if (0.000000e+00 <= _100):
     _0._task_1put_1param_SD("MSK_DPAR_BASIS_REL_TOL_S",_100)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (basisRelTolS)")
   if (_1=="presolveTolX"):
    _101=numpy.float64(_2)
    if (0.000000e+00 <= _101):
     _0._task_1put_1param_SD("MSK_DPAR_PRESOLVE_TOL_X",_101)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolX)")
   if (_1=="presolveTolPrimalInfeasPerturbation"):
    _102=numpy.float64(_2)
    if (0.000000e+00 <= _102):
     _0._task_1put_1param_SD("MSK_DPAR_PRESOLVE_TOL_PRIMAL_INFEAS_PERTURBATION",_102)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolPrimalInfeasPerturbation)")
   if (_1=="presolveTolS"):
    _103=numpy.float64(_2)
    if (0.000000e+00 <= _103):
     _0._task_1put_1param_SD("MSK_DPAR_PRESOLVE_TOL_S",_103)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolS)")
   if (_1=="presolveTolAbsLindep"):
    _104=numpy.float64(_2)
    if (0.000000e+00 <= _104):
     _0._task_1put_1param_SD("MSK_DPAR_PRESOLVE_TOL_ABS_LINDEP",_104)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolAbsLindep)")
   if (_1=="presolveTolRelLindep"):
    _105=numpy.float64(_2)
    if (0.000000e+00 <= _105):
     _0._task_1put_1param_SD("MSK_DPAR_PRESOLVE_TOL_REL_LINDEP",_105)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolRelLindep)")
   if (_1=="foldingTolEq"):
    _106=numpy.float64(_2)
    if (0.000000e+00 <= _106):
     _0._task_1put_1param_SD("MSK_DPAR_FOLDING_TOL_EQ",_106)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (foldingTolEq)")
   if (_1=="simplexAbsTolPiv"):
    _107=numpy.float64(_2)
    if (1.000000e-12 <= _107):
     _0._task_1put_1param_SD("MSK_DPAR_SIMPLEX_ABS_TOL_PIV",_107)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simplexAbsTolPiv)")
   if (_1=="mioTolFeas"):
    _108=numpy.float64(_2)
    if ((1.000000e-09 <= _108) and (_108 <= 1.000000e-03)):
     _0._task_1put_1param_SD("MSK_DPAR_MIO_TOL_FEAS",_108)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolFeas)")
   if (_1=="mioTolRelDualBoundImprovement"):
    _109=numpy.float64(_2)
    if ((0.000000e+00 <= _109) and (_109 <= 1.000000e+00)):
     _0._task_1put_1param_SD("MSK_DPAR_MIO_TOL_REL_DUAL_BOUND_IMPROVEMENT",_109)
     return 
    else:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolRelDualBoundImprovement)")
   elif (_1=="dataFileName"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5132:10-32
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (dataFileName)")
   elif (_1=="remoteOptserverHost"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5134:10-39
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (remoteOptserverHost)")
   elif (_1=="remoteTlsCertPath"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5136:10-37
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (remoteTlsCertPath)")
   elif (_1=="remoteTlsCert"): # bld/grindsted/final/default/src/fusion/Parameters.mbi:5138:10-33
    raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (remoteTlsCert)")
   raise mosek_fusion_ParameterError._ctor_S("Unknown parameter")
  @staticmethod
  def _match_setParameter_Lmosek_4fusion_4Model_2SS(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_match_Lmosek_4fusion_4Model_2__(_0) and __arg_match_S__(_1) and __arg_match_S__(_2))
  @staticmethod
  def _match_alt_setParameter_Lmosek_4fusion_4Model_2SS(*args):
    if len(args) != 3: return False
    _0,_1,_2, = args
    return (__arg_alt_match_Lmosek_4fusion_4Model_2__(_0) and __arg_alt_match_S__(_1) and __arg_alt_match_S__(_2))
  @staticmethod
  def _setParameter_alt_Lmosek_4fusion_4Model_2SS(_t__0,_t__1,_t__2):
    return mosek_fusion_Parameters._setParameter_Lmosek_4fusion_4Model_2SS(_0,_1,_2)
  @staticmethod
  def _setParameter_Lmosek_4fusion_4Model_2SS(_0,_1,_2):
   if False:
    pass
   if (_1=="autoUpdateSolInfo"):
    _3=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_3 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (autoUpdateSolInfo)")
    _0._task_1put_1param_SI("MSK_IPAR_AUTO_UPDATE_SOL_INFO",_3)
    return 
   if (_1=="removeUnusedSolutions"):
    _4=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_4 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (removeUnusedSolutions)")
    _0._task_1put_1param_SI("MSK_IPAR_REMOVE_UNUSED_SOLUTIONS",_4)
    return 
   if (_1=="numThreads"):
    try:
     _5=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _5):
      _0._task_1put_1param_SI("MSK_IPAR_NUM_THREADS",_5)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (numThreads)")
    except mosek_fusion_ValueConversionError as _6:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (numThreads)")
   if (_1=="mtSpincount"):
    try:
     _7=mosek.fusion.Utils.Tools._toInt_S(_2)
     if ((0 <= _7) and (_7 <= 1000000000)):
      _0._task_1put_1param_SI("MSK_IPAR_MT_SPINCOUNT",_7)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mtSpincount)")
    except mosek_fusion_ValueConversionError as _8:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mtSpincount)")
   if (_1=="optimizer"):
    _9=mosek.fusion.Parameters.__string_1to_1optimizertype_1value_S(_2)
    if (_9 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (optimizer)")
    _0._task_1put_1param_SI("MSK_IPAR_OPTIMIZER",_9)
    return 
   if (_1=="simPrecision"):
    _10=mosek.fusion.Parameters.__string_1to_1simprecision_1value_S(_2)
    if (_10 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrecision)")
    _0._task_1put_1param_SI("MSK_IPAR_SIM_PRECISION",_10)
    return 
   if (_1=="biMaxIterations"):
    try:
     _11=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _11):
      _0._task_1put_1param_SI("MSK_IPAR_BI_MAX_ITERATIONS",_11)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (biMaxIterations)")
    except mosek_fusion_ValueConversionError as _12:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (biMaxIterations)")
   if (_1=="licenseTrhExpiryWrn"):
    try:
     _13=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _13):
      _0._task_1put_1param_SI("MSK_IPAR_LICENSE_TRH_EXPIRY_WRN",_13)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licenseTrhExpiryWrn)")
    except mosek_fusion_ValueConversionError as _14:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licenseTrhExpiryWrn)")
   if (_1=="logCutSecondOpt"):
    try:
     _15=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _15):
      _0._task_1put_1param_SI("MSK_IPAR_LOG_CUT_SECOND_OPT",_15)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logCutSecondOpt)")
    except mosek_fusion_ValueConversionError as _16:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logCutSecondOpt)")
   if (_1=="logLocalInfo"):
    _17=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_17 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logLocalInfo)")
    _0._task_1put_1param_SI("MSK_IPAR_LOG_LOCAL_INFO",_17)
    return 
   if (_1=="logBi"):
    try:
     _18=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _18):
      _0._task_1put_1param_SI("MSK_IPAR_LOG_BI",_18)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logBi)")
    except mosek_fusion_ValueConversionError as _19:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logBi)")
   if (_1=="logBiFreq"):
    try:
     _20=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _20):
      _0._task_1put_1param_SI("MSK_IPAR_LOG_BI_FREQ",_20)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logBiFreq)")
    except mosek_fusion_ValueConversionError as _21:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logBiFreq)")
   if (_1=="biCleanOptimizer"):
    _22=mosek.fusion.Parameters.__string_1to_1optimizertype_1value_S(_2)
    if (_22 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (biCleanOptimizer)")
    _0._task_1put_1param_SI("MSK_IPAR_BI_CLEAN_OPTIMIZER",_22)
    return 
   if (_1=="intpntStartingPoint"):
    _23=mosek.fusion.Parameters.__string_1to_1startpointtype_1value_S(_2)
    if (_23 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntStartingPoint)")
    _0._task_1put_1param_SI("MSK_IPAR_INTPNT_STARTING_POINT",_23)
    return 
   if (_1=="intpntDiffStep"):
    _24=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_24 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntDiffStep)")
    _0._task_1put_1param_SI("MSK_IPAR_INTPNT_DIFF_STEP",_24)
    return 
   if (_1=="intpntScaling"):
    _25=mosek.fusion.Parameters.__string_1to_1scalingtype_1value_S(_2)
    if (_25 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntScaling)")
    _0._task_1put_1param_SI("MSK_IPAR_INTPNT_SCALING",_25)
    return 
   if (_1=="intpntSolveForm"):
    _26=mosek.fusion.Parameters.__string_1to_1solveform_1value_S(_2)
    if (_26 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntSolveForm)")
    _0._task_1put_1param_SI("MSK_IPAR_INTPNT_SOLVE_FORM",_26)
    return 
   if (_1=="logIntpnt"):
    try:
     _27=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _27):
      _0._task_1put_1param_SI("MSK_IPAR_LOG_INTPNT",_27)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logIntpnt)")
    except mosek_fusion_ValueConversionError as _28:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logIntpnt)")
   if (_1=="intpntMaxIterations"):
    try:
     _29=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _29):
      _0._task_1put_1param_SI("MSK_IPAR_INTPNT_MAX_ITERATIONS",_29)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntMaxIterations)")
    except mosek_fusion_ValueConversionError as _30:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntMaxIterations)")
   if (_1=="intpntOffColTrh"):
    try:
     _31=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _31):
      _0._task_1put_1param_SI("MSK_IPAR_INTPNT_OFF_COL_TRH",_31)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntOffColTrh)")
    except mosek_fusion_ValueConversionError as _32:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntOffColTrh)")
   if (_1=="intpntOrderMethod"):
    _33=mosek.fusion.Parameters.__string_1to_1orderingtype_1value_S(_2)
    if (_33 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntOrderMethod)")
    _0._task_1put_1param_SI("MSK_IPAR_INTPNT_ORDER_METHOD",_33)
    return 
   if (_1=="intpntOrderGpNumSeeds"):
    try:
     _34=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _34):
      _0._task_1put_1param_SI("MSK_IPAR_INTPNT_ORDER_GP_NUM_SEEDS",_34)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntOrderGpNumSeeds)")
    except mosek_fusion_ValueConversionError as _35:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntOrderGpNumSeeds)")
   if (_1=="intpntBasis"):
    _36=mosek.fusion.Parameters.__string_1to_1basindtype_1value_S(_2)
    if (_36 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntBasis)")
    _0._task_1put_1param_SI("MSK_IPAR_INTPNT_BASIS",_36)
    return 
   if (_1=="biIgnoreMaxIter"):
    _37=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_37 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (biIgnoreMaxIter)")
    _0._task_1put_1param_SI("MSK_IPAR_BI_IGNORE_MAX_ITER",_37)
    return 
   if (_1=="biIgnoreNumError"):
    _38=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_38 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (biIgnoreNumError)")
    _0._task_1put_1param_SI("MSK_IPAR_BI_IGNORE_NUM_ERROR",_38)
    return 
   if (_1=="intpntMaxNumCor"):
    try:
     _39=mosek.fusion.Utils.Tools._toInt_S(_2)
     if ((- 1) <= _39):
      _0._task_1put_1param_SI("MSK_IPAR_INTPNT_MAX_NUM_COR",_39)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntMaxNumCor)")
    except mosek_fusion_ValueConversionError as _40:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntMaxNumCor)")
   if (_1=="presolveUse"):
    _41=mosek.fusion.Parameters.__string_1to_1presolvemode_1value_S(_2)
    if (_41 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveUse)")
    _0._task_1put_1param_SI("MSK_IPAR_PRESOLVE_USE",_41)
    return 
   if (_1=="logPresolve"):
    try:
     _42=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _42):
      _0._task_1put_1param_SI("MSK_IPAR_LOG_PRESOLVE",_42)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logPresolve)")
    except mosek_fusion_ValueConversionError as _43:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logPresolve)")
   if (_1=="presolveLindepUse"):
    _44=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_44 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveLindepUse)")
    _0._task_1put_1param_SI("MSK_IPAR_PRESOLVE_LINDEP_USE",_44)
    return 
   if (_1=="presolveLindepNew"):
    _45=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_45 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveLindepNew)")
    _0._task_1put_1param_SI("MSK_IPAR_PRESOLVE_LINDEP_NEW",_45)
    return 
   if (_1=="presolveMaxNumPass"):
    try:
     _46=mosek.fusion.Utils.Tools._toInt_S(_2)
     if True:
      _0._task_1put_1param_SI("MSK_IPAR_PRESOLVE_MAX_NUM_PASS",_46)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveMaxNumPass)")
    except mosek_fusion_ValueConversionError as _47:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveMaxNumPass)")
   if (_1=="presolveEliminatorMaxNumTries"):
    try:
     _48=mosek.fusion.Utils.Tools._toInt_S(_2)
     if True:
      _0._task_1put_1param_SI("MSK_IPAR_PRESOLVE_ELIMINATOR_MAX_NUM_TRIES",_48)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveEliminatorMaxNumTries)")
    except mosek_fusion_ValueConversionError as _49:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveEliminatorMaxNumTries)")
   if (_1=="presolveEliminatorMaxFill"):
    try:
     _50=mosek.fusion.Utils.Tools._toInt_S(_2)
     if True:
      _0._task_1put_1param_SI("MSK_IPAR_PRESOLVE_ELIMINATOR_MAX_FILL",_50)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveEliminatorMaxFill)")
    except mosek_fusion_ValueConversionError as _51:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveEliminatorMaxFill)")
   if (_1=="foldingUse"):
    _52=mosek.fusion.Parameters.__string_1to_1foldingmode_1value_S(_2)
    if (_52 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (foldingUse)")
    _0._task_1put_1param_SI("MSK_IPAR_FOLDING_USE",_52)
    return 
   if (_1=="simPrimalCrash"):
    try:
     _53=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _53):
      _0._task_1put_1param_SI("MSK_IPAR_SIM_PRIMAL_CRASH",_53)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalCrash)")
    except mosek_fusion_ValueConversionError as _54:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalCrash)")
   if (_1=="logSim"):
    try:
     _55=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _55):
      _0._task_1put_1param_SI("MSK_IPAR_LOG_SIM",_55)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logSim)")
    except mosek_fusion_ValueConversionError as _56:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logSim)")
   if (_1=="logSimFreq"):
    try:
     _57=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _57):
      _0._task_1put_1param_SI("MSK_IPAR_LOG_SIM_FREQ",_57)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logSimFreq)")
    except mosek_fusion_ValueConversionError as _58:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logSimFreq)")
   if (_1=="logSimFreqGigaTicks"):
    try:
     _59=mosek.fusion.Utils.Tools._toInt_S(_2)
     if ((- 1) <= _59):
      _0._task_1put_1param_SI("MSK_IPAR_LOG_SIM_FREQ_GIGA_TICKS",_59)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logSimFreqGigaTicks)")
    except mosek_fusion_ValueConversionError as _60:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logSimFreqGigaTicks)")
   if (_1=="heartbeatSimFreqTicks"):
    try:
     _61=mosek.fusion.Utils.Tools._toInt_S(_2)
     if ((- 1) <= _61):
      _0._task_1put_1param_SI("MSK_IPAR_HEARTBEAT_SIM_FREQ_TICKS",_61)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (heartbeatSimFreqTicks)")
    except mosek_fusion_ValueConversionError as _62:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (heartbeatSimFreqTicks)")
   if (_1=="simPrimalRestrictSelection"):
    try:
     _63=mosek.fusion.Utils.Tools._toInt_S(_2)
     if ((0 <= _63) and (_63 <= 100)):
      _0._task_1put_1param_SI("MSK_IPAR_SIM_PRIMAL_RESTRICT_SELECTION",_63)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalRestrictSelection)")
    except mosek_fusion_ValueConversionError as _64:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalRestrictSelection)")
   if (_1=="simPrimalSelection"):
    _65=mosek.fusion.Parameters.__string_1to_1simseltype_1value_S(_2)
    if (_65 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalSelection)")
    _0._task_1put_1param_SI("MSK_IPAR_SIM_PRIMAL_SELECTION",_65)
    return 
   if (_1=="simDualRestrictSelection"):
    try:
     _66=mosek.fusion.Utils.Tools._toInt_S(_2)
     if ((0 <= _66) and (_66 <= 100)):
      _0._task_1put_1param_SI("MSK_IPAR_SIM_DUAL_RESTRICT_SELECTION",_66)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualRestrictSelection)")
    except mosek_fusion_ValueConversionError as _67:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualRestrictSelection)")
   if (_1=="simDualSelection"):
    _68=mosek.fusion.Parameters.__string_1to_1simseltype_1value_S(_2)
    if (_68 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualSelection)")
    _0._task_1put_1param_SI("MSK_IPAR_SIM_DUAL_SELECTION",_68)
    return 
   if (_1=="simMaxIterations"):
    try:
     _69=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _69):
      _0._task_1put_1param_SI("MSK_IPAR_SIM_MAX_ITERATIONS",_69)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simMaxIterations)")
    except mosek_fusion_ValueConversionError as _70:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simMaxIterations)")
   if (_1=="simHotstartLu"):
    _71=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_71 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simHotstartLu)")
    _0._task_1put_1param_SI("MSK_IPAR_SIM_HOTSTART_LU",_71)
    return 
   if (_1=="simRefactorFreq"):
    try:
     _72=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _72):
      _0._task_1put_1param_SI("MSK_IPAR_SIM_REFACTOR_FREQ",_72)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simRefactorFreq)")
    except mosek_fusion_ValueConversionError as _73:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simRefactorFreq)")
   if (_1=="simSeed"):
    try:
     _74=mosek.fusion.Utils.Tools._toInt_S(_2)
     if ((0 <= _74) and (_74 <= 32749)):
      _0._task_1put_1param_SI("MSK_IPAR_SIM_SEED",_74)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simSeed)")
    except mosek_fusion_ValueConversionError as _75:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simSeed)")
   if (_1=="mioMode"):
    _76=mosek.fusion.Parameters.__string_1to_1miomode_1value_S(_2)
    if (_76 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMode)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_MODE",_76)
    return 
   if (_1=="logMio"):
    try:
     _77=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _77):
      _0._task_1put_1param_SI("MSK_IPAR_LOG_MIO",_77)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logMio)")
    except mosek_fusion_ValueConversionError as _78:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logMio)")
   if (_1=="logMioFreq"):
    try:
     _79=mosek.fusion.Utils.Tools._toInt_S(_2)
     if True:
      _0._task_1put_1param_SI("MSK_IPAR_LOG_MIO_FREQ",_79)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logMioFreq)")
    except mosek_fusion_ValueConversionError as _80:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logMioFreq)")
   if (_1=="mioMaxNumRelaxs"):
    try:
     _81=mosek.fusion.Utils.Tools._toInt_S(_2)
     if True:
      _0._task_1put_1param_SI("MSK_IPAR_MIO_MAX_NUM_RELAXS",_81)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumRelaxs)")
    except mosek_fusion_ValueConversionError as _82:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumRelaxs)")
   if (_1=="mioMaxNumBranches"):
    try:
     _83=mosek.fusion.Utils.Tools._toInt_S(_2)
     if True:
      _0._task_1put_1param_SI("MSK_IPAR_MIO_MAX_NUM_BRANCHES",_83)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumBranches)")
    except mosek_fusion_ValueConversionError as _84:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumBranches)")
   if (_1=="mioMaxNumRestarts"):
    try:
     _85=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _85):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_MAX_NUM_RESTARTS",_85)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumRestarts)")
    except mosek_fusion_ValueConversionError as _86:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumRestarts)")
   if (_1=="mioMaxNumRootCutRounds"):
    try:
     _87=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _87):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_MAX_NUM_ROOT_CUT_ROUNDS",_87)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumRootCutRounds)")
    except mosek_fusion_ValueConversionError as _88:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumRootCutRounds)")
   if (_1=="mioMaxNumSolutions"):
    try:
     _89=mosek.fusion.Utils.Tools._toInt_S(_2)
     if True:
      _0._task_1put_1param_SI("MSK_IPAR_MIO_MAX_NUM_SOLUTIONS",_89)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumSolutions)")
    except mosek_fusion_ValueConversionError as _90:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxNumSolutions)")
   if (_1=="mioNodeSelection"):
    _91=mosek.fusion.Parameters.__string_1to_1mionodeseltype_1value_S(_2)
    if (_91 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioNodeSelection)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_NODE_SELECTION",_91)
    return 
   if (_1=="mioVarSelection"):
    _92=mosek.fusion.Parameters.__string_1to_1miovarseltype_1value_S(_2)
    if (_92 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioVarSelection)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_VAR_SELECTION",_92)
    return 
   if (_1=="mioMinRel"):
    try:
     _93=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _93):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_MIN_REL",_93)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMinRel)")
    except mosek_fusion_ValueConversionError as _94:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMinRel)")
   if (_1=="mioHeuristicLevel"):
    try:
     _95=mosek.fusion.Utils.Tools._toInt_S(_2)
     if True:
      _0._task_1put_1param_SI("MSK_IPAR_MIO_HEURISTIC_LEVEL",_95)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioHeuristicLevel)")
    except mosek_fusion_ValueConversionError as _96:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioHeuristicLevel)")
   if (_1=="mioProbingLevel"):
    try:
     _97=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (((- 1) <= _97) and (_97 <= 3)):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_PROBING_LEVEL",_97)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioProbingLevel)")
    except mosek_fusion_ValueConversionError as _98:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioProbingLevel)")
   if (_1=="mioSymmetryLevel"):
    try:
     _99=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (((- 1) <= _99) and (_99 <= 4)):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_SYMMETRY_LEVEL",_99)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioSymmetryLevel)")
    except mosek_fusion_ValueConversionError as _100:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioSymmetryLevel)")
   if (_1=="mioDualRayAnalysisLevel"):
    try:
     _101=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (((- 1) <= _101) and (_101 <= 2)):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_DUAL_RAY_ANALYSIS_LEVEL",_101)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioDualRayAnalysisLevel)")
    except mosek_fusion_ValueConversionError as _102:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioDualRayAnalysisLevel)")
   if (_1=="mioConflictAnalysisLevel"):
    try:
     _103=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (((- 1) <= _103) and (_103 <= 2)):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_CONFLICT_ANALYSIS_LEVEL",_103)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioConflictAnalysisLevel)")
    except mosek_fusion_ValueConversionError as _104:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioConflictAnalysisLevel)")
   if (_1=="mioPresolveAggregatorUse"):
    _105=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_105 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioPresolveAggregatorUse)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_PRESOLVE_AGGREGATOR_USE",_105)
    return 
   if (_1=="mioNumericalEmphasisLevel"):
    try:
     _106=mosek.fusion.Utils.Tools._toInt_S(_2)
     if ((0 <= _106) and (_106 <= 2)):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_NUMERICAL_EMPHASIS_LEVEL",_106)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioNumericalEmphasisLevel)")
    except mosek_fusion_ValueConversionError as _107:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioNumericalEmphasisLevel)")
   if (_1=="mioMemoryEmphasisLevel"):
    try:
     _108=mosek.fusion.Utils.Tools._toInt_S(_2)
     if ((0 <= _108) and (_108 <= 1)):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_MEMORY_EMPHASIS_LEVEL",_108)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMemoryEmphasisLevel)")
    except mosek_fusion_ValueConversionError as _109:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMemoryEmphasisLevel)")
   if (_1=="mioCutSelectionLevel"):
    try:
     _110=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (((- 1) <= _110) and (_110 <= 1)):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_CUT_SELECTION_LEVEL",_110)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutSelectionLevel)")
    except mosek_fusion_ValueConversionError as _111:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutSelectionLevel)")
   if (_1=="mioVbDetectionLevel"):
    try:
     _112=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (((- 1) <= _112) and (_112 <= 2)):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_VB_DETECTION_LEVEL",_112)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioVbDetectionLevel)")
    except mosek_fusion_ValueConversionError as _113:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioVbDetectionLevel)")
   if (_1=="mioBranchDir"):
    _114=mosek.fusion.Parameters.__string_1to_1branchdir_1value_S(_2)
    if (_114 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioBranchDir)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_BRANCH_DIR",_114)
    return 
   if (_1=="mioRootOptimizer"):
    _115=mosek.fusion.Parameters.__string_1to_1optimizertype_1value_S(_2)
    if (_115 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioRootOptimizer)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_ROOT_OPTIMIZER",_115)
    return 
   if (_1=="mioNodeOptimizer"):
    _116=mosek.fusion.Parameters.__string_1to_1optimizertype_1value_S(_2)
    if (_116 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioNodeOptimizer)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_NODE_OPTIMIZER",_116)
    return 
   if (_1=="mioPerspectiveReformulate"):
    _117=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_117 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioPerspectiveReformulate)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_PERSPECTIVE_REFORMULATE",_117)
    return 
   if (_1=="mioPropagateObjectiveConstraint"):
    _118=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_118 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioPropagateObjectiveConstraint)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_PROPAGATE_OBJECTIVE_CONSTRAINT",_118)
    return 
   if (_1=="mioSeed"):
    try:
     _119=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _119):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_SEED",_119)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioSeed)")
    except mosek_fusion_ValueConversionError as _120:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioSeed)")
   if (_1=="mioConicOuterApproximation"):
    _121=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_121 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioConicOuterApproximation)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_CONIC_OUTER_APPROXIMATION",_121)
    return 
   if (_1=="mioQcqoReformulationMethod"):
    _122=mosek.fusion.Parameters.__string_1to_1miqcqoreformmethod_1value_S(_2)
    if (_122 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioQcqoReformulationMethod)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_QCQO_REFORMULATION_METHOD",_122)
    return 
   if (_1=="mioDataPermutationMethod"):
    _123=mosek.fusion.Parameters.__string_1to_1miodatapermmethod_1value_S(_2)
    if (_123 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioDataPermutationMethod)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_DATA_PERMUTATION_METHOD",_123)
    return 
   if (_1=="writeMpsFormat"):
    _124=mosek.fusion.Parameters.__string_1to_1mpsformat_1value_S(_2)
    if (_124 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (writeMpsFormat)")
    _0._task_1put_1param_SI("MSK_IPAR_WRITE_MPS_FORMAT",_124)
    return 
   if (_1=="writeLpLineWidth"):
    try:
     _125=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (40 <= _125):
      _0._task_1put_1param_SI("MSK_IPAR_WRITE_LP_LINE_WIDTH",_125)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (writeLpLineWidth)")
    except mosek_fusion_ValueConversionError as _126:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (writeLpLineWidth)")
   if (_1=="writeLpFullObj"):
    _127=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_127 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (writeLpFullObj)")
    _0._task_1put_1param_SI("MSK_IPAR_WRITE_LP_FULL_OBJ",_127)
    return 
   if (_1=="writeJsonIndentation"):
    _128=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_128 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (writeJsonIndentation)")
    _0._task_1put_1param_SI("MSK_IPAR_WRITE_JSON_INDENTATION",_128)
    return 
   if (_1=="infeasReportAuto"):
    _129=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_129 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (infeasReportAuto)")
    _0._task_1put_1param_SI("MSK_IPAR_INFEAS_REPORT_AUTO",_129)
    return 
   if (_1=="licenseWait"):
    _130=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_130 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licenseWait)")
    _0._task_1put_1param_SI("MSK_IPAR_LICENSE_WAIT",_130)
    return 
   if (_1=="licenseSuppressExpireWrns"):
    _131=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_131 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licenseSuppressExpireWrns)")
    _0._task_1put_1param_SI("MSK_IPAR_LICENSE_SUPPRESS_EXPIRE_WRNS",_131)
    return 
   if (_1=="licensePauseTime"):
    try:
     _132=mosek.fusion.Utils.Tools._toInt_S(_2)
     if ((0 <= _132) and (_132 <= 1000000)):
      _0._task_1put_1param_SI("MSK_IPAR_LICENSE_PAUSE_TIME",_132)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licensePauseTime)")
    except mosek_fusion_ValueConversionError as _133:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licensePauseTime)")
   if (_1=="licenseDebug"):
    _134=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_134 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (licenseDebug)")
    _0._task_1put_1param_SI("MSK_IPAR_LICENSE_DEBUG",_134)
    return 
   if (_1=="log"):
    try:
     _135=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _135):
      _0._task_1put_1param_SI("MSK_IPAR_LOG",_135)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (log)")
    except mosek_fusion_ValueConversionError as _136:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (log)")
   if (_1=="logExpand"):
    try:
     _137=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _137):
      _0._task_1put_1param_SI("MSK_IPAR_LOG_EXPAND",_137)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logExpand)")
    except mosek_fusion_ValueConversionError as _138:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logExpand)")
   if (_1=="logFile"):
    try:
     _139=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _139):
      _0._task_1put_1param_SI("MSK_IPAR_LOG_FILE",_139)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logFile)")
    except mosek_fusion_ValueConversionError as _140:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logFile)")
   if (_1=="logOrder"):
    try:
     _141=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _141):
      _0._task_1put_1param_SI("MSK_IPAR_LOG_ORDER",_141)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logOrder)")
    except mosek_fusion_ValueConversionError as _142:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (logOrder)")
   if (_1=="simScaling"):
    _143=mosek.fusion.Parameters.__string_1to_1scalingtype_1value_S(_2)
    if (_143 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simScaling)")
    _0._task_1put_1param_SI("MSK_IPAR_SIM_SCALING",_143)
    return 
   if (_1=="simScalingMethod"):
    _144=mosek.fusion.Parameters.__string_1to_1scalingmethod_1value_S(_2)
    if (_144 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simScalingMethod)")
    _0._task_1put_1param_SI("MSK_IPAR_SIM_SCALING_METHOD",_144)
    return 
   if (_1=="simPrimalPhaseoneMethod"):
    try:
     _145=mosek.fusion.Utils.Tools._toInt_S(_2)
     if ((0 <= _145) and (_145 <= 10)):
      _0._task_1put_1param_SI("MSK_IPAR_SIM_PRIMAL_PHASEONE_METHOD",_145)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalPhaseoneMethod)")
    except mosek_fusion_ValueConversionError as _146:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrimalPhaseoneMethod)")
   if (_1=="simDualPhaseoneMethod"):
    try:
     _147=mosek.fusion.Utils.Tools._toInt_S(_2)
     if ((0 <= _147) and (_147 <= 10)):
      _0._task_1put_1param_SI("MSK_IPAR_SIM_DUAL_PHASEONE_METHOD",_147)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualPhaseoneMethod)")
    except mosek_fusion_ValueConversionError as _148:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualPhaseoneMethod)")
   if (_1=="simMaxNumSetbacks"):
    try:
     _149=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _149):
      _0._task_1put_1param_SI("MSK_IPAR_SIM_MAX_NUM_SETBACKS",_149)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simMaxNumSetbacks)")
    except mosek_fusion_ValueConversionError as _150:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simMaxNumSetbacks)")
   if (_1=="simHotstart"):
    _151=mosek.fusion.Parameters.__string_1to_1simhotstart_1value_S(_2)
    if (_151 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simHotstart)")
    _0._task_1put_1param_SI("MSK_IPAR_SIM_HOTSTART",_151)
    return 
   if (_1=="simBasisFactorUse"):
    _152=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_152 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simBasisFactorUse)")
    _0._task_1put_1param_SI("MSK_IPAR_SIM_BASIS_FACTOR_USE",_152)
    return 
   if (_1=="simPrecisionBoost"):
    _153=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_153 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrecisionBoost)")
    _0._task_1put_1param_SI("MSK_IPAR_SIM_PRECISION_BOOST",_153)
    return 
   if (_1=="simDegen"):
    _154=mosek.fusion.Parameters.__string_1to_1simdegen_1value_S(_2)
    if (_154 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDegen)")
    _0._task_1put_1param_SI("MSK_IPAR_SIM_DEGEN",_154)
    return 
   if (_1=="simReformulation"):
    _155=mosek.fusion.Parameters.__string_1to_1simreform_1value_S(_2)
    if (_155 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simReformulation)")
    _0._task_1put_1param_SI("MSK_IPAR_SIM_REFORMULATION",_155)
    return 
   if (_1=="simExploitDupvec"):
    _156=mosek.fusion.Parameters.__string_1to_1simdupvec_1value_S(_2)
    if (_156 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simExploitDupvec)")
    _0._task_1put_1param_SI("MSK_IPAR_SIM_EXPLOIT_DUPVEC",_156)
    return 
   if (_1=="simSaveLu"):
    _157=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_157 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simSaveLu)")
    _0._task_1put_1param_SI("MSK_IPAR_SIM_SAVE_LU",_157)
    return 
   if (_1=="simNonSingular"):
    _158=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_158 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simNonSingular)")
    _0._task_1put_1param_SI("MSK_IPAR_SIM_NON_SINGULAR",_158)
    return 
   if (_1=="simDualCrash"):
    try:
     _159=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (0 <= _159):
      _0._task_1put_1param_SI("MSK_IPAR_SIM_DUAL_CRASH",_159)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualCrash)")
    except mosek_fusion_ValueConversionError as _160:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simDualCrash)")
   if (_1=="ptfWriteTransform"):
    _161=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_161 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (ptfWriteTransform)")
    _0._task_1put_1param_SI("MSK_IPAR_PTF_WRITE_TRANSFORM",_161)
    return 
   if (_1=="ptfWriteSolutions"):
    _162=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_162 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (ptfWriteSolutions)")
    _0._task_1put_1param_SI("MSK_IPAR_PTF_WRITE_SOLUTIONS",_162)
    return 
   if (_1=="ptfWriteParameters"):
    _163=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_163 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (ptfWriteParameters)")
    _0._task_1put_1param_SI("MSK_IPAR_PTF_WRITE_PARAMETERS",_163)
    return 
   if (_1=="ptfWriteSinglePsdTerms"):
    _164=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_164 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (ptfWriteSinglePsdTerms)")
    _0._task_1put_1param_SI("MSK_IPAR_PTF_WRITE_SINGLE_PSD_TERMS",_164)
    return 
   if (_1=="mioCutCmir"):
    _165=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_165 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutCmir)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_CUT_CMIR",_165)
    return 
   if (_1=="mioCutClique"):
    _166=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_166 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutClique)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_CUT_CLIQUE",_166)
    return 
   if (_1=="mioCutImpliedBound"):
    _167=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_167 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutImpliedBound)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_CUT_IMPLIED_BOUND",_167)
    return 
   if (_1=="mioCutKnapsackCover"):
    _168=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_168 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutKnapsackCover)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_CUT_KNAPSACK_COVER",_168)
    return 
   if (_1=="mioCutGmi"):
    _169=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_169 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutGmi)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_CUT_GMI",_169)
    return 
   if (_1=="mioCutLipro"):
    _170=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_170 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCutLipro)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_CUT_LIPRO",_170)
    return 
   if (_1=="mioConstructSol"):
    _171=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_171 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioConstructSol)")
    _0._task_1put_1param_SI("MSK_IPAR_MIO_CONSTRUCT_SOL",_171)
    return 
   if (_1=="presolveLindepRelWorkTrh"):
    try:
     _172=mosek.fusion.Utils.Tools._toInt_S(_2)
     if True:
      _0._task_1put_1param_SI("MSK_IPAR_PRESOLVE_LINDEP_REL_WORK_TRH",_172)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveLindepRelWorkTrh)")
    except mosek_fusion_ValueConversionError as _173:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveLindepRelWorkTrh)")
   if (_1=="presolveLindepAbsWorkTrh"):
    try:
     _174=mosek.fusion.Utils.Tools._toInt_S(_2)
     if True:
      _0._task_1put_1param_SI("MSK_IPAR_PRESOLVE_LINDEP_ABS_WORK_TRH",_174)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveLindepAbsWorkTrh)")
    except mosek_fusion_ValueConversionError as _175:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveLindepAbsWorkTrh)")
   if (_1=="cacheLicense"):
    _176=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_176 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (cacheLicense)")
    _0._task_1put_1param_SI("MSK_IPAR_CACHE_LICENSE",_176)
    return 
   if (_1=="intpntRegularizationUse"):
    _177=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_177 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntRegularizationUse)")
    _0._task_1put_1param_SI("MSK_IPAR_INTPNT_REGULARIZATION_USE",_177)
    return 
   if (_1=="simSolveForm"):
    _178=mosek.fusion.Parameters.__string_1to_1solveform_1value_S(_2)
    if (_178 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simSolveForm)")
    _0._task_1put_1param_SI("MSK_IPAR_SIM_SOLVE_FORM",_178)
    return 
   if (_1=="simSwitchOptimizer"):
    _179=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_179 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simSwitchOptimizer)")
    _0._task_1put_1param_SI("MSK_IPAR_SIM_SWITCH_OPTIMIZER",_179)
    return 
   if (_1=="autoSortABeforeOpt"):
    _180=mosek.fusion.Parameters.__string_1to_1onoffkey_1value_S(_2)
    if (_180 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (autoSortABeforeOpt)")
    _0._task_1put_1param_SI("MSK_IPAR_AUTO_SORT_A_BEFORE_OPT",_180)
    return 
   if (_1=="mioRinsMaxNodes"):
    try:
     _181=mosek.fusion.Utils.Tools._toInt_S(_2)
     if ((- 1) <= _181):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_RINS_MAX_NODES",_181)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioRinsMaxNodes)")
    except mosek_fusion_ValueConversionError as _182:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioRinsMaxNodes)")
   if (_1=="mioRensMaxNodes"):
    try:
     _183=mosek.fusion.Utils.Tools._toInt_S(_2)
     if ((- 1) <= _183):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_RENS_MAX_NODES",_183)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioRensMaxNodes)")
    except mosek_fusion_ValueConversionError as _184:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioRensMaxNodes)")
   if (_1=="mioCrossoverMaxNodes"):
    try:
     _185=mosek.fusion.Utils.Tools._toInt_S(_2)
     if ((- 1) <= _185):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_CROSSOVER_MAX_NODES",_185)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCrossoverMaxNodes)")
    except mosek_fusion_ValueConversionError as _186:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCrossoverMaxNodes)")
   if (_1=="mioOptFaceMaxNodes"):
    try:
     _187=mosek.fusion.Utils.Tools._toInt_S(_2)
     if ((- 1) <= _187):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_OPT_FACE_MAX_NODES",_187)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioOptFaceMaxNodes)")
    except mosek_fusion_ValueConversionError as _188:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioOptFaceMaxNodes)")
   if (_1=="mioFeaspumpLevel"):
    try:
     _189=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (((- 1) <= _189) and (_189 <= 2)):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_FEASPUMP_LEVEL",_189)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioFeaspumpLevel)")
    except mosek_fusion_ValueConversionError as _190:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioFeaspumpLevel)")
   if (_1=="mioIndependentBlockLevel"):
    try:
     _191=mosek.fusion.Utils.Tools._toInt_S(_2)
     if (((- 1) <= _191) and (_191 <= 3)):
      _0._task_1put_1param_SI("MSK_IPAR_MIO_INDEPENDENT_BLOCK_LEVEL",_191)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioIndependentBlockLevel)")
    except mosek_fusion_ValueConversionError as _192:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioIndependentBlockLevel)")
   if (_1=="remoteUseCompression"):
    _193=mosek.fusion.Parameters.__string_1to_1compresstype_1value_S(_2)
    if (_193 < 0):
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (remoteUseCompression)")
    _0._task_1put_1param_SI("MSK_IPAR_REMOTE_USE_COMPRESSION",_193)
    return 
   if (_1=="semidefiniteTolApprox"):
    try:
     _194=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (1.000000e-15 <= _194):
      _0._task_1put_1param_SD("MSK_DPAR_SEMIDEFINITE_TOL_APPROX",_194)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (semidefiniteTolApprox)")
    except mosek_fusion_ValueConversionError as _195:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (semidefiniteTolApprox)")
   if (_1=="optimizerMaxTime"):
    try:
     _196=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if True:
      _0._task_1put_1param_SD("MSK_DPAR_OPTIMIZER_MAX_TIME",_196)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (optimizerMaxTime)")
    except mosek_fusion_ValueConversionError as _197:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (optimizerMaxTime)")
   if (_1=="optimizerMaxTicks"):
    try:
     _198=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if True:
      _0._task_1put_1param_SD("MSK_DPAR_OPTIMIZER_MAX_TICKS",_198)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (optimizerMaxTicks)")
    except mosek_fusion_ValueConversionError as _199:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (optimizerMaxTicks)")
   if (_1=="lowerObjCut"):
    try:
     _200=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if True:
      _0._task_1put_1param_SD("MSK_DPAR_LOWER_OBJ_CUT",_200)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (lowerObjCut)")
    except mosek_fusion_ValueConversionError as _201:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (lowerObjCut)")
   if (_1=="upperObjCut"):
    try:
     _202=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if True:
      _0._task_1put_1param_SD("MSK_DPAR_UPPER_OBJ_CUT",_202)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (upperObjCut)")
    except mosek_fusion_ValueConversionError as _203:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (upperObjCut)")
   if (_1=="upperObjCutFiniteTrh"):
    try:
     _204=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if True:
      _0._task_1put_1param_SD("MSK_DPAR_UPPER_OBJ_CUT_FINITE_TRH",_204)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (upperObjCutFiniteTrh)")
    except mosek_fusion_ValueConversionError as _205:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (upperObjCutFiniteTrh)")
   if (_1=="lowerObjCutFiniteTrh"):
    try:
     _206=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if True:
      _0._task_1put_1param_SD("MSK_DPAR_LOWER_OBJ_CUT_FINITE_TRH",_206)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (lowerObjCutFiniteTrh)")
    except mosek_fusion_ValueConversionError as _207:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (lowerObjCutFiniteTrh)")
   if (_1=="intpntTolRelGap"):
    try:
     _208=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (1.000000e-14 <= _208):
      _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_REL_GAP",_208)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolRelGap)")
    except mosek_fusion_ValueConversionError as _209:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolRelGap)")
   if (_1=="intpntTolStepSize"):
    try:
     _210=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if ((0.000000e+00 <= _210) and (_210 <= 1.000000e+00)):
      _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_STEP_SIZE",_210)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolStepSize)")
    except mosek_fusion_ValueConversionError as _211:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolStepSize)")
   if (_1=="simLuTolRelPiv"):
    try:
     _212=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if ((1.000000e-06 <= _212) and (_212 <= 9.999990e-01)):
      _0._task_1put_1param_SD("MSK_DPAR_SIM_LU_TOL_REL_PIV",_212)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simLuTolRelPiv)")
    except mosek_fusion_ValueConversionError as _213:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simLuTolRelPiv)")
   if (_1=="intpntTolRelStep"):
    try:
     _214=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if ((1.000000e-04 <= _214) and (_214 <= 9.999990e-01)):
      _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_REL_STEP",_214)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolRelStep)")
    except mosek_fusion_ValueConversionError as _215:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolRelStep)")
   if (_1=="intpntTolPath"):
    try:
     _216=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if ((0.000000e+00 <= _216) and (_216 <= 9.999000e-01)):
      _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_PATH",_216)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolPath)")
    except mosek_fusion_ValueConversionError as _217:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolPath)")
   if (_1=="intpntTolPfeas"):
    try:
     _218=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if ((0.000000e+00 <= _218) and (_218 <= 1.000000e+00)):
      _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_PFEAS",_218)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolPfeas)")
    except mosek_fusion_ValueConversionError as _219:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolPfeas)")
   if (_1=="intpntTolDfeas"):
    try:
     _220=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if ((0.000000e+00 <= _220) and (_220 <= 1.000000e+00)):
      _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_DFEAS",_220)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolDfeas)")
    except mosek_fusion_ValueConversionError as _221:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolDfeas)")
   if (_1=="intpntTolMuRed"):
    try:
     _222=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if ((0.000000e+00 <= _222) and (_222 <= 1.000000e+00)):
      _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_MU_RED",_222)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolMuRed)")
    except mosek_fusion_ValueConversionError as _223:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolMuRed)")
   if (_1=="intpntTolInfeas"):
    try:
     _224=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if ((0.000000e+00 <= _224) and (_224 <= 1.000000e+00)):
      _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_INFEAS",_224)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolInfeas)")
    except mosek_fusion_ValueConversionError as _225:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolInfeas)")
   if (_1=="intpntCoTolRelGap"):
    try:
     _226=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if ((0.000000e+00 <= _226) and (_226 <= 1.000000e+00)):
      _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_REL_GAP",_226)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolRelGap)")
    except mosek_fusion_ValueConversionError as _227:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolRelGap)")
   if (_1=="intpntCoTolPfeas"):
    try:
     _228=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if ((0.000000e+00 <= _228) and (_228 <= 1.000000e+00)):
      _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_PFEAS",_228)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolPfeas)")
    except mosek_fusion_ValueConversionError as _229:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolPfeas)")
   if (_1=="intpntCoTolDfeas"):
    try:
     _230=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if ((0.000000e+00 <= _230) and (_230 <= 1.000000e+00)):
      _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_DFEAS",_230)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolDfeas)")
    except mosek_fusion_ValueConversionError as _231:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolDfeas)")
   if (_1=="intpntCoTolMuRed"):
    try:
     _232=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if ((0.000000e+00 <= _232) and (_232 <= 1.000000e+00)):
      _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_MU_RED",_232)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolMuRed)")
    except mosek_fusion_ValueConversionError as _233:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolMuRed)")
   if (_1=="intpntCoTolNearRel"):
    try:
     _234=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (1.000000e+00 <= _234):
      _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_NEAR_REL",_234)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolNearRel)")
    except mosek_fusion_ValueConversionError as _235:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolNearRel)")
   if (_1=="intpntCoTolInfeas"):
    try:
     _236=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if ((0.000000e+00 <= _236) and (_236 <= 1.000000e+00)):
      _0._task_1put_1param_SD("MSK_DPAR_INTPNT_CO_TOL_INFEAS",_236)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolInfeas)")
    except mosek_fusion_ValueConversionError as _237:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntCoTolInfeas)")
   if (_1=="intpntTolPsafe"):
    try:
     _238=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (1.000000e-04 <= _238):
      _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_PSAFE",_238)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolPsafe)")
    except mosek_fusion_ValueConversionError as _239:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolPsafe)")
   if (_1=="intpntTolDsafe"):
    try:
     _240=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (1.000000e-04 <= _240):
      _0._task_1put_1param_SD("MSK_DPAR_INTPNT_TOL_DSAFE",_240)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolDsafe)")
    except mosek_fusion_ValueConversionError as _241:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (intpntTolDsafe)")
   if (_1=="mioMaxTime"):
    try:
     _242=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if True:
      _0._task_1put_1param_SD("MSK_DPAR_MIO_MAX_TIME",_242)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxTime)")
    except mosek_fusion_ValueConversionError as _243:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioMaxTime)")
   if (_1=="mioRelGapConst"):
    try:
     _244=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (1.000000e-15 <= _244):
      _0._task_1put_1param_SD("MSK_DPAR_MIO_REL_GAP_CONST",_244)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioRelGapConst)")
    except mosek_fusion_ValueConversionError as _245:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioRelGapConst)")
   if (_1=="mioTolRelGap"):
    try:
     _246=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (0.000000e+00 <= _246):
      _0._task_1put_1param_SD("MSK_DPAR_MIO_TOL_REL_GAP",_246)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolRelGap)")
    except mosek_fusion_ValueConversionError as _247:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolRelGap)")
   if (_1=="mioTolAbsGap"):
    try:
     _248=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (0.000000e+00 <= _248):
      _0._task_1put_1param_SD("MSK_DPAR_MIO_TOL_ABS_GAP",_248)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolAbsGap)")
    except mosek_fusion_ValueConversionError as _249:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolAbsGap)")
   if (_1=="mioTolAbsRelaxInt"):
    try:
     _250=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (1.000000e-09 <= _250):
      _0._task_1put_1param_SD("MSK_DPAR_MIO_TOL_ABS_RELAX_INT",_250)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolAbsRelaxInt)")
    except mosek_fusion_ValueConversionError as _251:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolAbsRelaxInt)")
   if (_1=="mioDjcMaxBigm"):
    try:
     _252=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (0.000000e+00 <= _252):
      _0._task_1put_1param_SD("MSK_DPAR_MIO_DJC_MAX_BIGM",_252)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioDjcMaxBigm)")
    except mosek_fusion_ValueConversionError as _253:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioDjcMaxBigm)")
   if (_1=="mioCliqueTableSizeFactor"):
    try:
     _254=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if ((- 1.000000e+00) <= _254):
      _0._task_1put_1param_SD("MSK_DPAR_MIO_CLIQUE_TABLE_SIZE_FACTOR",_254)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCliqueTableSizeFactor)")
    except mosek_fusion_ValueConversionError as _255:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioCliqueTableSizeFactor)")
   if (_1=="simPrecisionScalingNormal"):
    try:
     _256=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (1.000000e+00 <= _256):
      _0._task_1put_1param_SD("MSK_DPAR_SIM_PRECISION_SCALING_NORMAL",_256)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrecisionScalingNormal)")
    except mosek_fusion_ValueConversionError as _257:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrecisionScalingNormal)")
   if (_1=="simPrecisionScalingExtended"):
    try:
     _258=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (1.000000e+00 <= _258):
      _0._task_1put_1param_SD("MSK_DPAR_SIM_PRECISION_SCALING_EXTENDED",_258)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrecisionScalingExtended)")
    except mosek_fusion_ValueConversionError as _259:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simPrecisionScalingExtended)")
   if (_1=="basisTolX"):
    try:
     _260=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (1.000000e-09 <= _260):
      _0._task_1put_1param_SD("MSK_DPAR_BASIS_TOL_X",_260)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (basisTolX)")
    except mosek_fusion_ValueConversionError as _261:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (basisTolX)")
   if (_1=="basisTolS"):
    try:
     _262=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (1.000000e-09 <= _262):
      _0._task_1put_1param_SD("MSK_DPAR_BASIS_TOL_S",_262)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (basisTolS)")
    except mosek_fusion_ValueConversionError as _263:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (basisTolS)")
   if (_1=="basisRelTolS"):
    try:
     _264=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (0.000000e+00 <= _264):
      _0._task_1put_1param_SD("MSK_DPAR_BASIS_REL_TOL_S",_264)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (basisRelTolS)")
    except mosek_fusion_ValueConversionError as _265:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (basisRelTolS)")
   if (_1=="presolveTolX"):
    try:
     _266=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (0.000000e+00 <= _266):
      _0._task_1put_1param_SD("MSK_DPAR_PRESOLVE_TOL_X",_266)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolX)")
    except mosek_fusion_ValueConversionError as _267:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolX)")
   if (_1=="presolveTolPrimalInfeasPerturbation"):
    try:
     _268=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (0.000000e+00 <= _268):
      _0._task_1put_1param_SD("MSK_DPAR_PRESOLVE_TOL_PRIMAL_INFEAS_PERTURBATION",_268)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolPrimalInfeasPerturbation)")
    except mosek_fusion_ValueConversionError as _269:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolPrimalInfeasPerturbation)")
   if (_1=="presolveTolS"):
    try:
     _270=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (0.000000e+00 <= _270):
      _0._task_1put_1param_SD("MSK_DPAR_PRESOLVE_TOL_S",_270)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolS)")
    except mosek_fusion_ValueConversionError as _271:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolS)")
   if (_1=="presolveTolAbsLindep"):
    try:
     _272=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (0.000000e+00 <= _272):
      _0._task_1put_1param_SD("MSK_DPAR_PRESOLVE_TOL_ABS_LINDEP",_272)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolAbsLindep)")
    except mosek_fusion_ValueConversionError as _273:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolAbsLindep)")
   if (_1=="presolveTolRelLindep"):
    try:
     _274=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (0.000000e+00 <= _274):
      _0._task_1put_1param_SD("MSK_DPAR_PRESOLVE_TOL_REL_LINDEP",_274)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolRelLindep)")
    except mosek_fusion_ValueConversionError as _275:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (presolveTolRelLindep)")
   if (_1=="foldingTolEq"):
    try:
     _276=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (0.000000e+00 <= _276):
      _0._task_1put_1param_SD("MSK_DPAR_FOLDING_TOL_EQ",_276)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (foldingTolEq)")
    except mosek_fusion_ValueConversionError as _277:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (foldingTolEq)")
   if (_1=="simplexAbsTolPiv"):
    try:
     _278=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if (1.000000e-12 <= _278):
      _0._task_1put_1param_SD("MSK_DPAR_SIMPLEX_ABS_TOL_PIV",_278)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simplexAbsTolPiv)")
    except mosek_fusion_ValueConversionError as _279:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (simplexAbsTolPiv)")
   if (_1=="mioTolFeas"):
    try:
     _280=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if ((1.000000e-09 <= _280) and (_280 <= 1.000000e-03)):
      _0._task_1put_1param_SD("MSK_DPAR_MIO_TOL_FEAS",_280)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolFeas)")
    except mosek_fusion_ValueConversionError as _281:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolFeas)")
   if (_1=="mioTolRelDualBoundImprovement"):
    try:
     _282=mosek.fusion.Utils.Tools._toDouble_S(_2)
     if ((0.000000e+00 <= _282) and (_282 <= 1.000000e+00)):
      _0._task_1put_1param_SD("MSK_DPAR_MIO_TOL_REL_DUAL_BOUND_IMPROVEMENT",_282)
      return 
     else:
      raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolRelDualBoundImprovement)")
    except mosek_fusion_ValueConversionError as _283:
     raise mosek_fusion_ParameterError._ctor_S("Invalid value for parameter (mioTolRelDualBoundImprovement)")
   if (_1=="dataFileName"):
    _0._task_1put_1param_SS("MSK_SPAR_DATA_FILE_NAME",_2)
    return 
   if (_1=="remoteOptserverHost"):
    _0._task_1put_1param_SS("MSK_SPAR_REMOTE_OPTSERVER_HOST",_2)
    return 
   if (_1=="remoteTlsCertPath"):
    _0._task_1put_1param_SS("MSK_SPAR_REMOTE_TLS_CERT_PATH",_2)
    return 
   if (_1=="remoteTlsCert"):
    _0._task_1put_1param_SS("MSK_SPAR_REMOTE_TLS_CERT",_2)
    return 
   raise mosek_fusion_ParameterError._ctor_S("Unknown parameter")
  @staticmethod
  def __string_1to_1variabletype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1variabletype_1value_S(_0)
  @staticmethod
  def __string_1to_1variabletype_1value_S(_0):
   if (_0=="typeCont"):
    return numpy.int32(0)
   if (_0=="typeInt"):
    return numpy.int32(1)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1value_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1value_1value_S(_0)
  @staticmethod
  def __string_1to_1value_1value_S(_0):
   if (_0=="maxStrLen"):
    return numpy.int32(1024)
   if (_0=="licenseBufferLength"):
    return numpy.int32(21)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1streamtype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1streamtype_1value_S(_0)
  @staticmethod
  def __string_1to_1streamtype_1value_S(_0):
   if (_0=="log"):
    return numpy.int32(0)
   if (_0=="msg"):
    return numpy.int32(1)
   if (_0=="err"):
    return numpy.int32(2)
   if (_0=="wrn"):
    return numpy.int32(3)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1startpointtype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1startpointtype_1value_S(_0)
  @staticmethod
  def __string_1to_1startpointtype_1value_S(_0):
   if (_0=="free"):
    return numpy.int32(0)
   if (_0=="guess"):
    return numpy.int32(1)
   if (_0=="constant"):
    return numpy.int32(2)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1stakey_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1stakey_1value_S(_0)
  @staticmethod
  def __string_1to_1stakey_1value_S(_0):
   if (_0=="unk"):
    return numpy.int32(0)
   if (_0=="bas"):
    return numpy.int32(1)
   if (_0=="supbas"):
    return numpy.int32(2)
   if (_0=="low"):
    return numpy.int32(3)
   if (_0=="upr"):
    return numpy.int32(4)
   if (_0=="fix"):
    return numpy.int32(5)
   if (_0=="inf"):
    return numpy.int32(6)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1sparam_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1sparam_1value_S(_0)
  @staticmethod
  def __string_1to_1sparam_1value_S(_0):
   if (_0=="dataFileName"):
    return numpy.int32(1)
   if (_0=="paramReadFileName"):
    return numpy.int32(7)
   if (_0=="paramWriteFileName"):
    return numpy.int32(8)
   if (_0=="paramCommentSign"):
    return numpy.int32(6)
   if (_0=="debugFileName"):
    return numpy.int32(2)
   if (_0=="basSolFileName"):
    return numpy.int32(0)
   if (_0=="itrSolFileName"):
    return numpy.int32(4)
   if (_0=="intSolFileName"):
    return numpy.int32(3)
   if (_0=="solFilterXcLow"):
    return numpy.int32(18)
   if (_0=="solFilterXcUpr"):
    return numpy.int32(19)
   if (_0=="solFilterXxLow"):
    return numpy.int32(20)
   if (_0=="solFilterXxUpr"):
    return numpy.int32(21)
   if (_0=="readMpsObjName"):
    return numpy.int32(10)
   if (_0=="readMpsRanName"):
    return numpy.int32(11)
   if (_0=="readMpsRhsName"):
    return numpy.int32(12)
   if (_0=="readMpsBouName"):
    return numpy.int32(9)
   if (_0=="statName"):
    return numpy.int32(23)
   if (_0=="statKey"):
    return numpy.int32(22)
   if (_0=="sensitivityResFileName"):
    return numpy.int32(17)
   if (_0=="sensitivityFileName"):
    return numpy.int32(16)
   if (_0=="mioDebugString"):
    return numpy.int32(5)
   if (_0=="remoteOptserverHost"):
    return numpy.int32(13)
   if (_0=="remoteTlsCertPath"):
    return numpy.int32(15)
   if (_0=="remoteTlsCert"):
    return numpy.int32(14)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1solveform_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1solveform_1value_S(_0)
  @staticmethod
  def __string_1to_1solveform_1value_S(_0):
   if (_0=="free"):
    return numpy.int32(0)
   if (_0=="primal"):
    return numpy.int32(1)
   if (_0=="dual"):
    return numpy.int32(2)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1soltype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1soltype_1value_S(_0)
  @staticmethod
  def __string_1to_1soltype_1value_S(_0):
   if (_0=="bas"):
    return numpy.int32(1)
   if (_0=="itr"):
    return numpy.int32(0)
   if (_0=="itg"):
    return numpy.int32(2)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1solsta_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1solsta_1value_S(_0)
  @staticmethod
  def __string_1to_1solsta_1value_S(_0):
   if (_0=="unknown"):
    return numpy.int32(0)
   if (_0=="optimal"):
    return numpy.int32(1)
   if (_0=="primFeas"):
    return numpy.int32(2)
   if (_0=="dualFeas"):
    return numpy.int32(3)
   if (_0=="primAndDualFeas"):
    return numpy.int32(4)
   if (_0=="primInfeasCer"):
    return numpy.int32(5)
   if (_0=="dualInfeasCer"):
    return numpy.int32(6)
   if (_0=="primIllposedCer"):
    return numpy.int32(7)
   if (_0=="dualIllposedCer"):
    return numpy.int32(8)
   if (_0=="integerOptimal"):
    return numpy.int32(9)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1solitem_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1solitem_1value_S(_0)
  @staticmethod
  def __string_1to_1solitem_1value_S(_0):
   if (_0=="xc"):
    return numpy.int32(0)
   if (_0=="xx"):
    return numpy.int32(1)
   if (_0=="y"):
    return numpy.int32(2)
   if (_0=="slc"):
    return numpy.int32(3)
   if (_0=="suc"):
    return numpy.int32(4)
   if (_0=="slx"):
    return numpy.int32(5)
   if (_0=="sux"):
    return numpy.int32(6)
   if (_0=="snx"):
    return numpy.int32(7)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1simseltype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1simseltype_1value_S(_0)
  @staticmethod
  def __string_1to_1simseltype_1value_S(_0):
   if (_0=="free"):
    return numpy.int32(0)
   if (_0=="full"):
    return numpy.int32(1)
   if (_0=="ase"):
    return numpy.int32(2)
   if (_0=="devex"):
    return numpy.int32(3)
   if (_0=="se"):
    return numpy.int32(4)
   if (_0=="partial"):
    return numpy.int32(5)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1sensitivitytype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1sensitivitytype_1value_S(_0)
  @staticmethod
  def __string_1to_1sensitivitytype_1value_S(_0):
   if (_0=="basis"):
    return numpy.int32(0)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1scalingmethod_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1scalingmethod_1value_S(_0)
  @staticmethod
  def __string_1to_1scalingmethod_1value_S(_0):
   if (_0=="pow2"):
    return numpy.int32(0)
   if (_0=="free"):
    return numpy.int32(1)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1scalingtype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1scalingtype_1value_S(_0)
  @staticmethod
  def __string_1to_1scalingtype_1value_S(_0):
   if (_0=="free"):
    return numpy.int32(0)
   if (_0=="none"):
    return numpy.int32(1)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1rescodetype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1rescodetype_1value_S(_0)
  @staticmethod
  def __string_1to_1rescodetype_1value_S(_0):
   if (_0=="ok"):
    return numpy.int32(0)
   if (_0=="wrn"):
    return numpy.int32(1)
   if (_0=="trm"):
    return numpy.int32(2)
   if (_0=="err"):
    return numpy.int32(3)
   if (_0=="unk"):
    return numpy.int32(4)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1rescode_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1rescode_1value_S(_0)
  @staticmethod
  def __string_1to_1rescode_1value_S(_0):
   if (_0=="ok"):
    return numpy.int32(0)
   if (_0=="wrnOpenParamFile"):
    return numpy.int32(50)
   if (_0=="wrnLargeBound"):
    return numpy.int32(51)
   if (_0=="wrnLargeLoBound"):
    return numpy.int32(52)
   if (_0=="wrnLargeUpBound"):
    return numpy.int32(53)
   if (_0=="wrnLargeConFx"):
    return numpy.int32(54)
   if (_0=="wrnLargeCj"):
    return numpy.int32(57)
   if (_0=="wrnLargeAij"):
    return numpy.int32(62)
   if (_0=="wrnZeroAij"):
    return numpy.int32(63)
   if (_0=="wrnNameMaxLen"):
    return numpy.int32(65)
   if (_0=="wrnSparMaxLen"):
    return numpy.int32(66)
   if (_0=="wrnMpsSplitRhsVector"):
    return numpy.int32(70)
   if (_0=="wrnMpsSplitRanVector"):
    return numpy.int32(71)
   if (_0=="wrnMpsSplitBouVector"):
    return numpy.int32(72)
   if (_0=="wrnLpOldQuadFormat"):
    return numpy.int32(80)
   if (_0=="wrnLpDropVariable"):
    return numpy.int32(85)
   if (_0=="wrnNzInUprTri"):
    return numpy.int32(200)
   if (_0=="wrnDroppedNzQobj"):
    return numpy.int32(201)
   if (_0=="wrnIgnoreInteger"):
    return numpy.int32(250)
   if (_0=="wrnNoGlobalOptimizer"):
    return numpy.int32(251)
   if (_0=="wrnMioInfeasibleFinal"):
    return numpy.int32(270)
   if (_0=="wrnSolFilter"):
    return numpy.int32(300)
   if (_0=="wrnUndefSolFileName"):
    return numpy.int32(350)
   if (_0=="wrnSolFileIgnoredCon"):
    return numpy.int32(351)
   if (_0=="wrnSolFileIgnoredVar"):
    return numpy.int32(352)
   if (_0=="wrnTooFewBasisVars"):
    return numpy.int32(400)
   if (_0=="wrnTooManyBasisVars"):
    return numpy.int32(405)
   if (_0=="wrnLicenseExpire"):
    return numpy.int32(500)
   if (_0=="wrnLicenseServer"):
    return numpy.int32(501)
   if (_0=="wrnEmptyName"):
    return numpy.int32(502)
   if (_0=="wrnUsingGenericNames"):
    return numpy.int32(503)
   if (_0=="wrnInvalidMpsName"):
    return numpy.int32(504)
   if (_0=="wrnInvalidMpsObjName"):
    return numpy.int32(505)
   if (_0=="wrnLicenseFeatureExpire"):
    return numpy.int32(509)
   if (_0=="wrnParamNameDou"):
    return numpy.int32(510)
   if (_0=="wrnParamNameInt"):
    return numpy.int32(511)
   if (_0=="wrnParamNameStr"):
    return numpy.int32(512)
   if (_0=="wrnParamStrValue"):
    return numpy.int32(515)
   if (_0=="wrnParamIgnoredCmio"):
    return numpy.int32(516)
   if (_0=="wrnZerosInSparseRow"):
    return numpy.int32(705)
   if (_0=="wrnZerosInSparseCol"):
    return numpy.int32(710)
   if (_0=="wrnIncompleteLinearDependencyCheck"):
    return numpy.int32(800)
   if (_0=="wrnEliminatorSpace"):
    return numpy.int32(801)
   if (_0=="wrnPresolveOutofspace"):
    return numpy.int32(802)
   if (_0=="wrnPresolvePrimalPerturbations"):
    return numpy.int32(803)
   if (_0=="wrnWriteChangedNames"):
    return numpy.int32(830)
   if (_0=="wrnWriteDiscardedCfix"):
    return numpy.int32(831)
   if (_0=="wrnDuplicateConstraintNames"):
    return numpy.int32(850)
   if (_0=="wrnDuplicateVariableNames"):
    return numpy.int32(851)
   if (_0=="wrnDuplicateBarvariableNames"):
    return numpy.int32(852)
   if (_0=="wrnDuplicateConeNames"):
    return numpy.int32(853)
   if (_0=="wrnAnaLargeBounds"):
    return numpy.int32(900)
   if (_0=="wrnAnaCZero"):
    return numpy.int32(901)
   if (_0=="wrnAnaEmptyCols"):
    return numpy.int32(902)
   if (_0=="wrnAnaCloseBounds"):
    return numpy.int32(903)
   if (_0=="wrnAnaAlmostIntBounds"):
    return numpy.int32(904)
   if (_0=="wrnNoInfeasibilityReportWhenMatrixVariables"):
    return numpy.int32(930)
   if (_0=="wrnGetdualIgnoresIntegrality"):
    return numpy.int32(940)
   if (_0=="wrnNoDualizer"):
    return numpy.int32(950)
   if (_0=="wrnSymMatLarge"):
    return numpy.int32(960)
   if (_0=="wrnModifiedDoubleParameter"):
    return numpy.int32(970)
   if (_0=="wrnLargeFij"):
    return numpy.int32(980)
   if (_0=="wrnPtfUnknownSection"):
    return numpy.int32(981)
   if (_0=="errLicense"):
    return numpy.int32(1000)
   if (_0=="errLicenseExpired"):
    return numpy.int32(1001)
   if (_0=="errLicenseVersion"):
    return numpy.int32(1002)
   if (_0=="errLicenseOldServerVersion"):
    return numpy.int32(1003)
   if (_0=="errSizeLicense"):
    return numpy.int32(1005)
   if (_0=="errProbLicense"):
    return numpy.int32(1006)
   if (_0=="errFileLicense"):
    return numpy.int32(1007)
   if (_0=="errMissingLicenseFile"):
    return numpy.int32(1008)
   if (_0=="errSizeLicenseCon"):
    return numpy.int32(1010)
   if (_0=="errSizeLicenseVar"):
    return numpy.int32(1011)
   if (_0=="errSizeLicenseIntvar"):
    return numpy.int32(1012)
   if (_0=="errOptimizerLicense"):
    return numpy.int32(1013)
   if (_0=="errFlexlm"):
    return numpy.int32(1014)
   if (_0=="errLicenseServer"):
    return numpy.int32(1015)
   if (_0=="errLicenseMax"):
    return numpy.int32(1016)
   if (_0=="errLicenseMoseklmDaemon"):
    return numpy.int32(1017)
   if (_0=="errLicenseFeature"):
    return numpy.int32(1018)
   if (_0=="errPlatformNotLicensed"):
    return numpy.int32(1019)
   if (_0=="errLicenseCannotAllocate"):
    return numpy.int32(1020)
   if (_0=="errLicenseCannotConnect"):
    return numpy.int32(1021)
   if (_0=="errLicenseInvalidHostid"):
    return numpy.int32(1025)
   if (_0=="errLicenseServerVersion"):
    return numpy.int32(1026)
   if (_0=="errLicenseNoServerSupport"):
    return numpy.int32(1027)
   if (_0=="errLicenseNoServerLine"):
    return numpy.int32(1028)
   if (_0=="errOlderDll"):
    return numpy.int32(1035)
   if (_0=="errNewerDll"):
    return numpy.int32(1036)
   if (_0=="errLinkFileDll"):
    return numpy.int32(1040)
   if (_0=="errThreadMutexInit"):
    return numpy.int32(1045)
   if (_0=="errThreadMutexLock"):
    return numpy.int32(1046)
   if (_0=="errThreadMutexUnlock"):
    return numpy.int32(1047)
   if (_0=="errThreadCreate"):
    return numpy.int32(1048)
   if (_0=="errThreadCondInit"):
    return numpy.int32(1049)
   if (_0=="errUnknown"):
    return numpy.int32(1050)
   if (_0=="errSpace"):
    return numpy.int32(1051)
   if (_0=="errFileOpen"):
    return numpy.int32(1052)
   if (_0=="errFileRead"):
    return numpy.int32(1053)
   if (_0=="errFileWrite"):
    return numpy.int32(1054)
   if (_0=="errDataFileExt"):
    return numpy.int32(1055)
   if (_0=="errInvalidFileName"):
    return numpy.int32(1056)
   if (_0=="errInvalidSolFileName"):
    return numpy.int32(1057)
   if (_0=="errEndOfFile"):
    return numpy.int32(1059)
   if (_0=="errNullEnv"):
    return numpy.int32(1060)
   if (_0=="errNullTask"):
    return numpy.int32(1061)
   if (_0=="errInvalidStream"):
    return numpy.int32(1062)
   if (_0=="errNoInitEnv"):
    return numpy.int32(1063)
   if (_0=="errInvalidTask"):
    return numpy.int32(1064)
   if (_0=="errNullPointer"):
    return numpy.int32(1065)
   if (_0=="errLivingTasks"):
    return numpy.int32(1066)
   if (_0=="errReadGzip"):
    return numpy.int32(1067)
   if (_0=="errReadZstd"):
    return numpy.int32(1068)
   if (_0=="errReadAsync"):
    return numpy.int32(1069)
   if (_0=="errBlankName"):
    return numpy.int32(1070)
   if (_0=="errDupName"):
    return numpy.int32(1071)
   if (_0=="errFormatString"):
    return numpy.int32(1072)
   if (_0=="errSparsitySpecification"):
    return numpy.int32(1073)
   if (_0=="errMismatchingDimension"):
    return numpy.int32(1074)
   if (_0=="errInvalidObjName"):
    return numpy.int32(1075)
   if (_0=="errInvalidConName"):
    return numpy.int32(1076)
   if (_0=="errInvalidVarName"):
    return numpy.int32(1077)
   if (_0=="errInvalidConeName"):
    return numpy.int32(1078)
   if (_0=="errInvalidBarvarName"):
    return numpy.int32(1079)
   if (_0=="errSpaceLeaking"):
    return numpy.int32(1080)
   if (_0=="errSpaceNoInfo"):
    return numpy.int32(1081)
   if (_0=="errDimensionSpecification"):
    return numpy.int32(1082)
   if (_0=="errAxisNameSpecification"):
    return numpy.int32(1083)
   if (_0=="errReadPrematureEof"):
    return numpy.int32(1089)
   if (_0=="errReadFormat"):
    return numpy.int32(1090)
   if (_0=="errWriteLpInvalidVarNames"):
    return numpy.int32(1091)
   if (_0=="errWriteLpDuplicateVarNames"):
    return numpy.int32(1092)
   if (_0=="errWriteLpInvalidConNames"):
    return numpy.int32(1093)
   if (_0=="errWriteLpDuplicateConNames"):
    return numpy.int32(1094)
   if (_0=="errMpsFile"):
    return numpy.int32(1100)
   if (_0=="errMpsInvField"):
    return numpy.int32(1101)
   if (_0=="errMpsInvMarker"):
    return numpy.int32(1102)
   if (_0=="errMpsNullConName"):
    return numpy.int32(1103)
   if (_0=="errMpsNullVarName"):
    return numpy.int32(1104)
   if (_0=="errMpsUndefConName"):
    return numpy.int32(1105)
   if (_0=="errMpsUndefVarName"):
    return numpy.int32(1106)
   if (_0=="errMpsInvalidConKey"):
    return numpy.int32(1107)
   if (_0=="errMpsInvalidBoundKey"):
    return numpy.int32(1108)
   if (_0=="errMpsInvalidSecName"):
    return numpy.int32(1109)
   if (_0=="errMpsNoObjective"):
    return numpy.int32(1110)
   if (_0=="errMpsSplittedVar"):
    return numpy.int32(1111)
   if (_0=="errMpsMulConName"):
    return numpy.int32(1112)
   if (_0=="errMpsMulQsec"):
    return numpy.int32(1113)
   if (_0=="errMpsMulQobj"):
    return numpy.int32(1114)
   if (_0=="errMpsInvSecOrder"):
    return numpy.int32(1115)
   if (_0=="errMpsMulCsec"):
    return numpy.int32(1116)
   if (_0=="errMpsConeType"):
    return numpy.int32(1117)
   if (_0=="errMpsConeOverlap"):
    return numpy.int32(1118)
   if (_0=="errMpsConeRepeat"):
    return numpy.int32(1119)
   if (_0=="errMpsNonSymmetricQ"):
    return numpy.int32(1120)
   if (_0=="errMpsDuplicateQElement"):
    return numpy.int32(1121)
   if (_0=="errMpsInvalidObjsense"):
    return numpy.int32(1122)
   if (_0=="errMpsTabInField2"):
    return numpy.int32(1125)
   if (_0=="errMpsTabInField3"):
    return numpy.int32(1126)
   if (_0=="errMpsTabInField5"):
    return numpy.int32(1127)
   if (_0=="errMpsInvalidObjName"):
    return numpy.int32(1128)
   if (_0=="errMpsInvalidKey"):
    return numpy.int32(1129)
   if (_0=="errMpsInvalidIndicatorConstraint"):
    return numpy.int32(1130)
   if (_0=="errMpsInvalidIndicatorVariable"):
    return numpy.int32(1131)
   if (_0=="errMpsInvalidIndicatorValue"):
    return numpy.int32(1132)
   if (_0=="errMpsInvalidIndicatorQuadraticConstraint"):
    return numpy.int32(1133)
   if (_0=="errOpfSyntax"):
    return numpy.int32(1134)
   if (_0=="errOpfPrematureEof"):
    return numpy.int32(1136)
   if (_0=="errOpfMismatchedTag"):
    return numpy.int32(1137)
   if (_0=="errOpfDuplicateBound"):
    return numpy.int32(1138)
   if (_0=="errOpfDuplicateConstraintName"):
    return numpy.int32(1139)
   if (_0=="errOpfInvalidConeType"):
    return numpy.int32(1140)
   if (_0=="errOpfIncorrectTagParam"):
    return numpy.int32(1141)
   if (_0=="errOpfInvalidTag"):
    return numpy.int32(1142)
   if (_0=="errOpfDuplicateConeEntry"):
    return numpy.int32(1143)
   if (_0=="errOpfTooLarge"):
    return numpy.int32(1144)
   if (_0=="errOpfDualIntegerSolution"):
    return numpy.int32(1146)
   if (_0=="errLpEmpty"):
    return numpy.int32(1151)
   if (_0=="errWriteMpsInvalidName"):
    return numpy.int32(1153)
   if (_0=="errLpInvalidVarName"):
    return numpy.int32(1154)
   if (_0=="errWriteOpfInvalidVarName"):
    return numpy.int32(1156)
   if (_0=="errLpFileFormat"):
    return numpy.int32(1157)
   if (_0=="errLpExpectedNumber"):
    return numpy.int32(1158)
   if (_0=="errReadLpMissingEndTag"):
    return numpy.int32(1159)
   if (_0=="errLpIndicatorVar"):
    return numpy.int32(1160)
   if (_0=="errLpExpectedObjective"):
    return numpy.int32(1161)
   if (_0=="errLpExpectedConstraintRelation"):
    return numpy.int32(1162)
   if (_0=="errLpAmbiguousConstraintBound"):
    return numpy.int32(1163)
   if (_0=="errLpDuplicateSection"):
    return numpy.int32(1164)
   if (_0=="errReadLpDelayedRowsNotSupported"):
    return numpy.int32(1165)
   if (_0=="errWritingFile"):
    return numpy.int32(1166)
   if (_0=="errWriteAsync"):
    return numpy.int32(1167)
   if (_0=="errInvalidNameInSolFile"):
    return numpy.int32(1170)
   if (_0=="errJsonSyntax"):
    return numpy.int32(1175)
   if (_0=="errJsonString"):
    return numpy.int32(1176)
   if (_0=="errJsonNumberOverflow"):
    return numpy.int32(1177)
   if (_0=="errJsonFormat"):
    return numpy.int32(1178)
   if (_0=="errJsonData"):
    return numpy.int32(1179)
   if (_0=="errJsonMissingData"):
    return numpy.int32(1180)
   if (_0=="errPtfIncompatibility"):
    return numpy.int32(1181)
   if (_0=="errPtfUndefinedItem"):
    return numpy.int32(1182)
   if (_0=="errPtfInconsistency"):
    return numpy.int32(1183)
   if (_0=="errPtfFormat"):
    return numpy.int32(1184)
   if (_0=="errArgumentLenneq"):
    return numpy.int32(1197)
   if (_0=="errArgumentType"):
    return numpy.int32(1198)
   if (_0=="errNumArguments"):
    return numpy.int32(1199)
   if (_0=="errInArgument"):
    return numpy.int32(1200)
   if (_0=="errArgumentDimension"):
    return numpy.int32(1201)
   if (_0=="errShapeIsTooLarge"):
    return numpy.int32(1202)
   if (_0=="errIndexIsTooSmall"):
    return numpy.int32(1203)
   if (_0=="errIndexIsTooLarge"):
    return numpy.int32(1204)
   if (_0=="errIndexIsNotUnique"):
    return numpy.int32(1205)
   if (_0=="errParamName"):
    return numpy.int32(1206)
   if (_0=="errParamNameDou"):
    return numpy.int32(1207)
   if (_0=="errParamNameInt"):
    return numpy.int32(1208)
   if (_0=="errParamNameStr"):
    return numpy.int32(1209)
   if (_0=="errParamIndex"):
    return numpy.int32(1210)
   if (_0=="errParamIsTooLarge"):
    return numpy.int32(1215)
   if (_0=="errParamIsTooSmall"):
    return numpy.int32(1216)
   if (_0=="errParamValueStr"):
    return numpy.int32(1217)
   if (_0=="errParamType"):
    return numpy.int32(1218)
   if (_0=="errInfDouIndex"):
    return numpy.int32(1219)
   if (_0=="errInfIntIndex"):
    return numpy.int32(1220)
   if (_0=="errIndexArrIsTooSmall"):
    return numpy.int32(1221)
   if (_0=="errIndexArrIsTooLarge"):
    return numpy.int32(1222)
   if (_0=="errInfLintIndex"):
    return numpy.int32(1225)
   if (_0=="errArgIsTooSmall"):
    return numpy.int32(1226)
   if (_0=="errArgIsTooLarge"):
    return numpy.int32(1227)
   if (_0=="errInvalidWhichsol"):
    return numpy.int32(1228)
   if (_0=="errInfDouName"):
    return numpy.int32(1230)
   if (_0=="errInfIntName"):
    return numpy.int32(1231)
   if (_0=="errInfType"):
    return numpy.int32(1232)
   if (_0=="errInfLintName"):
    return numpy.int32(1234)
   if (_0=="errIndex"):
    return numpy.int32(1235)
   if (_0=="errWhichsol"):
    return numpy.int32(1236)
   if (_0=="errSolitem"):
    return numpy.int32(1237)
   if (_0=="errWhichitemNotAllowed"):
    return numpy.int32(1238)
   if (_0=="errMaxnumcon"):
    return numpy.int32(1240)
   if (_0=="errMaxnumvar"):
    return numpy.int32(1241)
   if (_0=="errMaxnumbarvar"):
    return numpy.int32(1242)
   if (_0=="errMaxnumqnz"):
    return numpy.int32(1243)
   if (_0=="errTooSmallMaxNumNz"):
    return numpy.int32(1245)
   if (_0=="errInvalidIdx"):
    return numpy.int32(1246)
   if (_0=="errInvalidMaxNum"):
    return numpy.int32(1247)
   if (_0=="errUnallowedWhichsol"):
    return numpy.int32(1248)
   if (_0=="errNumconlim"):
    return numpy.int32(1250)
   if (_0=="errNumvarlim"):
    return numpy.int32(1251)
   if (_0=="errTooSmallMaxnumanz"):
    return numpy.int32(1252)
   if (_0=="errInvAptre"):
    return numpy.int32(1253)
   if (_0=="errMulAElement"):
    return numpy.int32(1254)
   if (_0=="errInvBk"):
    return numpy.int32(1255)
   if (_0=="errInvBkc"):
    return numpy.int32(1256)
   if (_0=="errInvBkx"):
    return numpy.int32(1257)
   if (_0=="errInvVarType"):
    return numpy.int32(1258)
   if (_0=="errSolverProbtype"):
    return numpy.int32(1259)
   if (_0=="errObjectiveRange"):
    return numpy.int32(1260)
   if (_0=="errInvRescode"):
    return numpy.int32(1261)
   if (_0=="errInvIinf"):
    return numpy.int32(1262)
   if (_0=="errInvLiinf"):
    return numpy.int32(1263)
   if (_0=="errInvDinf"):
    return numpy.int32(1264)
   if (_0=="errBasis"):
    return numpy.int32(1266)
   if (_0=="errInvSkc"):
    return numpy.int32(1267)
   if (_0=="errInvSkx"):
    return numpy.int32(1268)
   if (_0=="errInvSkn"):
    return numpy.int32(1274)
   if (_0=="errInvSkStr"):
    return numpy.int32(1269)
   if (_0=="errInvSk"):
    return numpy.int32(1270)
   if (_0=="errInvConeTypeStr"):
    return numpy.int32(1271)
   if (_0=="errInvConeType"):
    return numpy.int32(1272)
   if (_0=="errInvalidSurplus"):
    return numpy.int32(1275)
   if (_0=="errInvNameItem"):
    return numpy.int32(1280)
   if (_0=="errProItem"):
    return numpy.int32(1281)
   if (_0=="errInvalidFormatType"):
    return numpy.int32(1283)
   if (_0=="errFirsti"):
    return numpy.int32(1285)
   if (_0=="errLasti"):
    return numpy.int32(1286)
   if (_0=="errFirstj"):
    return numpy.int32(1287)
   if (_0=="errLastj"):
    return numpy.int32(1288)
   if (_0=="errMaxLenIsTooSmall"):
    return numpy.int32(1289)
   if (_0=="errNonlinearEquality"):
    return numpy.int32(1290)
   if (_0=="errNonconvex"):
    return numpy.int32(1291)
   if (_0=="errNonlinearRanged"):
    return numpy.int32(1292)
   if (_0=="errConQNotPsd"):
    return numpy.int32(1293)
   if (_0=="errConQNotNsd"):
    return numpy.int32(1294)
   if (_0=="errObjQNotPsd"):
    return numpy.int32(1295)
   if (_0=="errObjQNotNsd"):
    return numpy.int32(1296)
   if (_0=="errArgumentPermArray"):
    return numpy.int32(1299)
   if (_0=="errConeIndex"):
    return numpy.int32(1300)
   if (_0=="errConeSize"):
    return numpy.int32(1301)
   if (_0=="errConeOverlap"):
    return numpy.int32(1302)
   if (_0=="errConeRepVar"):
    return numpy.int32(1303)
   if (_0=="errMaxnumcone"):
    return numpy.int32(1304)
   if (_0=="errConeType"):
    return numpy.int32(1305)
   if (_0=="errConeTypeStr"):
    return numpy.int32(1306)
   if (_0=="errConeOverlapAppend"):
    return numpy.int32(1307)
   if (_0=="errRemoveConeVariable"):
    return numpy.int32(1310)
   if (_0=="errAppendingTooBigCone"):
    return numpy.int32(1311)
   if (_0=="errConeParameter"):
    return numpy.int32(1320)
   if (_0=="errSolFileInvalidNumber"):
    return numpy.int32(1350)
   if (_0=="errHugeC"):
    return numpy.int32(1375)
   if (_0=="errHugeAij"):
    return numpy.int32(1380)
   if (_0=="errDuplicateAij"):
    return numpy.int32(1385)
   if (_0=="errLowerBoundIsANan"):
    return numpy.int32(1390)
   if (_0=="errUpperBoundIsANan"):
    return numpy.int32(1391)
   if (_0=="errInfiniteBound"):
    return numpy.int32(1400)
   if (_0=="errInvQobjSubi"):
    return numpy.int32(1401)
   if (_0=="errInvQobjSubj"):
    return numpy.int32(1402)
   if (_0=="errInvQobjVal"):
    return numpy.int32(1403)
   if (_0=="errInvQconSubk"):
    return numpy.int32(1404)
   if (_0=="errInvQconSubi"):
    return numpy.int32(1405)
   if (_0=="errInvQconSubj"):
    return numpy.int32(1406)
   if (_0=="errInvQconVal"):
    return numpy.int32(1407)
   if (_0=="errQconSubiTooSmall"):
    return numpy.int32(1408)
   if (_0=="errQconSubiTooLarge"):
    return numpy.int32(1409)
   if (_0=="errQobjUpperTriangle"):
    return numpy.int32(1415)
   if (_0=="errQconUpperTriangle"):
    return numpy.int32(1417)
   if (_0=="errFixedBoundValues"):
    return numpy.int32(1420)
   if (_0=="errTooSmallATruncationValue"):
    return numpy.int32(1421)
   if (_0=="errInvalidObjectiveSense"):
    return numpy.int32(1445)
   if (_0=="errUndefinedObjectiveSense"):
    return numpy.int32(1446)
   if (_0=="errYIsUndefined"):
    return numpy.int32(1449)
   if (_0=="errNanInDoubleData"):
    return numpy.int32(1450)
   if (_0=="errInfInDoubleData"):
    return numpy.int32(1451)
   if (_0=="errNanInBlc"):
    return numpy.int32(1461)
   if (_0=="errNanInBuc"):
    return numpy.int32(1462)
   if (_0=="errInvalidCfix"):
    return numpy.int32(1469)
   if (_0=="errNanInC"):
    return numpy.int32(1470)
   if (_0=="errNanInBlx"):
    return numpy.int32(1471)
   if (_0=="errNanInBux"):
    return numpy.int32(1472)
   if (_0=="errInvalidAij"):
    return numpy.int32(1473)
   if (_0=="errInvalidCj"):
    return numpy.int32(1474)
   if (_0=="errSymMatInvalid"):
    return numpy.int32(1480)
   if (_0=="errSymMatHuge"):
    return numpy.int32(1482)
   if (_0=="errInvProblem"):
    return numpy.int32(1500)
   if (_0=="errMixedConicAndNl"):
    return numpy.int32(1501)
   if (_0=="errGlobalInvConicProblem"):
    return numpy.int32(1503)
   if (_0=="errInvOptimizer"):
    return numpy.int32(1550)
   if (_0=="errMioNoOptimizer"):
    return numpy.int32(1551)
   if (_0=="errNoOptimizerVarType"):
    return numpy.int32(1552)
   if (_0=="errFinalSolution"):
    return numpy.int32(1560)
   if (_0=="errFirst"):
    return numpy.int32(1570)
   if (_0=="errLast"):
    return numpy.int32(1571)
   if (_0=="errSliceSize"):
    return numpy.int32(1572)
   if (_0=="errNegativeSurplus"):
    return numpy.int32(1573)
   if (_0=="errNegativeAppend"):
    return numpy.int32(1578)
   if (_0=="errPostsolve"):
    return numpy.int32(1580)
   if (_0=="errOverflow"):
    return numpy.int32(1590)
   if (_0=="errNoBasisSol"):
    return numpy.int32(1600)
   if (_0=="errBasisFactor"):
    return numpy.int32(1610)
   if (_0=="errBasisSingular"):
    return numpy.int32(1615)
   if (_0=="errFactor"):
    return numpy.int32(1650)
   if (_0=="errFeasrepairCannotRelax"):
    return numpy.int32(1700)
   if (_0=="errFeasrepairSolvingRelaxed"):
    return numpy.int32(1701)
   if (_0=="errFeasrepairInconsistentBound"):
    return numpy.int32(1702)
   if (_0=="errRepairInvalidProblem"):
    return numpy.int32(1710)
   if (_0=="errRepairOptimizationFailed"):
    return numpy.int32(1711)
   if (_0=="errNameMaxLen"):
    return numpy.int32(1750)
   if (_0=="errNameIsNull"):
    return numpy.int32(1760)
   if (_0=="errInvalidCompression"):
    return numpy.int32(1800)
   if (_0=="errInvalidIomode"):
    return numpy.int32(1801)
   if (_0=="errNoPrimalInfeasCer"):
    return numpy.int32(2000)
   if (_0=="errNoDualInfeasCer"):
    return numpy.int32(2001)
   if (_0=="errNoSolutionInCallback"):
    return numpy.int32(2500)
   if (_0=="errInvMarki"):
    return numpy.int32(2501)
   if (_0=="errInvMarkj"):
    return numpy.int32(2502)
   if (_0=="errInvNumi"):
    return numpy.int32(2503)
   if (_0=="errInvNumj"):
    return numpy.int32(2504)
   if (_0=="errTaskIncompatible"):
    return numpy.int32(2560)
   if (_0=="errTaskInvalid"):
    return numpy.int32(2561)
   if (_0=="errTaskWrite"):
    return numpy.int32(2562)
   if (_0=="errReadWrite"):
    return numpy.int32(2563)
   if (_0=="errTaskPrematureEof"):
    return numpy.int32(2564)
   if (_0=="errLuMaxNumTries"):
    return numpy.int32(2800)
   if (_0=="errInvalidUtf8"):
    return numpy.int32(2900)
   if (_0=="errInvalidWchar"):
    return numpy.int32(2901)
   if (_0=="errNoDualForItgSol"):
    return numpy.int32(2950)
   if (_0=="errNoSnxForBasSol"):
    return numpy.int32(2953)
   if (_0=="errInternal"):
    return numpy.int32(3000)
   if (_0=="errApiArrayTooSmall"):
    return numpy.int32(3001)
   if (_0=="errApiCbConnect"):
    return numpy.int32(3002)
   if (_0=="errApiFatalError"):
    return numpy.int32(3005)
   if (_0=="errApiInternal"):
    return numpy.int32(3999)
   if (_0=="errSenFormat"):
    return numpy.int32(3050)
   if (_0=="errSenUndefName"):
    return numpy.int32(3051)
   if (_0=="errSenIndexRange"):
    return numpy.int32(3052)
   if (_0=="errSenBoundInvalidUp"):
    return numpy.int32(3053)
   if (_0=="errSenBoundInvalidLo"):
    return numpy.int32(3054)
   if (_0=="errSenIndexInvalid"):
    return numpy.int32(3055)
   if (_0=="errSenInvalidRegexp"):
    return numpy.int32(3056)
   if (_0=="errSenSolutionStatus"):
    return numpy.int32(3057)
   if (_0=="errSenNumerical"):
    return numpy.int32(3058)
   if (_0=="errSenUnhandledProblemType"):
    return numpy.int32(3080)
   if (_0=="errUnbStepSize"):
    return numpy.int32(3100)
   if (_0=="errIdenticalTasks"):
    return numpy.int32(3101)
   if (_0=="errAdInvalidCodelist"):
    return numpy.int32(3102)
   if (_0=="errInternalTestFailed"):
    return numpy.int32(3500)
   if (_0=="errInt64ToInt32Cast"):
    return numpy.int32(3800)
   if (_0=="errInfeasUndefined"):
    return numpy.int32(3910)
   if (_0=="errNoBarxForSolution"):
    return numpy.int32(3915)
   if (_0=="errNoBarsForSolution"):
    return numpy.int32(3916)
   if (_0=="errBarVarDim"):
    return numpy.int32(3920)
   if (_0=="errSymMatInvalidRowIndex"):
    return numpy.int32(3940)
   if (_0=="errSymMatInvalidColIndex"):
    return numpy.int32(3941)
   if (_0=="errSymMatNotLowerTringular"):
    return numpy.int32(3942)
   if (_0=="errSymMatInvalidValue"):
    return numpy.int32(3943)
   if (_0=="errSymMatDuplicate"):
    return numpy.int32(3944)
   if (_0=="errInvalidSymMatDim"):
    return numpy.int32(3950)
   if (_0=="errInvalidFileFormatForSymMat"):
    return numpy.int32(4000)
   if (_0=="errInvalidFileFormatForCfix"):
    return numpy.int32(4001)
   if (_0=="errInvalidFileFormatForRangedConstraints"):
    return numpy.int32(4002)
   if (_0=="errInvalidFileFormatForFreeConstraints"):
    return numpy.int32(4003)
   if (_0=="errInvalidFileFormatForCones"):
    return numpy.int32(4005)
   if (_0=="errInvalidFileFormatForQuadraticTerms"):
    return numpy.int32(4006)
   if (_0=="errInvalidFileFormatForNonlinear"):
    return numpy.int32(4010)
   if (_0=="errInvalidFileFormatForDisjunctiveConstraints"):
    return numpy.int32(4011)
   if (_0=="errInvalidFileFormatForAffineConicConstraints"):
    return numpy.int32(4012)
   if (_0=="errDuplicateConstraintNames"):
    return numpy.int32(4500)
   if (_0=="errDuplicateVariableNames"):
    return numpy.int32(4501)
   if (_0=="errDuplicateBarvariableNames"):
    return numpy.int32(4502)
   if (_0=="errDuplicateConeNames"):
    return numpy.int32(4503)
   if (_0=="errDuplicateDomainNames"):
    return numpy.int32(4504)
   if (_0=="errDuplicateDjcNames"):
    return numpy.int32(4505)
   if (_0=="errNonUniqueArray"):
    return numpy.int32(5000)
   if (_0=="errArgumentIsTooSmall"):
    return numpy.int32(5004)
   if (_0=="errArgumentIsTooLarge"):
    return numpy.int32(5005)
   if (_0=="errMioInternal"):
    return numpy.int32(5010)
   if (_0=="errInvalidProblemType"):
    return numpy.int32(6000)
   if (_0=="errUnhandledSolutionStatus"):
    return numpy.int32(6010)
   if (_0=="errUpperTriangle"):
    return numpy.int32(6020)
   if (_0=="errLauSingularMatrix"):
    return numpy.int32(7000)
   if (_0=="errLauNotPositiveDefinite"):
    return numpy.int32(7001)
   if (_0=="errLauInvalidLowerTriangularMatrix"):
    return numpy.int32(7002)
   if (_0=="errLauUnknown"):
    return numpy.int32(7005)
   if (_0=="errLauArgM"):
    return numpy.int32(7010)
   if (_0=="errLauArgN"):
    return numpy.int32(7011)
   if (_0=="errLauArgK"):
    return numpy.int32(7012)
   if (_0=="errLauArgTransa"):
    return numpy.int32(7015)
   if (_0=="errLauArgTransb"):
    return numpy.int32(7016)
   if (_0=="errLauArgUplo"):
    return numpy.int32(7017)
   if (_0=="errLauArgTrans"):
    return numpy.int32(7018)
   if (_0=="errLauInvalidSparseSymmetricMatrix"):
    return numpy.int32(7019)
   if (_0=="errCbfParse"):
    return numpy.int32(7100)
   if (_0=="errCbfObjSense"):
    return numpy.int32(7101)
   if (_0=="errCbfNoVariables"):
    return numpy.int32(7102)
   if (_0=="errCbfTooManyConstraints"):
    return numpy.int32(7103)
   if (_0=="errCbfTooManyVariables"):
    return numpy.int32(7104)
   if (_0=="errCbfNoVersionSpecified"):
    return numpy.int32(7105)
   if (_0=="errCbfSyntax"):
    return numpy.int32(7106)
   if (_0=="errCbfDuplicateObj"):
    return numpy.int32(7107)
   if (_0=="errCbfDuplicateCon"):
    return numpy.int32(7108)
   if (_0=="errCbfDuplicateVar"):
    return numpy.int32(7110)
   if (_0=="errCbfDuplicateInt"):
    return numpy.int32(7111)
   if (_0=="errCbfInvalidVarType"):
    return numpy.int32(7112)
   if (_0=="errCbfInvalidConType"):
    return numpy.int32(7113)
   if (_0=="errCbfInvalidDomainDimension"):
    return numpy.int32(7114)
   if (_0=="errCbfDuplicateObjacoord"):
    return numpy.int32(7115)
   if (_0=="errCbfDuplicateBcoord"):
    return numpy.int32(7116)
   if (_0=="errCbfDuplicateAcoord"):
    return numpy.int32(7117)
   if (_0=="errCbfTooFewVariables"):
    return numpy.int32(7118)
   if (_0=="errCbfTooFewConstraints"):
    return numpy.int32(7119)
   if (_0=="errCbfTooFewInts"):
    return numpy.int32(7120)
   if (_0=="errCbfTooManyInts"):
    return numpy.int32(7121)
   if (_0=="errCbfInvalidIntIndex"):
    return numpy.int32(7122)
   if (_0=="errCbfUnsupported"):
    return numpy.int32(7123)
   if (_0=="errCbfDuplicatePsdvar"):
    return numpy.int32(7124)
   if (_0=="errCbfInvalidPsdvarDimension"):
    return numpy.int32(7125)
   if (_0=="errCbfTooFewPsdvar"):
    return numpy.int32(7126)
   if (_0=="errCbfInvalidExpDimension"):
    return numpy.int32(7127)
   if (_0=="errCbfDuplicatePowCones"):
    return numpy.int32(7130)
   if (_0=="errCbfDuplicatePowStarCones"):
    return numpy.int32(7131)
   if (_0=="errCbfInvalidPower"):
    return numpy.int32(7132)
   if (_0=="errCbfPowerConeIsTooLong"):
    return numpy.int32(7133)
   if (_0=="errCbfInvalidPowerConeIndex"):
    return numpy.int32(7134)
   if (_0=="errCbfInvalidPowerStarConeIndex"):
    return numpy.int32(7135)
   if (_0=="errCbfUnhandledPowerConeType"):
    return numpy.int32(7136)
   if (_0=="errCbfUnhandledPowerStarConeType"):
    return numpy.int32(7137)
   if (_0=="errCbfPowerConeMismatch"):
    return numpy.int32(7138)
   if (_0=="errCbfPowerStarConeMismatch"):
    return numpy.int32(7139)
   if (_0=="errCbfInvalidNumberOfCones"):
    return numpy.int32(7140)
   if (_0=="errCbfInvalidDimensionOfCones"):
    return numpy.int32(7141)
   if (_0=="errCbfInvalidNumObjacoord"):
    return numpy.int32(7150)
   if (_0=="errCbfInvalidNumObjfcoord"):
    return numpy.int32(7151)
   if (_0=="errCbfInvalidNumAcoord"):
    return numpy.int32(7152)
   if (_0=="errCbfInvalidNumBcoord"):
    return numpy.int32(7153)
   if (_0=="errCbfInvalidNumFcoord"):
    return numpy.int32(7155)
   if (_0=="errCbfInvalidNumHcoord"):
    return numpy.int32(7156)
   if (_0=="errCbfInvalidNumDcoord"):
    return numpy.int32(7157)
   if (_0=="errCbfExpectedAKeyword"):
    return numpy.int32(7158)
   if (_0=="errCbfInvalidNumPsdcon"):
    return numpy.int32(7200)
   if (_0=="errCbfDuplicatePsdcon"):
    return numpy.int32(7201)
   if (_0=="errCbfInvalidDimensionOfPsdcon"):
    return numpy.int32(7202)
   if (_0=="errCbfInvalidPsdconIndex"):
    return numpy.int32(7203)
   if (_0=="errCbfInvalidPsdconVariableIndex"):
    return numpy.int32(7204)
   if (_0=="errCbfInvalidPsdconBlockIndex"):
    return numpy.int32(7205)
   if (_0=="errCbfUnsupportedChange"):
    return numpy.int32(7210)
   if (_0=="errMioInvalidRootOptimizer"):
    return numpy.int32(7700)
   if (_0=="errMioInvalidNodeOptimizer"):
    return numpy.int32(7701)
   if (_0=="errMpsWriteCplexInvalidConeType"):
    return numpy.int32(7750)
   if (_0=="errToconicConstrQNotPsd"):
    return numpy.int32(7800)
   if (_0=="errToconicConstraintFx"):
    return numpy.int32(7801)
   if (_0=="errToconicConstraintRa"):
    return numpy.int32(7802)
   if (_0=="errToconicConstrNotConic"):
    return numpy.int32(7803)
   if (_0=="errToconicObjectiveNotPsd"):
    return numpy.int32(7804)
   if (_0=="errGetdualNotAvailable"):
    return numpy.int32(7820)
   if (_0=="errServerConnect"):
    return numpy.int32(8000)
   if (_0=="errServerProtocol"):
    return numpy.int32(8001)
   if (_0=="errServerStatus"):
    return numpy.int32(8002)
   if (_0=="errServerToken"):
    return numpy.int32(8003)
   if (_0=="errServerAddress"):
    return numpy.int32(8004)
   if (_0=="errServerCertificate"):
    return numpy.int32(8005)
   if (_0=="errServerTlsClient"):
    return numpy.int32(8006)
   if (_0=="errServerAccessToken"):
    return numpy.int32(8007)
   if (_0=="errServerProblemSize"):
    return numpy.int32(8008)
   if (_0=="errServerHardTimeout"):
    return numpy.int32(8009)
   if (_0=="errDuplicateIndexInASparseMatrix"):
    return numpy.int32(20050)
   if (_0=="errDuplicateIndexInAfeidxList"):
    return numpy.int32(20060)
   if (_0=="errDuplicateFij"):
    return numpy.int32(20100)
   if (_0=="errInvalidFij"):
    return numpy.int32(20101)
   if (_0=="errHugeFij"):
    return numpy.int32(20102)
   if (_0=="errInvalidG"):
    return numpy.int32(20103)
   if (_0=="errInvalidB"):
    return numpy.int32(20150)
   if (_0=="errDomainInvalidIndex"):
    return numpy.int32(20400)
   if (_0=="errDomainDimension"):
    return numpy.int32(20401)
   if (_0=="errDomainDimensionPsd"):
    return numpy.int32(20402)
   if (_0=="errNotPowerDomain"):
    return numpy.int32(20403)
   if (_0=="errDomainPowerInvalidAlpha"):
    return numpy.int32(20404)
   if (_0=="errDomainPowerNegativeAlpha"):
    return numpy.int32(20405)
   if (_0=="errDomainPowerNleft"):
    return numpy.int32(20406)
   if (_0=="errAfeInvalidIndex"):
    return numpy.int32(20500)
   if (_0=="errAccInvalidIndex"):
    return numpy.int32(20600)
   if (_0=="errAccInvalidEntryIndex"):
    return numpy.int32(20601)
   if (_0=="errAccAfeDomainMismatch"):
    return numpy.int32(20602)
   if (_0=="errDjcInvalidIndex"):
    return numpy.int32(20700)
   if (_0=="errDjcUnsupportedDomainType"):
    return numpy.int32(20701)
   if (_0=="errDjcAfeDomainMismatch"):
    return numpy.int32(20702)
   if (_0=="errDjcInvalidTermSize"):
    return numpy.int32(20703)
   if (_0=="errDjcDomainTermsizeMismatch"):
    return numpy.int32(20704)
   if (_0=="errDjcTotalNumTermsMismatch"):
    return numpy.int32(20705)
   if (_0=="errUndefSolution"):
    return numpy.int32(22000)
   if (_0=="errNoDoty"):
    return numpy.int32(22010)
   if (_0=="trmMaxIterations"):
    return numpy.int32(100000)
   if (_0=="trmMaxTime"):
    return numpy.int32(100001)
   if (_0=="trmObjectiveRange"):
    return numpy.int32(100002)
   if (_0=="trmMioNumRelaxs"):
    return numpy.int32(100008)
   if (_0=="trmMioNumBranches"):
    return numpy.int32(100009)
   if (_0=="trmNumMaxNumIntSolutions"):
    return numpy.int32(100015)
   if (_0=="trmStall"):
    return numpy.int32(100006)
   if (_0=="trmUserCallback"):
    return numpy.int32(100007)
   if (_0=="trmMaxNumSetbacks"):
    return numpy.int32(100020)
   if (_0=="trmNumericalProblem"):
    return numpy.int32(100025)
   if (_0=="trmLostRace"):
    return numpy.int32(100027)
   if (_0=="trmInternal"):
    return numpy.int32(100030)
   if (_0=="trmInternalStop"):
    return numpy.int32(100031)
   if (_0=="trmServerMaxTime"):
    return numpy.int32(100032)
   if (_0=="trmServerMaxMemory"):
    return numpy.int32(100033)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1prosta_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1prosta_1value_S(_0)
  @staticmethod
  def __string_1to_1prosta_1value_S(_0):
   if (_0=="unknown"):
    return numpy.int32(0)
   if (_0=="primAndDualFeas"):
    return numpy.int32(1)
   if (_0=="primFeas"):
    return numpy.int32(2)
   if (_0=="dualFeas"):
    return numpy.int32(3)
   if (_0=="primInfeas"):
    return numpy.int32(4)
   if (_0=="dualInfeas"):
    return numpy.int32(5)
   if (_0=="primAndDualInfeas"):
    return numpy.int32(6)
   if (_0=="illPosed"):
    return numpy.int32(7)
   if (_0=="primInfeasOrUnbounded"):
    return numpy.int32(8)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1problemtype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1problemtype_1value_S(_0)
  @staticmethod
  def __string_1to_1problemtype_1value_S(_0):
   if (_0=="lo"):
    return numpy.int32(0)
   if (_0=="qo"):
    return numpy.int32(1)
   if (_0=="qcqo"):
    return numpy.int32(2)
   if (_0=="conic"):
    return numpy.int32(3)
   if (_0=="mixed"):
    return numpy.int32(4)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1problemitem_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1problemitem_1value_S(_0)
  @staticmethod
  def __string_1to_1problemitem_1value_S(_0):
   if (_0=="var"):
    return numpy.int32(0)
   if (_0=="con"):
    return numpy.int32(1)
   if (_0=="cone"):
    return numpy.int32(2)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1parametertype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1parametertype_1value_S(_0)
  @staticmethod
  def __string_1to_1parametertype_1value_S(_0):
   if (_0=="invalidType"):
    return numpy.int32(0)
   if (_0=="douType"):
    return numpy.int32(1)
   if (_0=="intType"):
    return numpy.int32(2)
   if (_0=="strType"):
    return numpy.int32(3)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1foldingmode_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1foldingmode_1value_S(_0)
  @staticmethod
  def __string_1to_1foldingmode_1value_S(_0):
   if (_0=="off"):
    return numpy.int32(0)
   if (_0=="free"):
    return numpy.int32(1)
   if (_0=="freeUnlessBasic"):
    return numpy.int32(2)
   if (_0=="force"):
    return numpy.int32(3)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1presolvemode_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1presolvemode_1value_S(_0)
  @staticmethod
  def __string_1to_1presolvemode_1value_S(_0):
   if (_0=="off"):
    return numpy.int32(0)
   if (_0=="on"):
    return numpy.int32(1)
   if (_0=="free"):
    return numpy.int32(2)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1orderingtype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1orderingtype_1value_S(_0)
  @staticmethod
  def __string_1to_1orderingtype_1value_S(_0):
   if (_0=="free"):
    return numpy.int32(0)
   if (_0=="appminloc"):
    return numpy.int32(1)
   if (_0=="experimental"):
    return numpy.int32(2)
   if (_0=="tryGraphpar"):
    return numpy.int32(3)
   if (_0=="forceGraphpar"):
    return numpy.int32(4)
   if (_0=="none"):
    return numpy.int32(5)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1optimizertype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1optimizertype_1value_S(_0)
  @staticmethod
  def __string_1to_1optimizertype_1value_S(_0):
   if (_0=="free"):
    return numpy.int32(2)
   if (_0=="intpnt"):
    return numpy.int32(4)
   if (_0=="conic"):
    return numpy.int32(0)
   if (_0=="primalSimplex"):
    return numpy.int32(8)
   if (_0=="dualSimplex"):
    return numpy.int32(1)
   if (_0=="newPrimalSimplex"):
    return numpy.int32(7)
   if (_0=="newDualSimplex"):
    return numpy.int32(6)
   if (_0=="freeSimplex"):
    return numpy.int32(3)
   if (_0=="mixedInt"):
    return numpy.int32(5)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1onoffkey_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1onoffkey_1value_S(_0)
  @staticmethod
  def __string_1to_1onoffkey_1value_S(_0):
   if (_0=="on"):
    return numpy.int32(1)
   if (_0=="off"):
    return numpy.int32(0)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1objsense_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1objsense_1value_S(_0)
  @staticmethod
  def __string_1to_1objsense_1value_S(_0):
   if (_0=="minimize"):
    return numpy.int32(0)
   if (_0=="maximize"):
    return numpy.int32(1)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1mpsformat_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1mpsformat_1value_S(_0)
  @staticmethod
  def __string_1to_1mpsformat_1value_S(_0):
   if (_0=="strict"):
    return numpy.int32(0)
   if (_0=="relaxed"):
    return numpy.int32(1)
   if (_0=="free"):
    return numpy.int32(2)
   if (_0=="cplex"):
    return numpy.int32(3)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1miovarseltype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1miovarseltype_1value_S(_0)
  @staticmethod
  def __string_1to_1miovarseltype_1value_S(_0):
   if (_0=="free"):
    return numpy.int32(0)
   if (_0=="pseudocost"):
    return numpy.int32(1)
   if (_0=="strong"):
    return numpy.int32(2)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1mionodeseltype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1mionodeseltype_1value_S(_0)
  @staticmethod
  def __string_1to_1mionodeseltype_1value_S(_0):
   if (_0=="free"):
    return numpy.int32(0)
   if (_0=="first"):
    return numpy.int32(1)
   if (_0=="best"):
    return numpy.int32(2)
   if (_0=="pseudo"):
    return numpy.int32(3)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1miomode_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1miomode_1value_S(_0)
  @staticmethod
  def __string_1to_1miomode_1value_S(_0):
   if (_0=="ignored"):
    return numpy.int32(0)
   if (_0=="satisfied"):
    return numpy.int32(1)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1miocontsoltype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1miocontsoltype_1value_S(_0)
  @staticmethod
  def __string_1to_1miocontsoltype_1value_S(_0):
   if (_0=="none"):
    return numpy.int32(0)
   if (_0=="root"):
    return numpy.int32(1)
   if (_0=="itg"):
    return numpy.int32(2)
   if (_0=="itgRel"):
    return numpy.int32(3)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1miodatapermmethod_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1miodatapermmethod_1value_S(_0)
  @staticmethod
  def __string_1to_1miodatapermmethod_1value_S(_0):
   if (_0=="none"):
    return numpy.int32(0)
   if (_0=="cyclicShift"):
    return numpy.int32(1)
   if (_0=="random"):
    return numpy.int32(2)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1miqcqoreformmethod_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1miqcqoreformmethod_1value_S(_0)
  @staticmethod
  def __string_1to_1miqcqoreformmethod_1value_S(_0):
   if (_0=="free"):
    return numpy.int32(0)
   if (_0=="none"):
    return numpy.int32(1)
   if (_0=="linearization"):
    return numpy.int32(2)
   if (_0=="eigenValMethod"):
    return numpy.int32(3)
   if (_0=="diagSdp"):
    return numpy.int32(4)
   if (_0=="relaxSdp"):
    return numpy.int32(5)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1branchdir_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1branchdir_1value_S(_0)
  @staticmethod
  def __string_1to_1branchdir_1value_S(_0):
   if (_0=="free"):
    return numpy.int32(0)
   if (_0=="up"):
    return numpy.int32(1)
   if (_0=="down"):
    return numpy.int32(2)
   if (_0=="near"):
    return numpy.int32(3)
   if (_0=="far"):
    return numpy.int32(4)
   if (_0=="rootLp"):
    return numpy.int32(5)
   if (_0=="guided"):
    return numpy.int32(6)
   if (_0=="pseudocost"):
    return numpy.int32(7)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1iparam_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1iparam_1value_S(_0)
  @staticmethod
  def __string_1to_1iparam_1value_S(_0):
   if (_0=="autoUpdateSolInfo"):
    return numpy.int32(3)
   if (_0=="removeUnusedSolutions"):
    return numpy.int32(134)
   if (_0=="intpntHotstart"):
    return numpy.int32(19)
   if (_0=="numThreads"):
    return numpy.int32(100)
   if (_0=="timingLevel"):
    return numpy.int32(167)
   if (_0=="mtSpincount"):
    return numpy.int32(98)
   if (_0=="maxNumWarnings"):
    return numpy.int32(56)
   if (_0=="optimizer"):
    return numpy.int32(110)
   if (_0=="simPrecision"):
    return numpy.int32(150)
   if (_0=="biMaxIterations"):
    return numpy.int32(8)
   if (_0=="licenseTrhExpiryWrn"):
    return numpy.int32(32)
   if (_0=="logIncludeSummary"):
    return numpy.int32(42)
   if (_0=="logCutSecondOpt"):
    return numpy.int32(38)
   if (_0=="logAnaPro"):
    return numpy.int32(35)
   if (_0=="logLocalInfo"):
    return numpy.int32(45)
   if (_0=="logBi"):
    return numpy.int32(36)
   if (_0=="logBiFreq"):
    return numpy.int32(37)
   if (_0=="biCleanOptimizer"):
    return numpy.int32(5)
   if (_0=="intpntStartingPoint"):
    return numpy.int32(28)
   if (_0=="intpntDiffStep"):
    return numpy.int32(18)
   if (_0=="intpntScaling"):
    return numpy.int32(26)
   if (_0=="intpntSolveForm"):
    return numpy.int32(27)
   if (_0=="logIntpnt"):
    return numpy.int32(44)
   if (_0=="intpntMaxIterations"):
    return numpy.int32(20)
   if (_0=="intpntOffColTrh"):
    return numpy.int32(22)
   if (_0=="intpntOrderMethod"):
    return numpy.int32(24)
   if (_0=="intpntOrderGpNumSeeds"):
    return numpy.int32(23)
   if (_0=="intpntBasis"):
    return numpy.int32(17)
   if (_0=="biIgnoreMaxIter"):
    return numpy.int32(6)
   if (_0=="biIgnoreNumError"):
    return numpy.int32(7)
   if (_0=="intpntMaxNumCor"):
    return numpy.int32(21)
   if (_0=="presolveUse"):
    return numpy.int32(121)
   if (_0=="logPresolve"):
    return numpy.int32(49)
   if (_0=="presolveLindepUse"):
    return numpy.int32(118)
   if (_0=="presolveLindepNew"):
    return numpy.int32(116)
   if (_0=="presolveMaxNumPass"):
    return numpy.int32(119)
   if (_0=="presolveEliminatorMaxNumTries"):
    return numpy.int32(114)
   if (_0=="presolveEliminatorMaxFill"):
    return numpy.int32(113)
   if (_0=="presolveMaxNumReductions"):
    return numpy.int32(120)
   if (_0=="foldingUse"):
    return numpy.int32(11)
   if (_0=="simDetectPwl"):
    return numpy.int32(139)
   if (_0=="simPrimalCrash"):
    return numpy.int32(152)
   if (_0=="logSim"):
    return numpy.int32(52)
   if (_0=="logSimFreq"):
    return numpy.int32(53)
   if (_0=="logSimFreqGigaTicks"):
    return numpy.int32(54)
   if (_0=="heartbeatSimFreqTicks"):
    return numpy.int32(13)
   if (_0=="simPrimalRestrictSelection"):
    return numpy.int32(154)
   if (_0=="simPrimalSelection"):
    return numpy.int32(155)
   if (_0=="simDualRestrictSelection"):
    return numpy.int32(142)
   if (_0=="simDualSelection"):
    return numpy.int32(143)
   if (_0=="simMaxIterations"):
    return numpy.int32(147)
   if (_0=="simHotstartLu"):
    return numpy.int32(146)
   if (_0=="simRefactorFreq"):
    return numpy.int32(156)
   if (_0=="simSeed"):
    return numpy.int32(161)
   if (_0=="mioMode"):
    return numpy.int32(81)
   if (_0=="logMio"):
    return numpy.int32(46)
   if (_0=="logMioFreq"):
    return numpy.int32(47)
   if (_0=="mioMaxNumRelaxs"):
    return numpy.int32(75)
   if (_0=="mioMaxNumBranches"):
    return numpy.int32(74)
   if (_0=="mioMaxNumRestarts"):
    return numpy.int32(76)
   if (_0=="mioMaxNumRootCutRounds"):
    return numpy.int32(77)
   if (_0=="mioMaxNumSolutions"):
    return numpy.int32(78)
   if (_0=="mioNodeSelection"):
    return numpy.int32(83)
   if (_0=="mioVarSelection"):
    return numpy.int32(96)
   if (_0=="mioMinRel"):
    return numpy.int32(80)
   if (_0=="mioHeuristicLevel"):
    return numpy.int32(72)
   if (_0=="mioProbingLevel"):
    return numpy.int32(88)
   if (_0=="mioSymmetryLevel"):
    return numpy.int32(95)
   if (_0=="mioDualRayAnalysisLevel"):
    return numpy.int32(70)
   if (_0=="mioConflictAnalysisLevel"):
    return numpy.int32(58)
   if (_0=="mioPresolveAggregatorUse"):
    return numpy.int32(87)
   if (_0=="mioNumericalEmphasisLevel"):
    return numpy.int32(84)
   if (_0=="mioMemoryEmphasisLevel"):
    return numpy.int32(79)
   if (_0=="mioCutSelectionLevel"):
    return numpy.int32(68)
   if (_0=="mioVbDetectionLevel"):
    return numpy.int32(97)
   if (_0=="mioBranchDir"):
    return numpy.int32(57)
   if (_0=="mioRootOptimizer"):
    return numpy.int32(93)
   if (_0=="mioNodeOptimizer"):
    return numpy.int32(82)
   if (_0=="mioPerspectiveReformulate"):
    return numpy.int32(86)
   if (_0=="mioPropagateObjectiveConstraint"):
    return numpy.int32(89)
   if (_0=="mioSeed"):
    return numpy.int32(94)
   if (_0=="mioConicOuterApproximation"):
    return numpy.int32(59)
   if (_0=="mioQcqoReformulationMethod"):
    return numpy.int32(90)
   if (_0=="mioDataPermutationMethod"):
    return numpy.int32(69)
   if (_0=="readAsync"):
    return numpy.int32(127)
   if (_0=="writeAsync"):
    return numpy.int32(168)
   if (_0=="readKeepFreeCon"):
    return numpy.int32(129)
   if (_0=="readMpsFormat"):
    return numpy.int32(130)
   if (_0=="writeMpsFormat"):
    return numpy.int32(182)
   if (_0=="readMpsWidth"):
    return numpy.int32(131)
   if (_0=="readDebug"):
    return numpy.int32(128)
   if (_0=="writeFreeCon"):
    return numpy.int32(173)
   if (_0=="writeGenericNames"):
    return numpy.int32(174)
   if (_0=="writeCompression"):
    return numpy.int32(172)
   if (_0=="writeMpsInt"):
    return numpy.int32(183)
   if (_0=="writeLpLineWidth"):
    return numpy.int32(181)
   if (_0=="writeLpFullObj"):
    return numpy.int32(180)
   if (_0=="writeJsonIndentation"):
    return numpy.int32(179)
   if (_0=="writeSolIgnoreInvalidNames"):
    return numpy.int32(187)
   if (_0=="writeSolHead"):
    return numpy.int32(186)
   if (_0=="writeSolConstraints"):
    return numpy.int32(185)
   if (_0=="writeSolVariables"):
    return numpy.int32(188)
   if (_0=="writeSolBarvariables"):
    return numpy.int32(184)
   if (_0=="writeBasHead"):
    return numpy.int32(170)
   if (_0=="writeBasConstraints"):
    return numpy.int32(169)
   if (_0=="writeBasVariables"):
    return numpy.int32(171)
   if (_0=="writeIntHead"):
    return numpy.int32(177)
   if (_0=="writeIntConstraints"):
    return numpy.int32(176)
   if (_0=="writeIntVariables"):
    return numpy.int32(178)
   if (_0=="solReadNameWidth"):
    return numpy.int32(165)
   if (_0=="solReadWidth"):
    return numpy.int32(166)
   if (_0=="infeasReportAuto"):
    return numpy.int32(15)
   if (_0=="infeasReportLevel"):
    return numpy.int32(16)
   if (_0=="infeasGenericNames"):
    return numpy.int32(14)
   if (_0=="logInfeasAna"):
    return numpy.int32(43)
   if (_0=="licenseWait"):
    return numpy.int32(33)
   if (_0=="licenseSuppressExpireWrns"):
    return numpy.int32(31)
   if (_0=="licensePauseTime"):
    return numpy.int32(30)
   if (_0=="licenseDebug"):
    return numpy.int32(29)
   if (_0=="solFilterKeepBasic"):
    return numpy.int32(164)
   if (_0=="log"):
    return numpy.int32(34)
   if (_0=="logExpand"):
    return numpy.int32(39)
   if (_0=="logFile"):
    return numpy.int32(41)
   if (_0=="logOrder"):
    return numpy.int32(48)
   if (_0=="logSensitivity"):
    return numpy.int32(50)
   if (_0=="logSensitivityOpt"):
    return numpy.int32(51)
   if (_0=="readTaskIgnoreParam"):
    return numpy.int32(132)
   if (_0=="paramReadCaseName"):
    return numpy.int32(111)
   if (_0=="paramReadIgnError"):
    return numpy.int32(112)
   if (_0=="simScaling"):
    return numpy.int32(159)
   if (_0=="simScalingMethod"):
    return numpy.int32(160)
   if (_0=="simPrimalPhaseoneMethod"):
    return numpy.int32(153)
   if (_0=="simDualPhaseoneMethod"):
    return numpy.int32(141)
   if (_0=="simMaxNumSetbacks"):
    return numpy.int32(148)
   if (_0=="simHotstart"):
    return numpy.int32(145)
   if (_0=="simBasisFactorUse"):
    return numpy.int32(137)
   if (_0=="simPrecisionBoost"):
    return numpy.int32(151)
   if (_0=="simDegen"):
    return numpy.int32(138)
   if (_0=="simReformulation"):
    return numpy.int32(157)
   if (_0=="simExploitDupvec"):
    return numpy.int32(144)
   if (_0=="simSaveLu"):
    return numpy.int32(158)
   if (_0=="simNonSingular"):
    return numpy.int32(149)
   if (_0=="simDualCrash"):
    return numpy.int32(140)
   if (_0=="logStorage"):
    return numpy.int32(55)
   if (_0=="opfWriteLineLength"):
    return numpy.int32(103)
   if (_0=="opfWriteHints"):
    return numpy.int32(102)
   if (_0=="opfWriteParameters"):
    return numpy.int32(104)
   if (_0=="opfWriteProblem"):
    return numpy.int32(105)
   if (_0=="opfWriteHeader"):
    return numpy.int32(101)
   if (_0=="opfWriteSolutions"):
    return numpy.int32(109)
   if (_0=="opfWriteSolBas"):
    return numpy.int32(106)
   if (_0=="opfWriteSolItg"):
    return numpy.int32(107)
   if (_0=="opfWriteSolItr"):
    return numpy.int32(108)
   if (_0=="ptfWriteTransform"):
    return numpy.int32(126)
   if (_0=="ptfWriteSolutions"):
    return numpy.int32(125)
   if (_0=="ptfWriteParameters"):
    return numpy.int32(123)
   if (_0=="ptfWriteSinglePsdTerms"):
    return numpy.int32(124)
   if (_0=="primalRepairOptimizer"):
    return numpy.int32(122)
   if (_0=="mioCutCmir"):
    return numpy.int32(63)
   if (_0=="mioCutClique"):
    return numpy.int32(62)
   if (_0=="mioCutImpliedBound"):
    return numpy.int32(65)
   if (_0=="mioCutKnapsackCover"):
    return numpy.int32(66)
   if (_0=="mioCutGmi"):
    return numpy.int32(64)
   if (_0=="mioCutLipro"):
    return numpy.int32(67)
   if (_0=="sensitivityType"):
    return numpy.int32(136)
   if (_0=="mioConstructSol"):
    return numpy.int32(60)
   if (_0=="presolveLindepRelWorkTrh"):
    return numpy.int32(117)
   if (_0=="presolveLindepAbsWorkTrh"):
    return numpy.int32(115)
   if (_0=="sensitivityAll"):
    return numpy.int32(135)
   if (_0=="logFeasRepair"):
    return numpy.int32(40)
   if (_0=="cacheLicense"):
    return numpy.int32(9)
   if (_0=="intpntRegularizationUse"):
    return numpy.int32(25)
   if (_0=="simSolveForm"):
    return numpy.int32(162)
   if (_0=="simSwitchOptimizer"):
    return numpy.int32(163)
   if (_0=="writeIgnoreIncompatibleItems"):
    return numpy.int32(175)
   if (_0=="autoSortABeforeOpt"):
    return numpy.int32(2)
   if (_0=="anaSolBasis"):
    return numpy.int32(0)
   if (_0=="anaSolPrintViolated"):
    return numpy.int32(1)
   if (_0=="basisSolveUsePlusOne"):
    return numpy.int32(4)
   if (_0=="compressStatfile"):
    return numpy.int32(10)
   if (_0=="mioRinsMaxNodes"):
    return numpy.int32(92)
   if (_0=="mioRensMaxNodes"):
    return numpy.int32(91)
   if (_0=="mioCrossoverMaxNodes"):
    return numpy.int32(61)
   if (_0=="mioOptFaceMaxNodes"):
    return numpy.int32(85)
   if (_0=="mioFeaspumpLevel"):
    return numpy.int32(71)
   if (_0=="mioIndependentBlockLevel"):
    return numpy.int32(73)
   if (_0=="ng"):
    return numpy.int32(99)
   if (_0=="remoteUseCompression"):
    return numpy.int32(133)
   if (_0=="getdualConvertLmis"):
    return numpy.int32(12)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1iomode_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1iomode_1value_S(_0)
  @staticmethod
  def __string_1to_1iomode_1value_S(_0):
   if (_0=="read"):
    return numpy.int32(0)
   if (_0=="write"):
    return numpy.int32(1)
   if (_0=="readwrite"):
    return numpy.int32(2)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1internal_1iinf_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1internal_1iinf_1value_S(_0)
  @staticmethod
  def __string_1to_1internal_1iinf_1value_S(_0):
   if (_0=="versionMajor"):
    return numpy.int32(144)
   if (_0=="versionMinor"):
    return numpy.int32(145)
   if (_0=="versionRevision"):
    return numpy.int32(146)
   if (_0=="presolveLindepWork"):
    return numpy.int32(79)
   if (_0=="presolveLindepPivots"):
    return numpy.int32(77)
   if (_0=="presolveLindepSkipped"):
    return numpy.int32(78)
   if (_0=="presolveNumPrimalLinDepAttempts"):
    return numpy.int32(85)
   if (_0=="presolveNumPrimalLinDepSuccessAttempts"):
    return numpy.int32(86)
   if (_0=="presolveNumDualLinDepAttempts"):
    return numpy.int32(81)
   if (_0=="presolveNumDualLinDepSuccessAttempts"):
    return numpy.int32(82)
   if (_0=="presolveOutofspace"):
    return numpy.int32(104)
   if (_0=="optObjectiveSense"):
    return numpy.int32(49)
   if (_0=="optimizer"):
    return numpy.int32(50)
   if (_0=="intpntFirRefIter"):
    return numpy.int32(28)
   if (_0=="intpntNumRefSteps"):
    return numpy.int32(33)
   if (_0=="intpntFactorSchurNumDup"):
    return numpy.int32(26)
   if (_0=="intpntFactorSchurNumBlk"):
    return numpy.int32(25)
   if (_0=="intpntFactorSchurMinBlkDim"):
    return numpy.int32(24)
   if (_0=="intpntFactorSchurMaxBlkDim"):
    return numpy.int32(23)
   if (_0=="intpntFactorSchurNumSingular"):
    return numpy.int32(27)
   if (_0=="intpntFactorDim"):
    return numpy.int32(13)
   if (_0=="intpntFactorLDim"):
    return numpy.int32(14)
   if (_0=="intpntFactorOrderMlLNumDense"):
    return numpy.int32(22)
   if (_0=="intpntFactorOrderMlLMaxHeight"):
    return numpy.int32(21)
   if (_0=="intpntFactorOrderGpLMaxHeight"):
    return numpy.int32(20)
   if (_0=="intpntFactorNumDenseA"):
    return numpy.int32(16)
   if (_0=="intpntFactorNumDenseADup"):
    return numpy.int32(17)
   if (_0=="intpntFactorNumDenseW"):
    return numpy.int32(18)
   if (_0=="intpntNumcon"):
    return numpy.int32(40)
   if (_0=="intpntNumvar"):
    return numpy.int32(47)
   if (_0=="intpntNumbarvar"):
    return numpy.int32(34)
   if (_0=="intpntNumblo"):
    return numpy.int32(37)
   if (_0=="intpntNumbup"):
    return numpy.int32(39)
   if (_0=="intpntNumbfr"):
    return numpy.int32(35)
   if (_0=="intpntNumbfx"):
    return numpy.int32(36)
   if (_0=="intpntNumcone"):
    return numpy.int32(41)
   if (_0=="intpntNumconevar"):
    return numpy.int32(42)
   if (_0=="intpntNumbndcone"):
    return numpy.int32(38)
   if (_0=="intpntNumrqcones"):
    return numpy.int32(46)
   if (_0=="intpntNumqcones"):
    return numpy.int32(45)
   if (_0=="intpntNumpexpcones"):
    return numpy.int32(43)
   if (_0=="intpntNumppowcones"):
    return numpy.int32(44)
   if (_0=="intpntMinconedim"):
    return numpy.int32(32)
   if (_0=="intpntMaxconedim"):
    return numpy.int32(31)
   if (_0=="intpntMaxbarvardim"):
    return numpy.int32(30)
   if (_0=="presolveNumcon"):
    return numpy.int32(93)
   if (_0=="presolveNumcfr"):
    return numpy.int32(89)
   if (_0=="presolveNumcfx"):
    return numpy.int32(90)
   if (_0=="presolveNumclo"):
    return numpy.int32(91)
   if (_0=="presolveNumcup"):
    return numpy.int32(95)
   if (_0=="presolveNumcra"):
    return numpy.int32(94)
   if (_0=="presolveNumcnl"):
    return numpy.int32(92)
   if (_0=="presolveNumvar"):
    return numpy.int32(97)
   if (_0=="presolveNumvfr"):
    return numpy.int32(98)
   if (_0=="presolveNumvfx"):
    return numpy.int32(99)
   if (_0=="presolveNumvlo"):
    return numpy.int32(100)
   if (_0=="presolveNumvup"):
    return numpy.int32(103)
   if (_0=="presolveNumvra"):
    return numpy.int32(102)
   if (_0=="presolveNumvnl"):
    return numpy.int32(101)
   if (_0=="presolveNumnza"):
    return numpy.int32(96)
   if (_0=="presolveFnumcon"):
    return numpy.int32(60)
   if (_0=="presolveFnumcfr"):
    return numpy.int32(56)
   if (_0=="presolveFnumcfx"):
    return numpy.int32(57)
   if (_0=="presolveFnumclo"):
    return numpy.int32(58)
   if (_0=="presolveFnumcup"):
    return numpy.int32(62)
   if (_0=="presolveFnumcra"):
    return numpy.int32(61)
   if (_0=="presolveFnumcnl"):
    return numpy.int32(59)
   if (_0=="presolveFnumvar"):
    return numpy.int32(64)
   if (_0=="presolveFnumvfr"):
    return numpy.int32(65)
   if (_0=="presolveFnumvfx"):
    return numpy.int32(66)
   if (_0=="presolveFnumvlo"):
    return numpy.int32(67)
   if (_0=="presolveFnumvup"):
    return numpy.int32(70)
   if (_0=="presolveFnumvra"):
    return numpy.int32(69)
   if (_0=="presolveFnumvnl"):
    return numpy.int32(68)
   if (_0=="presolveFnumnza"):
    return numpy.int32(63)
   if (_0=="presolveNumElimns"):
    return numpy.int32(84)
   if (_0=="presolveEliNumTries"):
    return numpy.int32(55)
   if (_0=="presolveEliNumFreedCon"):
    return numpy.int32(53)
   if (_0=="presolveEliNumFreedConTotal"):
    return numpy.int32(54)
   if (_0=="presolveLindepNumTries"):
    return numpy.int32(75)
   if (_0=="presolveNumPrimalLinDeps"):
    return numpy.int32(87)
   if (_0=="presolveNumDualLinDeps"):
    return numpy.int32(83)
   if (_0=="presolveForceConNum"):
    return numpy.int32(71)
   if (_0=="presolveForceConNumVar"):
    return numpy.int32(72)
   if (_0=="presolveForceVarNum"):
    return numpy.int32(73)
   if (_0=="presolveForceVarNumCon"):
    return numpy.int32(74)
   if (_0=="presolvePivOnConNum"):
    return numpy.int32(105)
   if (_0=="presolveNumDouBlocks"):
    return numpy.int32(80)
   if (_0=="presolveNumSimplifiedDouBlocks"):
    return numpy.int32(88)
   if (_0=="presolveSizeSimplifiedDouBlocks"):
    return numpy.int32(106)
   if (_0=="presolveAccNumDupVarInNrmtwo"):
    return numpy.int32(52)
   if (_0=="presolveAccNumDoubletonChainInNrmtwo"):
    return numpy.int32(51)
   if (_0=="intpntFactorNum"):
    return numpy.int32(15)
   if (_0=="intpntFactorNumSolve"):
    return numpy.int32(19)
   if (_0=="simplexPrimalHotstartNumBasics"):
    return numpy.int32(134)
   if (_0=="simplexPrimalHotstartBasisRank"):
    return numpy.int32(133)
   if (_0=="simplexDualHotstartNumBasics"):
    return numpy.int32(128)
   if (_0=="simplexDualHotstartBasisRank"):
    return numpy.int32(127)
   if (_0=="intpntGpOrderEmployed"):
    return numpy.int32(29)
   if (_0=="numLuFactorizations"):
    return numpy.int32(48)
   if (_0=="simplexPwlNumPotential"):
    return numpy.int32(140)
   if (_0=="simplexPwlNumUsed"):
    return numpy.int32(141)
   if (_0=="simplexPwlNumVariables"):
    return numpy.int32(142)
   if (_0=="simplexPwlMinNumBreakpoints"):
    return numpy.int32(139)
   if (_0=="simplexPwlMaxNumBreakpoints"):
    return numpy.int32(137)
   if (_0=="simplexPwlMaxNz"):
    return numpy.int32(138)
   if (_0=="simplexPwlNzReduction"):
    return numpy.int32(143)
   if (_0=="simplexNumSetbacks"):
    return numpy.int32(131)
   if (_0=="simplexPrimalNumSetbacks"):
    return numpy.int32(135)
   if (_0=="simplexDualNumSetbacks"):
    return numpy.int32(129)
   if (_0=="simplexPrimalFeasNa"):
    return numpy.int32(132)
   if (_0=="simplexDualFeasNa"):
    return numpy.int32(126)
   if (_0=="simplexPrimalObjNa"):
    return numpy.int32(136)
   if (_0=="simplexDualObjNa"):
    return numpy.int32(130)
   if (_0=="simNumPrimalBoundswaps"):
    return numpy.int32(125)
   if (_0=="simNumDualBoundswaps"):
    return numpy.int32(123)
   if (_0=="simNumDualIntegerPivots"):
    return numpy.int32(124)
   if (_0=="purifyNumRow"):
    return numpy.int32(117)
   if (_0=="purifyNumVar"):
    return numpy.int32(118)
   if (_0=="purifyPNumNullRow"):
    return numpy.int32(119)
   if (_0=="purifyPNumSingletonCol"):
    return numpy.int32(120)
   if (_0=="purifyCrashL11NumRow"):
    return numpy.int32(107)
   if (_0=="purifyCrashL22NumRow"):
    return numpy.int32(108)
   if (_0=="purifyCrashL33NumRow"):
    return numpy.int32(110)
   if (_0=="purifyCrashL33NumCol"):
    return numpy.int32(109)
   if (_0=="purifyCrashSingularity"):
    return numpy.int32(111)
   if (_0=="purifyPrimalNumBypass"):
    return numpy.int32(122)
   if (_0=="purifyPrimalInitNumSuperBasics"):
    return numpy.int32(121)
   if (_0=="purifyDualNumBypass"):
    return numpy.int32(116)
   if (_0=="purifyDualInitNumSuperBasics"):
    return numpy.int32(115)
   if (_0=="purifyDualInitNumBasisRowSingletons"):
    return numpy.int32(113)
   if (_0=="purifyDualInitNumBasisColSingletons"):
    return numpy.int32(112)
   if (_0=="purifyDualInitNumSuperBasicRowSingletons"):
    return numpy.int32(114)
   if (_0=="biPrimalInfo"):
    return numpy.int32(3)
   if (_0=="biDualInfo"):
    return numpy.int32(1)
   if (_0=="biPrimalFeasInfo"):
    return numpy.int32(2)
   if (_0=="biDualFeasInfo"):
    return numpy.int32(0)
   if (_0=="presolveLindepNumTruncTries"):
    return numpy.int32(76)
   if (_0=="foldingNumvarBefore"):
    return numpy.int32(11)
   if (_0=="foldingNumvarAfter"):
    return numpy.int32(10)
   if (_0=="foldingNumconBefore"):
    return numpy.int32(9)
   if (_0=="foldingNumconAfter"):
    return numpy.int32(8)
   if (_0=="foldingStatus"):
    return numpy.int32(12)
   if (_0=="foldingBiPrimalFeasInfoIsValid"):
    return numpy.int32(6)
   if (_0=="foldingBiPrimalObjInfoIsValid"):
    return numpy.int32(7)
   if (_0=="foldingBiDualFeasInfoIsValid"):
    return numpy.int32(4)
   if (_0=="foldingBiDualObjInfoIsValid"):
    return numpy.int32(5)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1internal_1dinf_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1internal_1dinf_1value_S(_0)
  @staticmethod
  def __string_1to_1internal_1dinf_1value_S(_0):
   if (_0=="sensitivityPrimalTime"):
    return numpy.int32(97)
   if (_0=="sensitivityDualTime"):
    return numpy.int32(96)
   if (_0=="intpntGfeas"):
    return numpy.int32(72)
   if (_0=="intpntMu"):
    return numpy.int32(79)
   if (_0=="intpntInitIterTime"):
    return numpy.int32(74)
   if (_0=="intpntFactorTime"):
    return numpy.int32(70)
   if (_0=="intpntInitSearchTime"):
    return numpy.int32(75)
   if (_0=="intpntFormSearchTime"):
    return numpy.int32(71)
   if (_0=="intpntCorrectorTime"):
    return numpy.int32(17)
   if (_0=="intpntUpdateTime"):
    return numpy.int32(84)
   if (_0=="intpntFactorSetupTime"):
    return numpy.int32(63)
   if (_0=="intpntFactorSchurTime"):
    return numpy.int32(56)
   if (_0=="intpntFactorHatSchurTime"):
    return numpy.int32(53)
   if (_0=="intpntFactorHatSchurPushTime"):
    return numpy.int32(52)
   if (_0=="intpntFactorHatSchurPullTime"):
    return numpy.int32(50)
   if (_0=="intpntFactorBarSchurTime"):
    return numpy.int32(22)
   if (_0=="intpntFactorBarSchurDeTabTime"):
    return numpy.int32(18)
   if (_0=="intpntFactorBarSchurSpTabTime"):
    return numpy.int32(21)
   if (_0=="intpntFactorSparseLTime"):
    return numpy.int32(67)
   if (_0=="intpntFactorSparseLUpdateLastTime"):
    return numpy.int32(69)
   if (_0=="intpntFactorSparseLFactorLastTime"):
    return numpy.int32(65)
   if (_0=="intpntFactorDenseLTime"):
    return numpy.int32(45)
   if (_0=="intpntFactorDenseTime"):
    return numpy.int32(46)
   if (_0=="intpntFactorDenseDotaTime"):
    return numpy.int32(33)
   if (_0=="intpntFactorDenseDotaSolveTime"):
    return numpy.int32(32)
   if (_0=="intpntFactorDenseDotatdotaTime"):
    return numpy.int32(35)
   if (_0=="intpntFactorDenseDotlInitTime"):
    return numpy.int32(42)
   if (_0=="intpntFactorDenseDotlFactorTime"):
    return numpy.int32(41)
   if (_0=="intpntFactorBarSchurUpdateTime"):
    return numpy.int32(30)
   if (_0=="intpntFactorBarSchurUpdateCompressedETime"):
    return numpy.int32(23)
   if (_0=="intpntFactorBarSchurUpdateSparseTime"):
    return numpy.int32(29)
   if (_0=="intpntFactorBarSchurUpdateSparseSyr2kTime"):
    return numpy.int32(28)
   if (_0=="intpntFactorBarSchurUpdateSparseDotTime"):
    return numpy.int32(27)
   if (_0=="intpntFactorBarSchurUpdateDenseTime"):
    return numpy.int32(26)
   if (_0=="intpntFactorBarSchurUpdateDenseSyr2kTime"):
    return numpy.int32(25)
   if (_0=="intpntFactorBarSchurUpdateDenseDotTime"):
    return numpy.int32(24)
   if (_0=="intpntFactorBarSchurPushTime"):
    return numpy.int32(20)
   if (_0=="intpntIterNonCorrectorFlops"):
    return numpy.int32(76)
   if (_0=="intpntIterOneCorrectorFlops"):
    return numpy.int32(77)
   if (_0=="intpntSolveTime"):
    return numpy.int32(83)
   if (_0=="intpntIterRefTime"):
    return numpy.int32(78)
   if (_0=="intpntSolveSparseLTime"):
    return numpy.int32(82)
   if (_0=="intpntSolveDenseLTime"):
    return numpy.int32(81)
   if (_0=="intpntFactorSetupFlops"):
    return numpy.int32(58)
   if (_0=="intpntFactorSetupHatSchurFlops"):
    return numpy.int32(61)
   if (_0=="intpntFactorSchurFlops"):
    return numpy.int32(55)
   if (_0=="intpntFactorHatSchurFlops"):
    return numpy.int32(48)
   if (_0=="intpntFactorHatSchurPushFlops"):
    return numpy.int32(51)
   if (_0=="intpntFactorHatSchurPullFlops"):
    return numpy.int32(49)
   if (_0=="intpntFactorBarSchurFlops"):
    return numpy.int32(19)
   if (_0=="intpntFactorSparseLFlops"):
    return numpy.int32(66)
   if (_0=="intpntFactorMlOrderSparseLFlops"):
    return numpy.int32(54)
   if (_0=="intpntFactorGpOrderSparseLFlops"):
    return numpy.int32(47)
   if (_0=="intpntFactorSparseLUpdateLastFlops"):
    return numpy.int32(68)
   if (_0=="intpntFactorSparseLFactorLastFlops"):
    return numpy.int32(64)
   if (_0=="intpntFactorDenseLFlops"):
    return numpy.int32(44)
   if (_0=="intpntFactorDenseFlops"):
    return numpy.int32(43)
   if (_0=="intpntFactorDenseDotaFlops"):
    return numpy.int32(31)
   if (_0=="intpntFactorDenseDotatdotaFlops"):
    return numpy.int32(34)
   if (_0=="intpntFactorDenseDotlFactor_initFlops"):
    return numpy.int32(39)
   if (_0=="intpntFactorDenseDotlFactorFlops"):
    return numpy.int32(40)
   if (_0=="intpntFactorDenseDotl11FactorFlops"):
    return numpy.int32(36)
   if (_0=="intpntFactorDenseDotl21FactorFlops"):
    return numpy.int32(37)
   if (_0=="intpntFactorDenseDotl22FactorFlops"):
    return numpy.int32(38)
   if (_0=="presolvePrimalLinDepTime"):
    return numpy.int32(91)
   if (_0=="presolveDualLinDepTime"):
    return numpy.int32(87)
   if (_0=="presolveAcoltTime"):
    return numpy.int32(85)
   if (_0=="presolveSetupTime"):
    return numpy.int32(92)
   if (_0=="presolveCheckproTime"):
    return numpy.int32(86)
   if (_0=="presolveDupconTime"):
    return numpy.int32(88)
   if (_0=="presolveDupvarTime"):
    return numpy.int32(89)
   if (_0=="presolveFinalTime"):
    return numpy.int32(90)
   if (_0=="presolveSubDomvarTime"):
    return numpy.int32(93)
   if (_0=="presolveSubRelaxTime"):
    return numpy.int32(94)
   if (_0=="primalSimplexInftime"):
    return numpy.int32(95)
   if (_0=="dualSimplexInftime"):
    return numpy.int32(10)
   if (_0=="intpntGpOrderSavedFlops"):
    return numpy.int32(73)
   if (_0=="intpntFactorSetupDetectDenseTime"):
    return numpy.int32(57)
   if (_0=="intpntFactorSetupMlOrderTime"):
    return numpy.int32(62)
   if (_0=="intpntFactorSetupGpOrderTime"):
    return numpy.int32(60)
   if (_0=="intpntFactorSetupGpOrderPostTime"):
    return numpy.int32(59)
   if (_0=="biInitTime"):
    return numpy.int32(5)
   if (_0=="biFactorTime"):
    return numpy.int32(3)
   if (_0=="biFactorWork"):
    return numpy.int32(4)
   if (_0=="biPrimalDone"):
    return numpy.int32(7)
   if (_0=="biDualDone"):
    return numpy.int32(0)
   if (_0=="simplexBasiscondition"):
    return numpy.int32(98)
   if (_0=="simplexPrimalObj"):
    return numpy.int32(102)
   if (_0=="simplexPrimalFeas"):
    return numpy.int32(101)
   if (_0=="simplexDualObj"):
    return numpy.int32(100)
   if (_0=="simplexDualFeas"):
    return numpy.int32(99)
   if (_0=="biInitialBasisCond"):
    return numpy.int32(6)
   if (_0=="biPrimalObj"):
    return numpy.int32(9)
   if (_0=="biDualObj"):
    return numpy.int32(2)
   if (_0=="biPrimalFeas"):
    return numpy.int32(8)
   if (_0=="biDualFeas"):
    return numpy.int32(1)
   if (_0=="intpntPurifyTime"):
    return numpy.int32(80)
   if (_0=="foldingUniqueNzRatio"):
    return numpy.int32(16)
   if (_0=="foldingBiCrashTime"):
    return numpy.int32(11)
   if (_0=="foldingBiOptimizerPrimalFeas"):
    return numpy.int32(14)
   if (_0=="foldingBiOptimizerPrimalObj"):
    return numpy.int32(15)
   if (_0=="foldingBiOptimizerDualFeas"):
    return numpy.int32(12)
   if (_0=="foldingBiOptimizerDualObj"):
    return numpy.int32(13)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1inftype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1inftype_1value_S(_0)
  @staticmethod
  def __string_1to_1inftype_1value_S(_0):
   if (_0=="douType"):
    return numpy.int32(0)
   if (_0=="intType"):
    return numpy.int32(1)
   if (_0=="lintType"):
    return numpy.int32(2)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1iinfitem_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1iinfitem_1value_S(_0)
  @staticmethod
  def __string_1to_1iinfitem_1value_S(_0):
   if (_0=="anaProNumCon"):
    return numpy.int32(0)
   if (_0=="anaProNumConLo"):
    return numpy.int32(3)
   if (_0=="anaProNumConUp"):
    return numpy.int32(5)
   if (_0=="anaProNumConRa"):
    return numpy.int32(4)
   if (_0=="anaProNumConEq"):
    return numpy.int32(1)
   if (_0=="anaProNumConFr"):
    return numpy.int32(2)
   if (_0=="anaProNumVar"):
    return numpy.int32(6)
   if (_0=="anaProNumVarLo"):
    return numpy.int32(12)
   if (_0=="anaProNumVarUp"):
    return numpy.int32(14)
   if (_0=="anaProNumVarRa"):
    return numpy.int32(13)
   if (_0=="anaProNumVarEq"):
    return numpy.int32(9)
   if (_0=="anaProNumVarFr"):
    return numpy.int32(10)
   if (_0=="anaProNumVarCont"):
    return numpy.int32(8)
   if (_0=="anaProNumVarBin"):
    return numpy.int32(7)
   if (_0=="anaProNumVarInt"):
    return numpy.int32(11)
   if (_0=="optimizeResponse"):
    return numpy.int32(106)
   if (_0=="presolveNumPrimalPerturbations"):
    return numpy.int32(107)
   if (_0=="intpntIter"):
    return numpy.int32(17)
   if (_0=="intpntFactorDimDense"):
    return numpy.int32(16)
   if (_0=="intpntSolveDual"):
    return numpy.int32(19)
   if (_0=="mioNodeDepth"):
    return numpy.int32(41)
   if (_0=="mioNumvar"):
    return numpy.int32(81)
   if (_0=="mioNumbin"):
    return numpy.int32(65)
   if (_0=="mioNumint"):
    return numpy.int32(75)
   if (_0=="mioNumcont"):
    return numpy.int32(70)
   if (_0=="mioNumcon"):
    return numpy.int32(67)
   if (_0=="mioNumcone"):
    return numpy.int32(68)
   if (_0=="mioNumqcones"):
    return numpy.int32(79)
   if (_0=="mioNumrqcones"):
    return numpy.int32(80)
   if (_0=="mioNumpexpcones"):
    return numpy.int32(77)
   if (_0=="mioNumdexpcones"):
    return numpy.int32(72)
   if (_0=="mioNumppowcones"):
    return numpy.int32(78)
   if (_0=="mioNumdpowcones"):
    return numpy.int32(74)
   if (_0=="mioNumconevar"):
    return numpy.int32(69)
   if (_0=="mioNumbinconevar"):
    return numpy.int32(66)
   if (_0=="mioNumintconevar"):
    return numpy.int32(76)
   if (_0=="mioNumcontconevar"):
    return numpy.int32(71)
   if (_0=="mioNumdjc"):
    return numpy.int32(73)
   if (_0=="mioPresolvedNumvar"):
    return numpy.int32(99)
   if (_0=="mioPresolvedNumbin"):
    return numpy.int32(83)
   if (_0=="mioPresolvedNumint"):
    return numpy.int32(93)
   if (_0=="mioPresolvedNumcont"):
    return numpy.int32(88)
   if (_0=="mioPresolvedNumcon"):
    return numpy.int32(85)
   if (_0=="mioPresolvedNumcone"):
    return numpy.int32(86)
   if (_0=="mioPresolvedNumqcones"):
    return numpy.int32(97)
   if (_0=="mioPresolvedNumrqcones"):
    return numpy.int32(98)
   if (_0=="mioPresolvedNumpexpcones"):
    return numpy.int32(95)
   if (_0=="mioPresolvedNumdexpcones"):
    return numpy.int32(90)
   if (_0=="mioPresolvedNumppowcones"):
    return numpy.int32(96)
   if (_0=="mioPresolvedNumdpowcones"):
    return numpy.int32(92)
   if (_0=="mioPresolvedNumconevar"):
    return numpy.int32(87)
   if (_0=="mioPresolvedNumbinconevar"):
    return numpy.int32(84)
   if (_0=="mioPresolvedNumintconevar"):
    return numpy.int32(94)
   if (_0=="mioPresolvedNumcontconevar"):
    return numpy.int32(89)
   if (_0=="mioPresolvedNumdjc"):
    return numpy.int32(91)
   if (_0=="mioFinalNumvar"):
    return numpy.int32(39)
   if (_0=="mioFinalNumbin"):
    return numpy.int32(23)
   if (_0=="mioFinalNumint"):
    return numpy.int32(33)
   if (_0=="mioFinalNumcont"):
    return numpy.int32(28)
   if (_0=="mioFinalNumcon"):
    return numpy.int32(25)
   if (_0=="mioFinalNumcone"):
    return numpy.int32(26)
   if (_0=="mioFinalNumqcones"):
    return numpy.int32(37)
   if (_0=="mioFinalNumrqcones"):
    return numpy.int32(38)
   if (_0=="mioFinalNumpexpcones"):
    return numpy.int32(35)
   if (_0=="mioFinalNumdexpcones"):
    return numpy.int32(30)
   if (_0=="mioFinalNumppowcones"):
    return numpy.int32(36)
   if (_0=="mioFinalNumdpowcones"):
    return numpy.int32(32)
   if (_0=="mioFinalNumconevar"):
    return numpy.int32(27)
   if (_0=="mioFinalNumbinconevar"):
    return numpy.int32(24)
   if (_0=="mioFinalNumintconevar"):
    return numpy.int32(34)
   if (_0=="mioFinalNumcontconevar"):
    return numpy.int32(29)
   if (_0=="mioFinalNumdjc"):
    return numpy.int32(31)
   if (_0=="mioCliqueTableSize"):
    return numpy.int32(21)
   if (_0=="mioConstructSolution"):
    return numpy.int32(22)
   if (_0=="mioInitialFeasibleSolution"):
    return numpy.int32(40)
   if (_0=="mioNumIntSolutions"):
    return numpy.int32(47)
   if (_0=="mioObjBoundDefined"):
    return numpy.int32(82)
   if (_0=="mioNumActiveNodes"):
    return numpy.int32(42)
   if (_0=="mioNumRelax"):
    return numpy.int32(48)
   if (_0=="mioNumSolvedNodes"):
    return numpy.int32(64)
   if (_0=="mioNumBranch"):
    return numpy.int32(46)
   if (_0=="mioNumRestarts"):
    return numpy.int32(50)
   if (_0=="mioNumRootCutRounds"):
    return numpy.int32(51)
   if (_0=="mioNumActiveRootCuts"):
    return numpy.int32(43)
   if (_0=="mioTotalNumSelectedCuts"):
    return numpy.int32(101)
   if (_0=="mioNumSelectedCmirCuts"):
    return numpy.int32(53)
   if (_0=="mioNumSelectedCliqueCuts"):
    return numpy.int32(52)
   if (_0=="mioNumSelectedImpliedBoundCuts"):
    return numpy.int32(55)
   if (_0=="mioNumSelectedKnapsackCoverCuts"):
    return numpy.int32(56)
   if (_0=="mioNumSelectedGomoryCuts"):
    return numpy.int32(54)
   if (_0=="mioNumSelectedLiproCuts"):
    return numpy.int32(57)
   if (_0=="mioTotalNumSeparatedCuts"):
    return numpy.int32(102)
   if (_0=="mioNumSeparatedCmirCuts"):
    return numpy.int32(59)
   if (_0=="mioNumSeparatedCliqueCuts"):
    return numpy.int32(58)
   if (_0=="mioNumSeparatedImpliedBoundCuts"):
    return numpy.int32(61)
   if (_0=="mioNumSeparatedKnapsackCoverCuts"):
    return numpy.int32(62)
   if (_0=="mioNumSeparatedGomoryCuts"):
    return numpy.int32(60)
   if (_0=="mioNumSeparatedLiproCuts"):
    return numpy.int32(63)
   if (_0=="mioNumRepeatedPresolve"):
    return numpy.int32(49)
   if (_0=="mioNumBlocksSolvedInPresolve"):
    return numpy.int32(45)
   if (_0=="mioNumBlocksSolvedInBb"):
    return numpy.int32(44)
   if (_0=="mioUserObjCut"):
    return numpy.int32(103)
   if (_0=="mioRelgapSatisfied"):
    return numpy.int32(100)
   if (_0=="mioAbsgapSatisfied"):
    return numpy.int32(20)
   if (_0=="foldingApplied"):
    return numpy.int32(15)
   if (_0=="rdProtype"):
    return numpy.int32(116)
   if (_0=="rdNumcon"):
    return numpy.int32(111)
   if (_0=="rdNumvar"):
    return numpy.int32(115)
   if (_0=="rdNumbarvar"):
    return numpy.int32(110)
   if (_0=="rdNumintvar"):
    return numpy.int32(113)
   if (_0=="rdNumq"):
    return numpy.int32(114)
   if (_0=="simDualDegIter"):
    return numpy.int32(117)
   if (_0=="simDualInfIter"):
    return numpy.int32(120)
   if (_0=="simDualHotstartLu"):
    return numpy.int32(119)
   if (_0=="simPrimalIter"):
    return numpy.int32(128)
   if (_0=="simDualIter"):
    return numpy.int32(121)
   if (_0=="intpntNumThreads"):
    return numpy.int32(18)
   if (_0=="simPrimalInfIter"):
    return numpy.int32(127)
   if (_0=="simPrimalDegIter"):
    return numpy.int32(124)
   if (_0=="simPrimalHotstart"):
    return numpy.int32(125)
   if (_0=="simPrimalHotstartLu"):
    return numpy.int32(126)
   if (_0=="simDualHotstart"):
    return numpy.int32(118)
   if (_0=="solItrProsta"):
    return numpy.int32(134)
   if (_0=="solItrSolsta"):
    return numpy.int32(135)
   if (_0=="solBasProsta"):
    return numpy.int32(130)
   if (_0=="solBasSolsta"):
    return numpy.int32(131)
   if (_0=="solItgProsta"):
    return numpy.int32(132)
   if (_0=="solItgSolsta"):
    return numpy.int32(133)
   if (_0=="simNumcon"):
    return numpy.int32(122)
   if (_0=="simNumvar"):
    return numpy.int32(123)
   if (_0=="optNumcon"):
    return numpy.int32(104)
   if (_0=="optNumvar"):
    return numpy.int32(105)
   if (_0=="stoNumARealloc"):
    return numpy.int32(136)
   if (_0=="rdNumcone"):
    return numpy.int32(112)
   if (_0=="simSolveDual"):
    return numpy.int32(129)
   if (_0=="purifyPrimalSuccess"):
    return numpy.int32(109)
   if (_0=="purifyDualSuccess"):
    return numpy.int32(108)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1internal_1liinf_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1internal_1liinf_1value_S(_0)
  @staticmethod
  def __string_1to_1internal_1liinf_1value_S(_0):
   if (_0=="intpntLenbarvar"):
    return numpy.int32(8)
   if (_0=="presolveStackSize"):
    return numpy.int32(9)
   if (_0=="intpntFactorNumNzBefore"):
    return numpy.int32(7)
   if (_0=="intpntFactorNumNzAfter"):
    return numpy.int32(6)
   if (_0=="intpntFactorGpOrderSavedNzs"):
    return numpy.int32(5)
   if (_0=="simplexPrimalIter"):
    return numpy.int32(28)
   if (_0=="simplexDualIter"):
    return numpy.int32(10)
   if (_0=="simplexDualpurifyIter"):
    return numpy.int32(12)
   if (_0=="simplexTicks"):
    return numpy.int32(30)
   if (_0=="simplexPrimalTicks"):
    return numpy.int32(29)
   if (_0=="simplexDualTicks"):
    return numpy.int32(11)
   if (_0=="simplexNumGradfreeze"):
    return numpy.int32(20)
   if (_0=="simplexNumMovelock"):
    return numpy.int32(21)
   if (_0=="simplexNumDualIllposedCer"):
    return numpy.int32(16)
   if (_0=="simplexNumCand"):
    return numpy.int32(15)
   if (_0=="simplexNumProgressStall"):
    return numpy.int32(24)
   if (_0=="simplexNumRejectStepvalue"):
    return numpy.int32(26)
   if (_0=="simplexNumRejectPivot"):
    return numpy.int32(25)
   if (_0=="simplexNumSingularBases"):
    return numpy.int32(27)
   if (_0=="simplexNumFatalFeasibilityLoss"):
    return numpy.int32(17)
   if (_0=="simplexNumFatalGradientStall"):
    return numpy.int32(18)
   if (_0=="simplexNumFatalPurificationStall"):
    return numpy.int32(19)
   if (_0=="simplexNumPrematureGradscoreweightsInit"):
    return numpy.int32(23)
   if (_0=="simplexNumPrecisionBoost"):
    return numpy.int32(22)
   if (_0=="simplexLuFactorTicks"):
    return numpy.int32(13)
   if (_0=="simplexLuSolveTicks"):
    return numpy.int32(14)
   if (_0=="foldingTicks"):
    return numpy.int32(4)
   if (_0=="foldingNnzBefore"):
    return numpy.int32(2)
   if (_0=="foldingNnzAfter"):
    return numpy.int32(1)
   if (_0=="foldingNnzTouched"):
    return numpy.int32(3)
   if (_0=="foldingBiUnfoldIter"):
    return numpy.int32(0)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1liinfitem_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1liinfitem_1value_S(_0)
  @staticmethod
  def __string_1to_1liinfitem_1value_S(_0):
   if (_0=="anaProScalarizedConstraintMatrixNumRows"):
    return numpy.int32(2)
   if (_0=="anaProScalarizedConstraintMatrixNumColumns"):
    return numpy.int32(0)
   if (_0=="anaProScalarizedConstraintMatrixNumNz"):
    return numpy.int32(1)
   if (_0=="mioAnz"):
    return numpy.int32(10)
   if (_0=="mioPresolvedAnz"):
    return numpy.int32(15)
   if (_0=="mioFinalAnz"):
    return numpy.int32(11)
   if (_0=="mioSimplexIter"):
    return numpy.int32(16)
   if (_0=="mioIntpntIter"):
    return numpy.int32(12)
   if (_0=="mioNumPrimIllposedCer"):
    return numpy.int32(14)
   if (_0=="mioNumDualIllposedCer"):
    return numpy.int32(13)
   if (_0=="biPrimalIter"):
    return numpy.int32(5)
   if (_0=="biDualIter"):
    return numpy.int32(4)
   if (_0=="biCleanIter"):
    return numpy.int32(3)
   if (_0=="intpntFactorNumNz"):
    return numpy.int32(9)
   if (_0=="foldingBiPrimalIter"):
    return numpy.int32(8)
   if (_0=="foldingBiDualIter"):
    return numpy.int32(6)
   if (_0=="foldingBiOptimizerIter"):
    return numpy.int32(7)
   if (_0=="rdNumacc"):
    return numpy.int32(17)
   if (_0=="rdNumdjc"):
    return numpy.int32(19)
   if (_0=="rdNumanz"):
    return numpy.int32(18)
   if (_0=="rdNumqnz"):
    return numpy.int32(20)
   if (_0=="simplexIter"):
    return numpy.int32(21)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1dparam_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1dparam_1value_S(_0)
  @staticmethod
  def __string_1to_1dparam_1value_S(_0):
   if (_0=="dataTolCjLarge"):
    return numpy.int32(12)
   if (_0=="dataTolCHuge"):
    return numpy.int32(11)
   if (_0=="dataTolAijLarge"):
    return numpy.int32(8)
   if (_0=="dataTolAijHuge"):
    return numpy.int32(7)
   if (_0=="dataSymMatTol"):
    return numpy.int32(4)
   if (_0=="dataSymMatTolLarge"):
    return numpy.int32(6)
   if (_0=="dataSymMatTolHuge"):
    return numpy.int32(5)
   if (_0=="dataTolBoundInf"):
    return numpy.int32(9)
   if (_0=="dataTolBoundWrn"):
    return numpy.int32(10)
   if (_0=="dataTolQij"):
    return numpy.int32(13)
   if (_0=="dataTolX"):
    return numpy.int32(14)
   if (_0=="semidefiniteTolApprox"):
    return numpy.int32(57)
   if (_0=="optimizerMaxTime"):
    return numpy.int32(50)
   if (_0=="optimizerMaxTicks"):
    return numpy.int32(49)
   if (_0=="lowerObjCut"):
    return numpy.int32(38)
   if (_0=="upperObjCut"):
    return numpy.int32(62)
   if (_0=="upperObjCutFiniteTrh"):
    return numpy.int32(63)
   if (_0=="lowerObjCutFiniteTrh"):
    return numpy.int32(39)
   if (_0=="intpntTolRelGap"):
    return numpy.int32(35)
   if (_0=="intpntTolStepSize"):
    return numpy.int32(37)
   if (_0=="simLuTolRelPiv"):
    return numpy.int32(58)
   if (_0=="intpntTolRelStep"):
    return numpy.int32(36)
   if (_0=="intpntTolPath"):
    return numpy.int32(32)
   if (_0=="intpntTolPfeas"):
    return numpy.int32(33)
   if (_0=="intpntTolDfeas"):
    return numpy.int32(28)
   if (_0=="intpntTolMuRed"):
    return numpy.int32(31)
   if (_0=="intpntTolInfeas"):
    return numpy.int32(30)
   if (_0=="intpntCoTolRelGap"):
    return numpy.int32(21)
   if (_0=="intpntCoTolPfeas"):
    return numpy.int32(20)
   if (_0=="intpntCoTolDfeas"):
    return numpy.int32(16)
   if (_0=="intpntCoTolMuRed"):
    return numpy.int32(18)
   if (_0=="intpntCoTolNearRel"):
    return numpy.int32(19)
   if (_0=="intpntCoTolInfeas"):
    return numpy.int32(17)
   if (_0=="intpntQoTolRelGap"):
    return numpy.int32(27)
   if (_0=="intpntQoTolPfeas"):
    return numpy.int32(26)
   if (_0=="intpntQoTolDfeas"):
    return numpy.int32(22)
   if (_0=="intpntQoTolMuRed"):
    return numpy.int32(24)
   if (_0=="intpntQoTolNearRel"):
    return numpy.int32(25)
   if (_0=="intpntQoTolInfeas"):
    return numpy.int32(23)
   if (_0=="intpntTolPsafe"):
    return numpy.int32(34)
   if (_0=="intpntTolDsafe"):
    return numpy.int32(29)
   if (_0=="mioMaxTime"):
    return numpy.int32(42)
   if (_0=="mioRelGapConst"):
    return numpy.int32(43)
   if (_0=="mioTolRelGap"):
    return numpy.int32(48)
   if (_0=="mioTolAbsGap"):
    return numpy.int32(44)
   if (_0=="mioTolAbsRelaxInt"):
    return numpy.int32(45)
   if (_0=="mioDjcMaxBigm"):
    return numpy.int32(41)
   if (_0=="mioCliqueTableSizeFactor"):
    return numpy.int32(40)
   if (_0=="simPrecisionScalingNormal"):
    return numpy.int32(60)
   if (_0=="simPrecisionScalingExtended"):
    return numpy.int32(59)
   if (_0=="basisTolX"):
    return numpy.int32(3)
   if (_0=="basisTolS"):
    return numpy.int32(2)
   if (_0=="basisRelTolS"):
    return numpy.int32(1)
   if (_0=="presolveTolX"):
    return numpy.int32(55)
   if (_0=="presolveTolPrimalInfeasPerturbation"):
    return numpy.int32(52)
   if (_0=="presolveTolS"):
    return numpy.int32(54)
   if (_0=="presolveTolAbsLindep"):
    return numpy.int32(51)
   if (_0=="presolveTolRelLindep"):
    return numpy.int32(53)
   if (_0=="foldingTolEq"):
    return numpy.int32(15)
   if (_0=="simplexAbsTolPiv"):
    return numpy.int32(61)
   if (_0=="mioTolFeas"):
    return numpy.int32(46)
   if (_0=="anaSolInfeasTol"):
    return numpy.int32(0)
   if (_0=="qcqoReformulateRelDropTol"):
    return numpy.int32(56)
   if (_0=="mioTolRelDualBoundImprovement"):
    return numpy.int32(47)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1feature_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1feature_1value_S(_0)
  @staticmethod
  def __string_1to_1feature_1value_S(_0):
   if (_0=="pts"):
    return numpy.int32(0)
   if (_0=="pton"):
    return numpy.int32(1)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1dinfitem_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1dinfitem_1value_S(_0)
  @staticmethod
  def __string_1to_1dinfitem_1value_S(_0):
   if (_0=="anaProScalarizedConstraintMatrixDensity"):
    return numpy.int32(0)
   if (_0=="biTime"):
    return numpy.int32(4)
   if (_0=="biPrimalTime"):
    return numpy.int32(3)
   if (_0=="biDualTime"):
    return numpy.int32(2)
   if (_0=="biCleanTime"):
    return numpy.int32(1)
   if (_0=="foldingBiUnfoldInitializeTime"):
    return numpy.int32(7)
   if (_0=="foldingBiUnfoldPrimalTime"):
    return numpy.int32(8)
   if (_0=="foldingBiUnfoldDualTime"):
    return numpy.int32(6)
   if (_0=="foldingBiOptimizeTime"):
    return numpy.int32(5)
   if (_0=="foldingBiUnfoldTime"):
    return numpy.int32(9)
   if (_0=="intpntTime"):
    return numpy.int32(19)
   if (_0=="intpntOrderTime"):
    return numpy.int32(16)
   if (_0=="intpntPrimalObj"):
    return numpy.int32(18)
   if (_0=="intpntDualObj"):
    return numpy.int32(13)
   if (_0=="intpntPrimalFeas"):
    return numpy.int32(17)
   if (_0=="intpntDualFeas"):
    return numpy.int32(12)
   if (_0=="intpntOptStatus"):
    return numpy.int32(15)
   if (_0=="simTime"):
    return numpy.int32(66)
   if (_0=="simPrimalTime"):
    return numpy.int32(65)
   if (_0=="simDualTime"):
    return numpy.int32(62)
   if (_0=="simObj"):
    return numpy.int32(64)
   if (_0=="simFeas"):
    return numpy.int32(63)
   if (_0=="mioTime"):
    return numpy.int32(47)
   if (_0=="mioRootPresolveTime"):
    return numpy.int32(43)
   if (_0=="mioRootOptimizerTime"):
    return numpy.int32(42)
   if (_0=="mioRootTime"):
    return numpy.int32(44)
   if (_0=="toConicTime"):
    return numpy.int32(114)
   if (_0=="mioConstructSolutionObj"):
    return numpy.int32(24)
   if (_0=="mioInitialFeasibleSolutionObj"):
    return numpy.int32(30)
   if (_0=="mioObjInt"):
    return numpy.int32(37)
   if (_0=="mioObjBound"):
    return numpy.int32(36)
   if (_0=="mioObjRelGap"):
    return numpy.int32(38)
   if (_0=="mioObjAbsGap"):
    return numpy.int32(35)
   if (_0=="mioUserObjCut"):
    return numpy.int32(48)
   if (_0=="mioCmirSeparationTime"):
    return numpy.int32(23)
   if (_0=="mioCliqueSeparationTime"):
    return numpy.int32(21)
   if (_0=="mioKnapsackCoverSeparationTime"):
    return numpy.int32(32)
   if (_0=="mioGmiSeparationTime"):
    return numpy.int32(27)
   if (_0=="mioImpliedBoundSeparationTime"):
    return numpy.int32(29)
   if (_0=="mioLiproSeparationTime"):
    return numpy.int32(34)
   if (_0=="mioRootCutSeparationTime"):
    return numpy.int32(41)
   if (_0=="mioCmirSelectionTime"):
    return numpy.int32(22)
   if (_0=="mioCliqueSelectionTime"):
    return numpy.int32(20)
   if (_0=="mioKnapsackCoverSelectionTime"):
    return numpy.int32(31)
   if (_0=="mioGmiSelectionTime"):
    return numpy.int32(26)
   if (_0=="mioImpliedBoundSelectionTime"):
    return numpy.int32(28)
   if (_0=="mioLiproSelectionTime"):
    return numpy.int32(33)
   if (_0=="mioRootCutSelectionTime"):
    return numpy.int32(40)
   if (_0=="mioProbingTime"):
    return numpy.int32(39)
   if (_0=="mioSymmetryDetectionTime"):
    return numpy.int32(45)
   if (_0=="optimizerTime"):
    return numpy.int32(50)
   if (_0=="optimizerTicks"):
    return numpy.int32(49)
   if (_0=="presolveTime"):
    return numpy.int32(53)
   if (_0=="mioSymmetryFactor"):
    return numpy.int32(46)
   if (_0=="mioDualBoundAfterPresolve"):
    return numpy.int32(25)
   if (_0=="presolveEliTime"):
    return numpy.int32(51)
   if (_0=="presolveLindepTime"):
    return numpy.int32(52)
   if (_0=="foldingTime"):
    return numpy.int32(11)
   if (_0=="foldingFactor"):
    return numpy.int32(10)
   if (_0=="readDataTime"):
    return numpy.int32(60)
   if (_0=="writeDataTime"):
    return numpy.int32(115)
   if (_0=="solItrPrimalObj"):
    return numpy.int32(108)
   if (_0=="solItrPviolcon"):
    return numpy.int32(111)
   if (_0=="solItrPviolvar"):
    return numpy.int32(113)
   if (_0=="solItrPviolbarvar"):
    return numpy.int32(110)
   if (_0=="solItrPviolcones"):
    return numpy.int32(112)
   if (_0=="solItrPviolacc"):
    return numpy.int32(109)
   if (_0=="solItrDualObj"):
    return numpy.int32(92)
   if (_0=="solItrDviolcon"):
    return numpy.int32(95)
   if (_0=="solItrDviolvar"):
    return numpy.int32(97)
   if (_0=="solItrDviolbarvar"):
    return numpy.int32(94)
   if (_0=="solItrDviolcones"):
    return numpy.int32(96)
   if (_0=="solItrDviolacc"):
    return numpy.int32(93)
   if (_0=="solItrNrmXc"):
    return numpy.int32(105)
   if (_0=="solItrNrmXx"):
    return numpy.int32(106)
   if (_0=="solItrNrmBarx"):
    return numpy.int32(99)
   if (_0=="solItrNrmY"):
    return numpy.int32(107)
   if (_0=="solItrNrmSlc"):
    return numpy.int32(100)
   if (_0=="solItrNrmSuc"):
    return numpy.int32(103)
   if (_0=="solItrNrmSlx"):
    return numpy.int32(101)
   if (_0=="solItrNrmSux"):
    return numpy.int32(104)
   if (_0=="solItrNrmSnx"):
    return numpy.int32(102)
   if (_0=="solItrNrmBars"):
    return numpy.int32(98)
   if (_0=="solBasPrimalObj"):
    return numpy.int32(78)
   if (_0=="solBasPviolcon"):
    return numpy.int32(79)
   if (_0=="solBasPviolvar"):
    return numpy.int32(80)
   if (_0=="solBasDualObj"):
    return numpy.int32(67)
   if (_0=="solBasDviolcon"):
    return numpy.int32(68)
   if (_0=="solBasDviolvar"):
    return numpy.int32(69)
   if (_0=="solBasNrmXc"):
    return numpy.int32(75)
   if (_0=="solBasNrmXx"):
    return numpy.int32(76)
   if (_0=="solBasNrmBarx"):
    return numpy.int32(70)
   if (_0=="solBasNrmY"):
    return numpy.int32(77)
   if (_0=="solBasNrmSlc"):
    return numpy.int32(71)
   if (_0=="solBasNrmSuc"):
    return numpy.int32(73)
   if (_0=="solBasNrmSlx"):
    return numpy.int32(72)
   if (_0=="solBasNrmSux"):
    return numpy.int32(74)
   if (_0=="solItgPrimalObj"):
    return numpy.int32(84)
   if (_0=="solItgPviolcon"):
    return numpy.int32(87)
   if (_0=="solItgPviolvar"):
    return numpy.int32(91)
   if (_0=="solItgPviolbarvar"):
    return numpy.int32(86)
   if (_0=="solItgPviolcones"):
    return numpy.int32(88)
   if (_0=="solItgPviolacc"):
    return numpy.int32(85)
   if (_0=="solItgPviolitg"):
    return numpy.int32(90)
   if (_0=="solItgPvioldjc"):
    return numpy.int32(89)
   if (_0=="solItgNrmXc"):
    return numpy.int32(82)
   if (_0=="solItgNrmXx"):
    return numpy.int32(83)
   if (_0=="solItgNrmBarx"):
    return numpy.int32(81)
   if (_0=="presolveTotalPrimalPerturbation"):
    return numpy.int32(54)
   if (_0=="intpntFactorNumFlops"):
    return numpy.int32(14)
   if (_0=="qcqoReformulateTime"):
    return numpy.int32(57)
   if (_0=="qcqoReformulateMaxPerturbation"):
    return numpy.int32(56)
   if (_0=="qcqoReformulateWorstCholeskyDiagScaling"):
    return numpy.int32(59)
   if (_0=="qcqoReformulateWorstCholeskyColumnScaling"):
    return numpy.int32(58)
   if (_0=="primalRepairPenaltyObj"):
    return numpy.int32(55)
   if (_0=="remoteTime"):
    return numpy.int32(61)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1solformat_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1solformat_1value_S(_0)
  @staticmethod
  def __string_1to_1solformat_1value_S(_0):
   if (_0=="extension"):
    return numpy.int32(0)
   if (_0=="b"):
    return numpy.int32(1)
   if (_0=="task"):
    return numpy.int32(2)
   if (_0=="jsonTask"):
    return numpy.int32(3)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1dataformat_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1dataformat_1value_S(_0)
  @staticmethod
  def __string_1to_1dataformat_1value_S(_0):
   if (_0=="extension"):
    return numpy.int32(0)
   if (_0=="mps"):
    return numpy.int32(1)
   if (_0=="lp"):
    return numpy.int32(2)
   if (_0=="op"):
    return numpy.int32(3)
   if (_0=="freeMps"):
    return numpy.int32(4)
   if (_0=="task"):
    return numpy.int32(5)
   if (_0=="ptf"):
    return numpy.int32(6)
   if (_0=="cb"):
    return numpy.int32(7)
   if (_0=="jsonTask"):
    return numpy.int32(8)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1symmattype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1symmattype_1value_S(_0)
  @staticmethod
  def __string_1to_1symmattype_1value_S(_0):
   if (_0=="sparse"):
    return numpy.int32(0)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1nametype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1nametype_1value_S(_0)
  @staticmethod
  def __string_1to_1nametype_1value_S(_0):
   if (_0=="gen"):
    return numpy.int32(0)
   if (_0=="mps"):
    return numpy.int32(1)
   if (_0=="lp"):
    return numpy.int32(2)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1domaintype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1domaintype_1value_S(_0)
  @staticmethod
  def __string_1to_1domaintype_1value_S(_0):
   if (_0=="r"):
    return numpy.int32(0)
   if (_0=="rzero"):
    return numpy.int32(1)
   if (_0=="rplus"):
    return numpy.int32(2)
   if (_0=="rminus"):
    return numpy.int32(3)
   if (_0=="quadraticCone"):
    return numpy.int32(4)
   if (_0=="rquadraticCone"):
    return numpy.int32(5)
   if (_0=="primalExpCone"):
    return numpy.int32(6)
   if (_0=="dualExpCone"):
    return numpy.int32(7)
   if (_0=="primalPowerCone"):
    return numpy.int32(8)
   if (_0=="dualPowerCone"):
    return numpy.int32(9)
   if (_0=="primalGeoMeanCone"):
    return numpy.int32(10)
   if (_0=="dualGeoMeanCone"):
    return numpy.int32(11)
   if (_0=="svecPsdCone"):
    return numpy.int32(12)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1conetype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1conetype_1value_S(_0)
  @staticmethod
  def __string_1to_1conetype_1value_S(_0):
   if (_0=="quad"):
    return numpy.int32(0)
   if (_0=="rquad"):
    return numpy.int32(1)
   if (_0=="pexp"):
    return numpy.int32(2)
   if (_0=="dexp"):
    return numpy.int32(3)
   if (_0=="ppow"):
    return numpy.int32(4)
   if (_0=="dpow"):
    return numpy.int32(5)
   if (_0=="zero"):
    return numpy.int32(6)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1compresstype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1compresstype_1value_S(_0)
  @staticmethod
  def __string_1to_1compresstype_1value_S(_0):
   if (_0=="none"):
    return numpy.int32(0)
   if (_0=="free"):
    return numpy.int32(1)
   if (_0=="gzip"):
    return numpy.int32(2)
   if (_0=="zstd"):
    return numpy.int32(3)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1callbackcode_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1callbackcode_1value_S(_0)
  @staticmethod
  def __string_1to_1callbackcode_1value_S(_0):
   if (_0=="beginRootCutgen"):
    return numpy.int32(29)
   if (_0=="imRootCutgen"):
    return numpy.int32(88)
   if (_0=="endRootCutgen"):
    return numpy.int32(66)
   if (_0=="beginSolveRootRelax"):
    return numpy.int32(31)
   if (_0=="endSolveRootRelax"):
    return numpy.int32(69)
   if (_0=="beginOptimizer"):
    return numpy.int32(19)
   if (_0=="endOptimizer"):
    return numpy.int32(56)
   if (_0=="beginFolding"):
    return numpy.int32(7)
   if (_0=="endFolding"):
    return numpy.int32(44)
   if (_0=="beginFoldingBi"):
    return numpy.int32(8)
   if (_0=="beginFoldingBiInitialize"):
    return numpy.int32(10)
   if (_0=="endFoldingBiInitialize"):
    return numpy.int32(47)
   if (_0=="beginFoldingBiPrimal"):
    return numpy.int32(12)
   if (_0=="foldingBiPrimal"):
    return numpy.int32(74)
   if (_0=="endFoldingBiPrimal"):
    return numpy.int32(49)
   if (_0=="beginFoldingBiDual"):
    return numpy.int32(9)
   if (_0=="foldingBiDual"):
    return numpy.int32(72)
   if (_0=="endFoldingBiDual"):
    return numpy.int32(46)
   if (_0=="beginFoldingBiOptimizer"):
    return numpy.int32(11)
   if (_0=="foldingBiOptimizer"):
    return numpy.int32(73)
   if (_0=="endFoldingBiOptimizer"):
    return numpy.int32(48)
   if (_0=="endFoldingBi"):
    return numpy.int32(45)
   if (_0=="beginPresolve"):
    return numpy.int32(20)
   if (_0=="updatePresolve"):
    return numpy.int32(102)
   if (_0=="endPresolve"):
    return numpy.int32(57)
   if (_0=="beginIntpnt"):
    return numpy.int32(15)
   if (_0=="intpnt"):
    return numpy.int32(90)
   if (_0=="endIntpnt"):
    return numpy.int32(52)
   if (_0=="beginConic"):
    return numpy.int32(1)
   if (_0=="conic"):
    return numpy.int32(34)
   if (_0=="endConic"):
    return numpy.int32(38)
   if (_0=="primalSimplex"):
    return numpy.int32(93)
   if (_0=="dualSimplex"):
    return numpy.int32(36)
   if (_0=="beginBi"):
    return numpy.int32(0)
   if (_0=="endBi"):
    return numpy.int32(37)
   if (_0=="beginInitializeBi"):
    return numpy.int32(14)
   if (_0=="endInitializeBi"):
    return numpy.int32(51)
   if (_0=="beginPrimalBi"):
    return numpy.int32(21)
   if (_0=="updatePrimalBi"):
    return numpy.int32(103)
   if (_0=="endPrimalBi"):
    return numpy.int32(58)
   if (_0=="beginDualBi"):
    return numpy.int32(2)
   if (_0=="updateDualBi"):
    return numpy.int32(99)
   if (_0=="endDualBi"):
    return numpy.int32(39)
   if (_0=="beginOptimizeBi"):
    return numpy.int32(18)
   if (_0=="optimizeBi"):
    return numpy.int32(92)
   if (_0=="endOptimizeBi"):
    return numpy.int32(55)
   if (_0=="beginPrimalSimplexBi"):
    return numpy.int32(26)
   if (_0=="updatePrimalSimplexBi"):
    return numpy.int32(105)
   if (_0=="endPrimalSimplexBi"):
    return numpy.int32(63)
   if (_0=="beginDualSimplexBi"):
    return numpy.int32(6)
   if (_0=="updateDualSimplexBi"):
    return numpy.int32(101)
   if (_0=="endDualSimplexBi"):
    return numpy.int32(43)
   if (_0=="endSimplexBi"):
    return numpy.int32(68)
   if (_0=="beginMio"):
    return numpy.int32(17)
   if (_0=="imMio"):
    return numpy.int32(80)
   if (_0=="newIntMio"):
    return numpy.int32(91)
   if (_0=="endMio"):
    return numpy.int32(54)
   if (_0=="restartMio"):
    return numpy.int32(97)
   if (_0=="decompMio"):
    return numpy.int32(35)
   if (_0=="beginSimplex"):
    return numpy.int32(30)
   if (_0=="imSimplex"):
    return numpy.int32(89)
   if (_0=="updateSimplex"):
    return numpy.int32(106)
   if (_0=="beginDualSimplex"):
    return numpy.int32(5)
   if (_0=="imDualSimplex"):
    return numpy.int32(77)
   if (_0=="updateDualSimplex"):
    return numpy.int32(100)
   if (_0=="endDualSimplex"):
    return numpy.int32(42)
   if (_0=="beginPrimalSimplex"):
    return numpy.int32(25)
   if (_0=="imPrimalSimplex"):
    return numpy.int32(86)
   if (_0=="updatePrimalSimplex"):
    return numpy.int32(104)
   if (_0=="endPrimalSimplex"):
    return numpy.int32(62)
   if (_0=="endSimplex"):
    return numpy.int32(67)
   if (_0=="beginInfeasAna"):
    return numpy.int32(13)
   if (_0=="endInfeasAna"):
    return numpy.int32(50)
   if (_0=="imPrimalSensivity"):
    return numpy.int32(85)
   if (_0=="imDualSensivity"):
    return numpy.int32(76)
   if (_0=="imMioIntpnt"):
    return numpy.int32(82)
   if (_0=="imMioPrimalSimplex"):
    return numpy.int32(83)
   if (_0=="imMioDualSimplex"):
    return numpy.int32(81)
   if (_0=="beginPrimalSetupBi"):
    return numpy.int32(24)
   if (_0=="endPrimalSetupBi"):
    return numpy.int32(61)
   if (_0=="beginDualSetupBi"):
    return numpy.int32(4)
   if (_0=="endDualSetupBi"):
    return numpy.int32(41)
   if (_0=="beginPrimalSensitivity"):
    return numpy.int32(23)
   if (_0=="endPrimalSensitivity"):
    return numpy.int32(60)
   if (_0=="beginDualSensitivity"):
    return numpy.int32(3)
   if (_0=="endDualSensitivity"):
    return numpy.int32(40)
   if (_0=="beginLicenseWait"):
    return numpy.int32(16)
   if (_0=="endLicenseWait"):
    return numpy.int32(53)
   if (_0=="imLicenseWait"):
    return numpy.int32(78)
   if (_0=="beginQcqoReformulate"):
    return numpy.int32(27)
   if (_0=="qoReformulate"):
    return numpy.int32(94)
   if (_0=="endQcqoReformulate"):
    return numpy.int32(64)
   if (_0=="beginToConic"):
    return numpy.int32(32)
   if (_0=="endToConic"):
    return numpy.int32(70)
   if (_0=="beginPrimalRepair"):
    return numpy.int32(22)
   if (_0=="endPrimalRepair"):
    return numpy.int32(59)
   if (_0=="beginRead"):
    return numpy.int32(28)
   if (_0=="imRead"):
    return numpy.int32(87)
   if (_0=="endRead"):
    return numpy.int32(65)
   if (_0=="beginWrite"):
    return numpy.int32(33)
   if (_0=="endWrite"):
    return numpy.int32(71)
   if (_0=="readOpfSection"):
    return numpy.int32(96)
   if (_0=="imLu"):
    return numpy.int32(79)
   if (_0=="imOrder"):
    return numpy.int32(84)
   if (_0=="readOpf"):
    return numpy.int32(95)
   if (_0=="writeOpf"):
    return numpy.int32(107)
   if (_0=="solvingRemote"):
    return numpy.int32(98)
   if (_0=="heartbeat"):
    return numpy.int32(75)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1intpnthotstart_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1intpnthotstart_1value_S(_0)
  @staticmethod
  def __string_1to_1intpnthotstart_1value_S(_0):
   if (_0=="none"):
    return numpy.int32(0)
   if (_0=="primal"):
    return numpy.int32(1)
   if (_0=="dual"):
    return numpy.int32(2)
   if (_0=="primalDual"):
    return numpy.int32(3)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1simhotstart_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1simhotstart_1value_S(_0)
  @staticmethod
  def __string_1to_1simhotstart_1value_S(_0):
   if (_0=="none"):
    return numpy.int32(0)
   if (_0=="free"):
    return numpy.int32(1)
   if (_0=="statusKeys"):
    return numpy.int32(2)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1simdupvec_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1simdupvec_1value_S(_0)
  @staticmethod
  def __string_1to_1simdupvec_1value_S(_0):
   if (_0=="on"):
    return numpy.int32(1)
   if (_0=="off"):
    return numpy.int32(0)
   if (_0=="free"):
    return numpy.int32(2)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1simreform_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1simreform_1value_S(_0)
  @staticmethod
  def __string_1to_1simreform_1value_S(_0):
   if (_0=="on"):
    return numpy.int32(1)
   if (_0=="off"):
    return numpy.int32(0)
   if (_0=="free"):
    return numpy.int32(2)
   if (_0=="aggressive"):
    return numpy.int32(3)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1uplo_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1uplo_1value_S(_0)
  @staticmethod
  def __string_1to_1uplo_1value_S(_0):
   if (_0=="lo"):
    return numpy.int32(0)
   if (_0=="up"):
    return numpy.int32(1)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1transpose_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1transpose_1value_S(_0)
  @staticmethod
  def __string_1to_1transpose_1value_S(_0):
   if (_0=="no"):
    return numpy.int32(0)
   if (_0=="yes"):
    return numpy.int32(1)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1simdegen_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1simdegen_1value_S(_0)
  @staticmethod
  def __string_1to_1simdegen_1value_S(_0):
   if (_0=="none"):
    return numpy.int32(0)
   if (_0=="free"):
    return numpy.int32(1)
   if (_0=="aggressive"):
    return numpy.int32(2)
   if (_0=="moderate"):
    return numpy.int32(3)
   if (_0=="minimum"):
    return numpy.int32(4)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1simprecision_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1simprecision_1value_S(_0)
  @staticmethod
  def __string_1to_1simprecision_1value_S(_0):
   if (_0=="normal"):
    return numpy.int32(0)
   if (_0=="extended"):
    return numpy.int32(1)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1mark_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1mark_1value_S(_0)
  @staticmethod
  def __string_1to_1mark_1value_S(_0):
   if (_0=="lo"):
    return numpy.int32(0)
   if (_0=="up"):
    return numpy.int32(1)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1boundkey_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1boundkey_1value_S(_0)
  @staticmethod
  def __string_1to_1boundkey_1value_S(_0):
   if (_0=="lo"):
    return numpy.int32(0)
   if (_0=="up"):
    return numpy.int32(1)
   if (_0=="fx"):
    return numpy.int32(2)
   if (_0=="fr"):
    return numpy.int32(3)
   if (_0=="ra"):
    return numpy.int32(4)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1basindtype_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1basindtype_1value_S(_0)
  @staticmethod
  def __string_1to_1basindtype_1value_S(_0):
   if (_0=="never"):
    return numpy.int32(0)
   if (_0=="always"):
    return numpy.int32(1)
   if (_0=="noError"):
    return numpy.int32(2)
   if (_0=="ifFeasible"):
    return numpy.int32(3)
   if (_0=="reservered"):
    return numpy.int32(4)
   return numpy.int32((- 1))
  @staticmethod
  def __string_1to_1language_1value_alt_S(_t__0):
    return mosek_fusion_Parameters.__string_1to_1language_1value_S(_0)
  @staticmethod
  def __string_1to_1language_1value_S(_0):
   if (_0=="eng"):
    return numpy.int32(0)
   if (_0=="dan"):
    return numpy.int32(1)
   return numpy.int32((- 1))
 return Parameters
mosek_fusion_Parameters=__mk_mosek_fusion_Parameters()
del __mk_mosek_fusion_Parameters
def __mk_mosek_fusion_Utils_StringIntMap():
  class StringIntMap:
    def __init__ (self):
      self.__d = {}
    def _hasItem_S(self,key): return key in self.__d
    def _getItem_S(self,key): return self.__d[key]
    def _setItem_SI(self,key,val): self.__d[key] = val
    def _keys_(self): return numpy.array(list(self.__d.keys()))
    def _values_(self): return numpy.array(list(self.__d.values()))
    def _clone_(self):
      r = self.__class__()
      r.__d.update(self.__d)
      return r
  return StringIntMap
mosek_fusion_Utils_StringIntMap=__mk_mosek_fusion_Utils_StringIntMap()
def __mk_mosek_fusion_Utils_IntMap():
  class IntMap:
    def __init__ (self):
      self.__d = {}
    def _hasItem_J(self,key): return key in self.__d
    def _getItem_J(self,key): return self.__d[key]
    def _setItem_JI(self,key,val): self.__d[key] = val
    def _keys_(self): return numpy.array(list(self.__d.keys()))
    def _values_(self): return numpy.array(list(self.__d.values()))
    def _clone_(self):
      r = self.__class__()
      r.__d.update(self.__d)
      return r
  
  
  
  return IntMap
mosek_fusion_Utils_IntMap=__mk_mosek_fusion_Utils_IntMap()
def __mk_mosek_fusion_Utils_StringBuffer():
  class StringBuffer:
    def __init__(self):
      self.__buf = []
    def __a(self,v):
      self.__buf.append(str(v))
      return self
    def __a_array(self,v):
      if v is None: self.__buf.append("None")
      else: self.__buf.append(str(v))
      return self
  
    _a_Z   = __a
    _a_I   = __a
    _a_J   = __a
    _a_U   = __a
    _a_D   = __a
    _a_S   = __a
    _a_B   = __a
    _a__3I = __a_array
    def _a__3J(self,v):
      if v is not None: self.__buf.extend([ '[',','.join(['%i' % i for i in v]),']'])
      else:             self.__buf.append('None')
      return self
    def _a__3D(self,v):
      if v is not None: self.__buf.extend([ '[',','.join(['%g' % i for i in v]),']'])
      else:             self.__buf.append('None')
      return self
    _a__3S = __a_array
    def _lf_(self):
      self.__buf.append('\n')
      return self
    def _clear_ (self):
      self.__buf = []
      return self
    def _toString_(self):
      return ''.join(self.__buf)
    def _toString_(self):
      return ''.join(self.__buf)
    def _consolePrint_(self):
      print(self._toString_())
      self._clear_()
      return(self)
  return StringBuffer
mosek_fusion_Utils_StringBuffer=__mk_mosek_fusion_Utils_StringBuffer()
def __mk_mosek_fusion_Utils_Tools():
  
  import random,ctypes,math
  class Tools:
    @staticmethod
    def __arraycopy(src,srcoffset,tgt,tgtoffset,size):
      if len(tgt) < tgtoffset+size or len(src) < srcoffset+size:
        raise IndexError("Copy slice out of range")
      tgt[tgtoffset:tgtoffset+size] = src[srcoffset:srcoffset+size]
  
    _arraycopy__3II_3III =  __arraycopy
    _arraycopy__3JI_3JII = __arraycopy
    _arraycopy__3_3II_3_3III = __arraycopy
    _arraycopy__3_3DI_3_3DII = __arraycopy
    _arraycopy__3DI_3DII = __arraycopy
    _arraycopy__3IJ_3IJJ = __arraycopy
    _arraycopy__3JJ_3JJJ = __arraycopy
    _arraycopy__3DJ_3DJJ = __arraycopy
  
    @staticmethod
    def __arrayclone(a):
      if a is None:
        raise FatalError("Unexpected None passed to arraycopy. Cloning a None array is not allowed.")
      if isinstance(a,numpy.ndarray):
        return a.copy()
      else:      
        return numpy.array(a)
  
    _arraycopy__3D = __arrayclone
    _arraycopy__3I = __arrayclone
    _arraycopy__3J = __arrayclone
    _arraycopy__3S = __arrayclone
  
    @staticmethod
    def __arraylength(a): return len(a)
  
    _arraylength__3Lmosek_4fusion_4Variable_2   = __arraylength
    _arraylength__3Lmosek_4fusion_4Constranit_2 = __arraylength  
    _arraylength__3Lmosek_4fusion_4Matrix_2     = __arraylength  
    _arraylength__3S   = __arraylength  
    _arraylength__3I   = __arraylength  
    _arraylength__3J   = __arraylength  
    _arraylength__3D   = __arraylength  
    _arraylength__3_3D = __arraylength  
    _arraylength__3_3I = __arraylength  
    _uarraylength__3I  = __arraylength 
    _uarraylength__3J  = __arraylength 
    _uarraylength__3D  = __arraylength 
    _uarraylength__3Lmosek_4fusion_4Variable_2   = __arraylength 
    _uarraylength__3Lmosek_4fusion_4Constraint_2 = __arraylength 
    _uarraylength__3Lmosek_4fusion_4Matrix_2     = __arraylength 
    _uarraylength__3_3S = __arraylength 
    _uarraylength__3_3D = __arraylength 
    _uarraylength__3_3I = __arraylength 
  
    @staticmethod
    def __matrixheight(m): return m.shape[0]
    @staticmethod
    def __matrixwidth(m): return m.shape[1]
    
    _matrixheight__3_3D = __matrixheight
    _matrixwidth__3_3D  = __matrixwidth
    _matrixheight__3_3Lmosek_4fusion_4Matrix_2 = __matrixheight
    _matrixwidth__3_3Lmosek_4fusion_4Matrix_2  = __matrixwidth
   
    @staticmethod   
    def _range_J (last): return numpy.arange(last,dtype=numpy.int64)
    @staticmethod   
    def _range_JJ(first,last): return numpy.arange(first,last,dtype=numpy.int64)
    @staticmethod   
    def _range_JJJ(first,last,step): return numpy.arange(first,last,step,dtype=numpy.int64)
  
    @staticmethod   
    def _range_I (last): return numpy.arange(last,dtype=numpy.int32)
    @staticmethod   
    def _range_II(first,last): return numpy.arange(first,last,dtype=numpy.int32)
    @staticmethod   
    def _range_III(first,last,step): return numpy.arange(first,last,step,dtype=numpy.int32)
  
    @staticmethod   
    def _zeros_I (num): return  numpy.zeros((num,),dtype=numpy.float64)
    @staticmethod   
    def _zeros_II (dimi,dimj): return  numpy.zeros((dimi,dimj),dtype=numpy.float64)
    @staticmethod   
    def _ones_I(num):  return  numpy.ones((num,),numpy.float64)
    
    __rand = random.Random()
    @staticmethod   
    def _randInt_I(max):
      return Tools.__rand.randint(0,max-1)
      
    @staticmethod   
    def _argsort__3J_3I_3JII(perm,val1,val2,first,last):
      if last-first > 1:
        p = list(perm[first:last])
        p.sort(lambda lhs,rhs: cmp(val1[lhs],val1[rhs]) or cmp(val2[lhs],val2[rhs]))
        perm[first:last] = p
  
    @staticmethod   
    def _argsort__3J_3I_3I(perm,val1,val2):    
      Tools._argsort__3I_3I_3III(perm,val1,val2,0,len(perm))
    
    @staticmethod   
    def _argsort__3J_3I(perm,vals):
      Tools._argsort__3I_3III(perm,vals,0,len(perm))
  
    @staticmethod   
    def _argsort__3J_3III(perm,val,first,last):
      if last-first > 1:
        p = list(perm[first:last])
        p.sort(lambda lhs,rhs: cmp(val[lhs],val[rhs]))
        perm[first:last] = p
  
    @staticmethod
    def _sort__3I_II (vals,first,last):
      if last-first > 1:
        tmp = vals[first:last]
        tmp.sort()
        vals[first:last] = tmp
  
    @staticmethod   
    def _makevector_DI(val,num): 
      r = numpy.zeros((num,), numpy.float64)
      r[:] = val
      return r
    @staticmethod   
    def _makevector_II(val,num): 
      r = numpy.zeros((num,), numpy.int32)
      r[:] = val
      return r
    @staticmethod   
    def _makevector_JI(val,num): 
      r = numpy.zeros((num,), numpy.int64)
      r[:] = val
      return r
    @staticmethod   
    def _repeatrange_III(first,last,num):
      res = numpy.zeros(((last-first)*num,),numpy.int32)
      ra = numpy.arange(first,last)
      l = last-first
      for i in range(num):
        res[i*l:(i+1)*l] = ra
      return res
    @staticmethod   
    def _repeatrange_JJJ(first,last,num):
      res = numpy.zeros(((last-first)*num,),numpy.int64)
      ra = numpy.arange(first,last)
      l = last-first
      for i in range(num):
        res[i*l:(i+1)*l] = ra
      return res
    @staticmethod
    def  _stringvalue_I(v): return str(v)
    @staticmethod
    def  _stringvalue_J(v): return str(v)
  
    @staticmethod
    def _toDouble_S(v):    
      return float(v)
  
    @staticmethod
    def _sqrt_D(v):
      return math.sqrt(v)
    
    @staticmethod
    def _toInt_S(v):
      return int(v)
  
  
    @staticmethod 
    def _argsort2(perm,v,first,last):
      l = sorted(perm[first:last],key=lambda i: v[i])
      perm[first:last] = l
    
    @staticmethod 
    def _argsort2x(perm,v0,v1,first,last):
      l = sorted(perm[first:last],key=lambda i: (v0[i],v1[i]))
      perm[first:last] = l
  
  
  
    @staticmethod 
    def _argsort__3J_3IJJ(perm,v,first,last):
      return Tools._argsort2(perm,v,first,last)
    
    @staticmethod 
    def _argsort__3J_3JJJ(perm,v,first,last):
      return Tools._argsort2(perm,v,first,last)
  
    @staticmethod 
    def _argsort__3J_3I_3IJJ(perm,v0,v1,first,last):
      return Tools._argsort2x(perm,v0,v1,first,last)
    
    @staticmethod 
    def _argsort__3J_3J_3JJJ(perm,v0,v1,first,last):
      return Tools._argsort2x(perm,v0,v1,first,last)
  
    @staticmethod
    def _bucketsort__3JJJ_3III(perm,first,last,v,minval,maxval):
      if True:
        count = numpy.zeros((maxval-minval+2,),numpy.int64)
        for i in range(first,last): count[v[perm[i]]-minval+1] += 1
        ptrb = count.cumsum()
        rperm = numpy.zeros((last-first,),numpy.int64)
        for i in range(first,last):
          rperm[ptrb[v[perm[i]]-minval]] = perm[i]
          ptrb[v[perm[i]]-minval] += 1
        perm[first:last] = rperm
  
      else:
        perm_ct = perm.ctypes
        v_ct    = v.ctypes
        if perm_ct.strides[0] == 8:
          #print( perm_ct.strides[:], perm_ct.shape[:],perm_ct.get_data())
          arg_perm  = perm_ct.data_as(ctypes.POINTER(ctypes.c_longlong))
          copy_perm = False
        else:
          tmpperm = numpy.array(perm_ct[first:last],numpy.int64)
          arg_perm  = tmpperm.ctypes.data_as(ctypes.POINTER(ctypes.c_longlong))
          copy_perm = True
  
        if v_ct.strides[0] == 4:
          arg_v = v_ct.data_as(ctypes.POINTER(ctypes.c_int))
          copy_v = False
        else:
          tmpv = numpy.array(v_ct,numpy.int32)
          arg_v  = tmpv.ctypes.data_as(ctypes.POINTER(ctypes.c_int))
          copy_v = True
  
        n = last-first
        m = maxval - minval + 1
        workspace = (ctypes.c_longlong*(m+n))()
  
        mosek.__library__.MSK_bucketsort__3JS_3III_3V(arg_perm,first,last,arg_v,minval,maxval,workspace)
        del arg_perm,arg_v
  
        if copy_v: 
          v[:] = tmpv
          del tmpv
        if copy_perm: 
          perm[first:last] = tmpperm
          del tmpperm
  
      
    @staticmethod
    def _bucketsort__3JJJ_3JJJ(perm,first,last,v,minval,maxval):
      if True:
        count = numpy.zeros((maxval-minval+2,),numpy.int64)
        for i in range(first,last): count[v[perm[i]]-minval+1] += 1
        ptrb = count.cumsum()
        rperm = numpy.zeros((last-first,),numpy.int64)
        for i in range(first,last):
          rperm[ptrb[v[perm[i]]-minval]] = perm[i]
          ptrb[v[perm[i]]-minval] += 1
        perm[first:last] = rperm
        #print( rperm,v)
  
      else:
        perm_ct = perm.ctypes
        v_ct    = v.ctypes
        
       
        if perm_ct.strides[0] == 8:
          arg_perm  = perm_ct.data_as(ctypes.POINTER(ctypes.c_longlong))
          copy_perm = False
        else:
          tmpperm = numpy.array(perm_ct[first:last],numpy.int64)
          arg_perm  = tmpperm.ctypes.data_as(ctypes.POINTER(ctypes.c_longlong))
          copy_perm = True
  
  
        if v_ct.strides[0] == 8:
          arg_v = v_ct.data_as(ctypes.POINTER(ctypes.c_longlong))
          copy_v = False
        else:
          tmpv = numpy.array(v_ct,numpy.int64)
          arg_v  = tmpv.ctypes.data_as(ctypes.POINTER(ctypes.c_longlong))
          copy_v = True
  
        n = last-first
        m = maxval - minval + 1
        workspace = (ctypes.c_longlong*(m+n))()
  
        mosek.__library__.MSK_bucketsort__3JS_3JJJ_3V(arg_perm,first,last,arg_v,minval,maxval,workspace)
  
        if copy_v: v[:] = tmpv
        if copy_perm: perm[first:last] = tmpperm
  
  
  
  
  return Tools
mosek_fusion_Utils_Tools=__mk_mosek_fusion_Utils_Tools()
def __mk_mosek_fusion_SolverInfo():
  from bisect import bisect_left
  import mosek
  class SolverInfo:
    dinfnames  = [ "anaProScalarizedConstraintMatrixDensity","biCleanTime","biDualTime","biPrimalTime","biTime","foldingBiOptimizeTime","foldingBiUnfoldDualTime","foldingBiUnfoldInitializeTime","foldingBiUnfoldPrimalTime","foldingBiUnfoldTime","foldingFactor","foldingTime","intpntDualFeas","intpntDualObj","intpntFactorNumFlops","intpntOptStatus","intpntOrderTime","intpntPrimalFeas","intpntPrimalObj","intpntTime","mioCliqueSelectionTime","mioCliqueSeparationTime","mioCmirSelectionTime","mioCmirSeparationTime","mioConstructSolutionObj","mioDualBoundAfterPresolve","mioGmiSelectionTime","mioGmiSeparationTime","mioImpliedBoundSelectionTime","mioImpliedBoundSeparationTime","mioInitialFeasibleSolutionObj","mioKnapsackCoverSelectionTime","mioKnapsackCoverSeparationTime","mioLiproSelectionTime","mioLiproSeparationTime","mioObjAbsGap","mioObjBound","mioObjInt","mioObjRelGap","mioProbingTime","mioRootCutSelectionTime","mioRootCutSeparationTime","mioRootOptimizerTime","mioRootPresolveTime","mioRootTime","mioSymmetryDetectionTime","mioSymmetryFactor","mioTime","mioUserObjCut","optimizerTicks","optimizerTime","presolveEliTime","presolveLindepTime","presolveTime","presolveTotalPrimalPerturbation","primalRepairPenaltyObj","qcqoReformulateMaxPerturbation","qcqoReformulateTime","qcqoReformulateWorstCholeskyColumnScaling","qcqoReformulateWorstCholeskyDiagScaling","readDataTime","remoteTime","simDualTime","simFeas","simObj","simPrimalTime","simTime","solBasDualObj","solBasDviolcon","solBasDviolvar","solBasNrmBarx","solBasNrmSlc","solBasNrmSlx","solBasNrmSuc","solBasNrmSux","solBasNrmXc","solBasNrmXx","solBasNrmY","solBasPrimalObj","solBasPviolcon","solBasPviolvar","solItgNrmBarx","solItgNrmXc","solItgNrmXx","solItgPrimalObj","solItgPviolacc","solItgPviolbarvar","solItgPviolcon","solItgPviolcones","solItgPvioldjc","solItgPviolitg","solItgPviolvar","solItrDualObj","solItrDviolacc","solItrDviolbarvar","solItrDviolcon","solItrDviolcones","solItrDviolvar","solItrNrmBars","solItrNrmBarx","solItrNrmSlc","solItrNrmSlx","solItrNrmSnx","solItrNrmSuc","solItrNrmSux","solItrNrmXc","solItrNrmXx","solItrNrmY","solItrPrimalObj","solItrPviolacc","solItrPviolbarvar","solItrPviolcon","solItrPviolcones","solItrPviolvar","toConicTime","writeDataTime" ];
    iinfnames  = [ "anaProNumCon","anaProNumConEq","anaProNumConFr","anaProNumConLo","anaProNumConRa","anaProNumConUp","anaProNumVar","anaProNumVarBin","anaProNumVarCont","anaProNumVarEq","anaProNumVarFr","anaProNumVarInt","anaProNumVarLo","anaProNumVarRa","anaProNumVarUp","foldingApplied","intpntFactorDimDense","intpntIter","intpntNumThreads","intpntSolveDual","mioAbsgapSatisfied","mioCliqueTableSize","mioConstructSolution","mioFinalNumbin","mioFinalNumbinconevar","mioFinalNumcon","mioFinalNumcone","mioFinalNumconevar","mioFinalNumcont","mioFinalNumcontconevar","mioFinalNumdexpcones","mioFinalNumdjc","mioFinalNumdpowcones","mioFinalNumint","mioFinalNumintconevar","mioFinalNumpexpcones","mioFinalNumppowcones","mioFinalNumqcones","mioFinalNumrqcones","mioFinalNumvar","mioInitialFeasibleSolution","mioNodeDepth","mioNumActiveNodes","mioNumActiveRootCuts","mioNumBlocksSolvedInBb","mioNumBlocksSolvedInPresolve","mioNumBranch","mioNumIntSolutions","mioNumRelax","mioNumRepeatedPresolve","mioNumRestarts","mioNumRootCutRounds","mioNumSelectedCliqueCuts","mioNumSelectedCmirCuts","mioNumSelectedGomoryCuts","mioNumSelectedImpliedBoundCuts","mioNumSelectedKnapsackCoverCuts","mioNumSelectedLiproCuts","mioNumSeparatedCliqueCuts","mioNumSeparatedCmirCuts","mioNumSeparatedGomoryCuts","mioNumSeparatedImpliedBoundCuts","mioNumSeparatedKnapsackCoverCuts","mioNumSeparatedLiproCuts","mioNumSolvedNodes","mioNumbin","mioNumbinconevar","mioNumcon","mioNumcone","mioNumconevar","mioNumcont","mioNumcontconevar","mioNumdexpcones","mioNumdjc","mioNumdpowcones","mioNumint","mioNumintconevar","mioNumpexpcones","mioNumppowcones","mioNumqcones","mioNumrqcones","mioNumvar","mioObjBoundDefined","mioPresolvedNumbin","mioPresolvedNumbinconevar","mioPresolvedNumcon","mioPresolvedNumcone","mioPresolvedNumconevar","mioPresolvedNumcont","mioPresolvedNumcontconevar","mioPresolvedNumdexpcones","mioPresolvedNumdjc","mioPresolvedNumdpowcones","mioPresolvedNumint","mioPresolvedNumintconevar","mioPresolvedNumpexpcones","mioPresolvedNumppowcones","mioPresolvedNumqcones","mioPresolvedNumrqcones","mioPresolvedNumvar","mioRelgapSatisfied","mioTotalNumSelectedCuts","mioTotalNumSeparatedCuts","mioUserObjCut","optNumcon","optNumvar","optimizeResponse","presolveNumPrimalPerturbations","purifyDualSuccess","purifyPrimalSuccess","rdNumbarvar","rdNumcon","rdNumcone","rdNumintvar","rdNumq","rdNumvar","rdProtype","simDualDegIter","simDualHotstart","simDualHotstartLu","simDualInfIter","simDualIter","simNumcon","simNumvar","simPrimalDegIter","simPrimalHotstart","simPrimalHotstartLu","simPrimalInfIter","simPrimalIter","simSolveDual","solBasProsta","solBasSolsta","solItgProsta","solItgSolsta","solItrProsta","solItrSolsta","stoNumARealloc" ];
    liinfnames = [ "anaProScalarizedConstraintMatrixNumColumns","anaProScalarizedConstraintMatrixNumNz","anaProScalarizedConstraintMatrixNumRows","biCleanIter","biDualIter","biPrimalIter","foldingBiDualIter","foldingBiOptimizerIter","foldingBiPrimalIter","intpntFactorNumNz","mioAnz","mioFinalAnz","mioIntpntIter","mioNumDualIllposedCer","mioNumPrimIllposedCer","mioPresolvedAnz","mioSimplexIter","rdNumacc","rdNumanz","rdNumdjc","rdNumqnz","simplexIter" ];
    dinfsyms   = [ mosek.dinfitem.ana_pro_scalarized_constraint_matrix_density,mosek.dinfitem.bi_clean_time,mosek.dinfitem.bi_dual_time,mosek.dinfitem.bi_primal_time,mosek.dinfitem.bi_time,mosek.dinfitem.folding_bi_optimize_time,mosek.dinfitem.folding_bi_unfold_dual_time,mosek.dinfitem.folding_bi_unfold_initialize_time,mosek.dinfitem.folding_bi_unfold_primal_time,mosek.dinfitem.folding_bi_unfold_time,mosek.dinfitem.folding_factor,mosek.dinfitem.folding_time,mosek.dinfitem.intpnt_dual_feas,mosek.dinfitem.intpnt_dual_obj,mosek.dinfitem.intpnt_factor_num_flops,mosek.dinfitem.intpnt_opt_status,mosek.dinfitem.intpnt_order_time,mosek.dinfitem.intpnt_primal_feas,mosek.dinfitem.intpnt_primal_obj,mosek.dinfitem.intpnt_time,mosek.dinfitem.mio_clique_selection_time,mosek.dinfitem.mio_clique_separation_time,mosek.dinfitem.mio_cmir_selection_time,mosek.dinfitem.mio_cmir_separation_time,mosek.dinfitem.mio_construct_solution_obj,mosek.dinfitem.mio_dual_bound_after_presolve,mosek.dinfitem.mio_gmi_selection_time,mosek.dinfitem.mio_gmi_separation_time,mosek.dinfitem.mio_implied_bound_selection_time,mosek.dinfitem.mio_implied_bound_separation_time,mosek.dinfitem.mio_initial_feasible_solution_obj,mosek.dinfitem.mio_knapsack_cover_selection_time,mosek.dinfitem.mio_knapsack_cover_separation_time,mosek.dinfitem.mio_lipro_selection_time,mosek.dinfitem.mio_lipro_separation_time,mosek.dinfitem.mio_obj_abs_gap,mosek.dinfitem.mio_obj_bound,mosek.dinfitem.mio_obj_int,mosek.dinfitem.mio_obj_rel_gap,mosek.dinfitem.mio_probing_time,mosek.dinfitem.mio_root_cut_selection_time,mosek.dinfitem.mio_root_cut_separation_time,mosek.dinfitem.mio_root_optimizer_time,mosek.dinfitem.mio_root_presolve_time,mosek.dinfitem.mio_root_time,mosek.dinfitem.mio_symmetry_detection_time,mosek.dinfitem.mio_symmetry_factor,mosek.dinfitem.mio_time,mosek.dinfitem.mio_user_obj_cut,mosek.dinfitem.optimizer_ticks,mosek.dinfitem.optimizer_time,mosek.dinfitem.presolve_eli_time,mosek.dinfitem.presolve_lindep_time,mosek.dinfitem.presolve_time,mosek.dinfitem.presolve_total_primal_perturbation,mosek.dinfitem.primal_repair_penalty_obj,mosek.dinfitem.qcqo_reformulate_max_perturbation,mosek.dinfitem.qcqo_reformulate_time,mosek.dinfitem.qcqo_reformulate_worst_cholesky_column_scaling,mosek.dinfitem.qcqo_reformulate_worst_cholesky_diag_scaling,mosek.dinfitem.read_data_time,mosek.dinfitem.remote_time,mosek.dinfitem.sim_dual_time,mosek.dinfitem.sim_feas,mosek.dinfitem.sim_obj,mosek.dinfitem.sim_primal_time,mosek.dinfitem.sim_time,mosek.dinfitem.sol_bas_dual_obj,mosek.dinfitem.sol_bas_dviolcon,mosek.dinfitem.sol_bas_dviolvar,mosek.dinfitem.sol_bas_nrm_barx,mosek.dinfitem.sol_bas_nrm_slc,mosek.dinfitem.sol_bas_nrm_slx,mosek.dinfitem.sol_bas_nrm_suc,mosek.dinfitem.sol_bas_nrm_sux,mosek.dinfitem.sol_bas_nrm_xc,mosek.dinfitem.sol_bas_nrm_xx,mosek.dinfitem.sol_bas_nrm_y,mosek.dinfitem.sol_bas_primal_obj,mosek.dinfitem.sol_bas_pviolcon,mosek.dinfitem.sol_bas_pviolvar,mosek.dinfitem.sol_itg_nrm_barx,mosek.dinfitem.sol_itg_nrm_xc,mosek.dinfitem.sol_itg_nrm_xx,mosek.dinfitem.sol_itg_primal_obj,mosek.dinfitem.sol_itg_pviolacc,mosek.dinfitem.sol_itg_pviolbarvar,mosek.dinfitem.sol_itg_pviolcon,mosek.dinfitem.sol_itg_pviolcones,mosek.dinfitem.sol_itg_pvioldjc,mosek.dinfitem.sol_itg_pviolitg,mosek.dinfitem.sol_itg_pviolvar,mosek.dinfitem.sol_itr_dual_obj,mosek.dinfitem.sol_itr_dviolacc,mosek.dinfitem.sol_itr_dviolbarvar,mosek.dinfitem.sol_itr_dviolcon,mosek.dinfitem.sol_itr_dviolcones,mosek.dinfitem.sol_itr_dviolvar,mosek.dinfitem.sol_itr_nrm_bars,mosek.dinfitem.sol_itr_nrm_barx,mosek.dinfitem.sol_itr_nrm_slc,mosek.dinfitem.sol_itr_nrm_slx,mosek.dinfitem.sol_itr_nrm_snx,mosek.dinfitem.sol_itr_nrm_suc,mosek.dinfitem.sol_itr_nrm_sux,mosek.dinfitem.sol_itr_nrm_xc,mosek.dinfitem.sol_itr_nrm_xx,mosek.dinfitem.sol_itr_nrm_y,mosek.dinfitem.sol_itr_primal_obj,mosek.dinfitem.sol_itr_pviolacc,mosek.dinfitem.sol_itr_pviolbarvar,mosek.dinfitem.sol_itr_pviolcon,mosek.dinfitem.sol_itr_pviolcones,mosek.dinfitem.sol_itr_pviolvar,mosek.dinfitem.to_conic_time,mosek.dinfitem.write_data_time ];
    iinfsyms   = [ mosek.iinfitem.ana_pro_num_con,mosek.iinfitem.ana_pro_num_con_eq,mosek.iinfitem.ana_pro_num_con_fr,mosek.iinfitem.ana_pro_num_con_lo,mosek.iinfitem.ana_pro_num_con_ra,mosek.iinfitem.ana_pro_num_con_up,mosek.iinfitem.ana_pro_num_var,mosek.iinfitem.ana_pro_num_var_bin,mosek.iinfitem.ana_pro_num_var_cont,mosek.iinfitem.ana_pro_num_var_eq,mosek.iinfitem.ana_pro_num_var_fr,mosek.iinfitem.ana_pro_num_var_int,mosek.iinfitem.ana_pro_num_var_lo,mosek.iinfitem.ana_pro_num_var_ra,mosek.iinfitem.ana_pro_num_var_up,mosek.iinfitem.folding_applied,mosek.iinfitem.intpnt_factor_dim_dense,mosek.iinfitem.intpnt_iter,mosek.iinfitem.intpnt_num_threads,mosek.iinfitem.intpnt_solve_dual,mosek.iinfitem.mio_absgap_satisfied,mosek.iinfitem.mio_clique_table_size,mosek.iinfitem.mio_construct_solution,mosek.iinfitem.mio_final_numbin,mosek.iinfitem.mio_final_numbinconevar,mosek.iinfitem.mio_final_numcon,mosek.iinfitem.mio_final_numcone,mosek.iinfitem.mio_final_numconevar,mosek.iinfitem.mio_final_numcont,mosek.iinfitem.mio_final_numcontconevar,mosek.iinfitem.mio_final_numdexpcones,mosek.iinfitem.mio_final_numdjc,mosek.iinfitem.mio_final_numdpowcones,mosek.iinfitem.mio_final_numint,mosek.iinfitem.mio_final_numintconevar,mosek.iinfitem.mio_final_numpexpcones,mosek.iinfitem.mio_final_numppowcones,mosek.iinfitem.mio_final_numqcones,mosek.iinfitem.mio_final_numrqcones,mosek.iinfitem.mio_final_numvar,mosek.iinfitem.mio_initial_feasible_solution,mosek.iinfitem.mio_node_depth,mosek.iinfitem.mio_num_active_nodes,mosek.iinfitem.mio_num_active_root_cuts,mosek.iinfitem.mio_num_blocks_solved_in_bb,mosek.iinfitem.mio_num_blocks_solved_in_presolve,mosek.iinfitem.mio_num_branch,mosek.iinfitem.mio_num_int_solutions,mosek.iinfitem.mio_num_relax,mosek.iinfitem.mio_num_repeated_presolve,mosek.iinfitem.mio_num_restarts,mosek.iinfitem.mio_num_root_cut_rounds,mosek.iinfitem.mio_num_selected_clique_cuts,mosek.iinfitem.mio_num_selected_cmir_cuts,mosek.iinfitem.mio_num_selected_gomory_cuts,mosek.iinfitem.mio_num_selected_implied_bound_cuts,mosek.iinfitem.mio_num_selected_knapsack_cover_cuts,mosek.iinfitem.mio_num_selected_lipro_cuts,mosek.iinfitem.mio_num_separated_clique_cuts,mosek.iinfitem.mio_num_separated_cmir_cuts,mosek.iinfitem.mio_num_separated_gomory_cuts,mosek.iinfitem.mio_num_separated_implied_bound_cuts,mosek.iinfitem.mio_num_separated_knapsack_cover_cuts,mosek.iinfitem.mio_num_separated_lipro_cuts,mosek.iinfitem.mio_num_solved_nodes,mosek.iinfitem.mio_numbin,mosek.iinfitem.mio_numbinconevar,mosek.iinfitem.mio_numcon,mosek.iinfitem.mio_numcone,mosek.iinfitem.mio_numconevar,mosek.iinfitem.mio_numcont,mosek.iinfitem.mio_numcontconevar,mosek.iinfitem.mio_numdexpcones,mosek.iinfitem.mio_numdjc,mosek.iinfitem.mio_numdpowcones,mosek.iinfitem.mio_numint,mosek.iinfitem.mio_numintconevar,mosek.iinfitem.mio_numpexpcones,mosek.iinfitem.mio_numppowcones,mosek.iinfitem.mio_numqcones,mosek.iinfitem.mio_numrqcones,mosek.iinfitem.mio_numvar,mosek.iinfitem.mio_obj_bound_defined,mosek.iinfitem.mio_presolved_numbin,mosek.iinfitem.mio_presolved_numbinconevar,mosek.iinfitem.mio_presolved_numcon,mosek.iinfitem.mio_presolved_numcone,mosek.iinfitem.mio_presolved_numconevar,mosek.iinfitem.mio_presolved_numcont,mosek.iinfitem.mio_presolved_numcontconevar,mosek.iinfitem.mio_presolved_numdexpcones,mosek.iinfitem.mio_presolved_numdjc,mosek.iinfitem.mio_presolved_numdpowcones,mosek.iinfitem.mio_presolved_numint,mosek.iinfitem.mio_presolved_numintconevar,mosek.iinfitem.mio_presolved_numpexpcones,mosek.iinfitem.mio_presolved_numppowcones,mosek.iinfitem.mio_presolved_numqcones,mosek.iinfitem.mio_presolved_numrqcones,mosek.iinfitem.mio_presolved_numvar,mosek.iinfitem.mio_relgap_satisfied,mosek.iinfitem.mio_total_num_selected_cuts,mosek.iinfitem.mio_total_num_separated_cuts,mosek.iinfitem.mio_user_obj_cut,mosek.iinfitem.opt_numcon,mosek.iinfitem.opt_numvar,mosek.iinfitem.optimize_response,mosek.iinfitem.presolve_num_primal_perturbations,mosek.iinfitem.purify_dual_success,mosek.iinfitem.purify_primal_success,mosek.iinfitem.rd_numbarvar,mosek.iinfitem.rd_numcon,mosek.iinfitem.rd_numcone,mosek.iinfitem.rd_numintvar,mosek.iinfitem.rd_numq,mosek.iinfitem.rd_numvar,mosek.iinfitem.rd_protype,mosek.iinfitem.sim_dual_deg_iter,mosek.iinfitem.sim_dual_hotstart,mosek.iinfitem.sim_dual_hotstart_lu,mosek.iinfitem.sim_dual_inf_iter,mosek.iinfitem.sim_dual_iter,mosek.iinfitem.sim_numcon,mosek.iinfitem.sim_numvar,mosek.iinfitem.sim_primal_deg_iter,mosek.iinfitem.sim_primal_hotstart,mosek.iinfitem.sim_primal_hotstart_lu,mosek.iinfitem.sim_primal_inf_iter,mosek.iinfitem.sim_primal_iter,mosek.iinfitem.sim_solve_dual,mosek.iinfitem.sol_bas_prosta,mosek.iinfitem.sol_bas_solsta,mosek.iinfitem.sol_itg_prosta,mosek.iinfitem.sol_itg_solsta,mosek.iinfitem.sol_itr_prosta,mosek.iinfitem.sol_itr_solsta,mosek.iinfitem.sto_num_a_realloc ];
    liinfsyms  = [ mosek.liinfitem.ana_pro_scalarized_constraint_matrix_num_columns,mosek.liinfitem.ana_pro_scalarized_constraint_matrix_num_nz,mosek.liinfitem.ana_pro_scalarized_constraint_matrix_num_rows,mosek.liinfitem.bi_clean_iter,mosek.liinfitem.bi_dual_iter,mosek.liinfitem.bi_primal_iter,mosek.liinfitem.folding_bi_dual_iter,mosek.liinfitem.folding_bi_optimizer_iter,mosek.liinfitem.folding_bi_primal_iter,mosek.liinfitem.intpnt_factor_num_nz,mosek.liinfitem.mio_anz,mosek.liinfitem.mio_final_anz,mosek.liinfitem.mio_intpnt_iter,mosek.liinfitem.mio_num_dual_illposed_cer,mosek.liinfitem.mio_num_prim_illposed_cer,mosek.liinfitem.mio_presolved_anz,mosek.liinfitem.mio_simplex_iter,mosek.liinfitem.rd_numacc,mosek.liinfitem.rd_numanz,mosek.liinfitem.rd_numdjc,mosek.liinfitem.rd_numqnz,mosek.liinfitem.simplex_iter ];
    @staticmethod
    def _getdouinf(infname):
      idx = bisect_left(SolverInfo.dinfnames, infname)
      if idx != len(SolverInfo.dinfnames) and SolverInfo.dinfnames[idx] == infname:
        return SolverInfo.dinfsyms[idx]
      else:
        return None
    @staticmethod
    def _getintinf(infname):
      idx = bisect_left(SolverInfo.iinfnames, infname)
      if idx != len(SolverInfo.iinfnames) and SolverInfo.iinfnames[idx] == infname:
        return SolverInfo.iinfsyms[idx]
      else:
        return None
    @staticmethod
    def _getlintinf(infname):
      idx = bisect_left(SolverInfo.liinfnames, infname)
      if idx != len(SolverInfo.liinfnames) and SolverInfo.liinfnames[idx] == infname:
        return SolverInfo.liinfsyms[idx]
      else:
        return None
  return SolverInfo
mosek_fusion_SolverInfo=__mk_mosek_fusion_SolverInfo()
def __arg_match_Emosek_4fusion_4PSDKey_2__(v):
  return isinstance(v,mosek_fusion_PSDKey)
def __arg_alt_match_Emosek_4fusion_4PSDKey_2__(v):
  return isinstance(v,mosek_fusion_PSDKey)
def __arg_match_Lmosek_4fusion_4PSDConstraint_2__(v):
  return v is None or isinstance(v,mosek_fusion_PSDConstraint)
def __arg_alt_match_Lmosek_4fusion_4PSDConstraint_2__(v):
  return __arg_match_Lmosek_4fusion_4PSDConstraint_2__(v)
def __arg_match_Lmosek_4fusion_4RangedConstraint_2__(v):
  return v is None or isinstance(v,mosek_fusion_RangedConstraint)
def __arg_alt_match_Lmosek_4fusion_4RangedConstraint_2__(v):
  return __arg_match_Lmosek_4fusion_4RangedConstraint_2__(v)
def __arg_match__3Lmosek_4fusion_4Variable_2__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([isinstance(i,mosek_fusion_Variable) for i in v.flatten()])
def __arg_alt_match__3Lmosek_4fusion_4Variable_2__(v):
  return __arg_match__3Lmosek_4fusion_4Variable_2__(v) or __arg_match_listof__(v,__arg_alt_match_Lmosek_4fusion_4Variable_2__)
def __arg_match_LSystem_4DataStream_2__(v):
  return v is None or isinstance(v,object)
def __arg_alt_match_LSystem_4DataStream_2__(v):
  return __arg_match_LSystem_4DataStream_2__(v)
def __arg_match_Lmosek_4fusion_4ExprRangeDomain_2__(v):
  return v is None or isinstance(v,mosek_fusion_ExprRangeDomain)
def __arg_alt_match_Lmosek_4fusion_4ExprRangeDomain_2__(v):
  return __arg_match_Lmosek_4fusion_4ExprRangeDomain_2__(v)
def __arg_match_D__(v):
  return isinstance(v,numpy.float64) or isinstance(v,float) or isinstance(v,int) or isinstance(v,numpy.int32) or isinstance(v,numpy.int64)
def __arg_alt_match_D__(v):
  return __arg_match_D__(v)
def __arg_match_Emosek_4fusion_4SolutionType_2__(v):
  return isinstance(v,mosek_fusion_SolutionType)
def __arg_alt_match_Emosek_4fusion_4SolutionType_2__(v):
  return isinstance(v,mosek_fusion_SolutionType)
def __arg_match_Lmosek_4fusion_4RangedVariable_2__(v):
  return v is None or isinstance(v,mosek_fusion_RangedVariable)
def __arg_alt_match_Lmosek_4fusion_4RangedVariable_2__(v):
  return __arg_match_Lmosek_4fusion_4RangedVariable_2__(v)
def __arg_match__3Lmosek_4fusion_4Term_2__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([isinstance(i,mosek_fusion_Term) for i in v.flatten()])
def __arg_alt_match__3Lmosek_4fusion_4Term_2__(v):
  return __arg_match__3Lmosek_4fusion_4Term_2__(v) or __arg_match_listof__(v,__arg_alt_match_Lmosek_4fusion_4Term_2__)
def __arg_match_Lmosek_4fusion_4ExprPSDDomain_2__(v):
  return v is None or isinstance(v,mosek_fusion_ExprPSDDomain)
def __arg_alt_match_Lmosek_4fusion_4ExprPSDDomain_2__(v):
  return __arg_match_Lmosek_4fusion_4ExprPSDDomain_2__(v)
def __arg_match_Lmosek_4fusion_4NDSparseArray_2__(v):
  return v is None or isinstance(v,mosek_fusion_NDSparseArray)
def __arg_alt_match_Lmosek_4fusion_4NDSparseArray_2__(v):
  return __arg_match_Lmosek_4fusion_4NDSparseArray_2__(v)
def __arg_match_Lmosek_4fusion_4SliceConstraint_2__(v):
  return v is None or isinstance(v,mosek_fusion_SliceConstraint)
def __arg_alt_match_Lmosek_4fusion_4SliceConstraint_2__(v):
  return __arg_match_Lmosek_4fusion_4SliceConstraint_2__(v)
def __arg_match_Emosek_4fusion_4ProblemStatus_2__(v):
  return isinstance(v,mosek_fusion_ProblemStatus)
def __arg_alt_match_Emosek_4fusion_4ProblemStatus_2__(v):
  return isinstance(v,mosek_fusion_ProblemStatus)
def __arg_match__3_3D__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([__arg_match__3D__(i) for i in v.flatten()])
def __arg_alt_match__3_3D__(v):
  return __arg_match__3_3D__(v) or __arg_match_listof__(v,__arg_alt_match__3D__)
def __arg_match_Lmosek_4fusion_4DJCDomain_2__(v):
  return v is None or isinstance(v,mosek_fusion_DJCDomain)
def __arg_alt_match_Lmosek_4fusion_4DJCDomain_2__(v):
  return __arg_match_Lmosek_4fusion_4DJCDomain_2__(v)
def __arg_match_Lmosek_4fusion_4ModelVariable_2__(v):
  return v is None or isinstance(v,mosek_fusion_ModelVariable)
def __arg_alt_match_Lmosek_4fusion_4ModelVariable_2__(v):
  return __arg_match_Lmosek_4fusion_4ModelVariable_2__(v)
def __arg_match_Lmosek_4fusion_4LinkedBlocks_2__(v):
  return v is None or isinstance(v,mosek_fusion_LinkedBlocks)
def __arg_alt_match_Lmosek_4fusion_4LinkedBlocks_2__(v):
  return __arg_match_Lmosek_4fusion_4LinkedBlocks_2__(v)
def __arg_match__3Lmosek_4fusion_4DJCDomain_2__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([isinstance(i,mosek_fusion_DJCDomain) for i in v.flatten()])
def __arg_alt_match__3Lmosek_4fusion_4DJCDomain_2__(v):
  return __arg_match__3Lmosek_4fusion_4DJCDomain_2__(v) or __arg_match_listof__(v,__arg_alt_match_Lmosek_4fusion_4DJCDomain_2__)
def __arg_match__3_3Lmosek_4fusion_4Parameter_2__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([__arg_match__3Lmosek_4fusion_4Parameter_2__(i) for i in v.flatten()])
def __arg_alt_match__3_3Lmosek_4fusion_4Parameter_2__(v):
  return __arg_match__3_3Lmosek_4fusion_4Parameter_2__(v) or __arg_match_listof__(v,__arg_alt_match__3Lmosek_4fusion_4Parameter_2__)
def __arg_match_Lmosek_4fusion_4SliceVariable_2__(v):
  return v is None or isinstance(v,mosek_fusion_SliceVariable)
def __arg_alt_match_Lmosek_4fusion_4SliceVariable_2__(v):
  return __arg_match_Lmosek_4fusion_4SliceVariable_2__(v)
def __arg_match__3Lmosek_4fusion_4Expression_2__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([isinstance(i,mosek_fusion_Expression) for i in v.flatten()])
def __arg_alt_match__3Lmosek_4fusion_4Expression_2__(v):
  return __arg_match__3Lmosek_4fusion_4Expression_2__(v) or __arg_match_listof__(v,__arg_alt_match_Lmosek_4fusion_4Expression_2__)
def __arg_match_J__(v):
  return isinstance(v,numpy.int64) or isinstance(v,int) or isinstance(v,numpy.int32)
def __arg_alt_match_J__(v):
  return __arg_match_J__(v)
def __arg_match_Lmosek_4fusion_4DisjunctionTerms_2__(v):
  return v is None or isinstance(v,mosek_fusion_DisjunctionTerms)
def __arg_alt_match_Lmosek_4fusion_4DisjunctionTerms_2__(v):
  return __arg_match_Lmosek_4fusion_4DisjunctionTerms_2__(v)
def __arg_match_Lmosek_4fusion_4Constraint_2__(v):
  return v is None or isinstance(v,mosek_fusion_Constraint)
def __arg_alt_match_Lmosek_4fusion_4Constraint_2__(v):
  return __arg_match_Lmosek_4fusion_4Constraint_2__(v)
def __arg_match__3J__(v):
  return v is None or (isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(numpy.int64))
def __arg_alt_match__3J__(v):
  return __arg_match__3J__(v) or __arg_match_listof__(v,__arg_alt_match_J__)
def __arg_match__3_3J__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([__arg_match__3J__(i) for i in v.flatten()])
def __arg_alt_match__3_3J__(v):
  return __arg_match__3_3J__(v) or __arg_match_listof__(v,__arg_alt_match__3J__)
def __arg_match_Lmosek_4fusion_4LinearPSDConstraint_2__(v):
  return v is None or isinstance(v,mosek_fusion_LinearPSDConstraint)
def __arg_alt_match_Lmosek_4fusion_4LinearPSDConstraint_2__(v):
  return __arg_match_Lmosek_4fusion_4LinearPSDConstraint_2__(v)
def __arg_match__3Lmosek_4fusion_4ExprDomain_2__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([isinstance(i,mosek_fusion_ExprDomain) for i in v.flatten()])
def __arg_alt_match__3Lmosek_4fusion_4ExprDomain_2__(v):
  return __arg_match__3Lmosek_4fusion_4ExprDomain_2__(v) or __arg_match_listof__(v,__arg_alt_match_Lmosek_4fusion_4ExprDomain_2__)
def __arg_match_Lmosek_4fusion_4LinearPSDVariable_2__(v):
  return v is None or isinstance(v,mosek_fusion_LinearPSDVariable)
def __arg_alt_match_Lmosek_4fusion_4LinearPSDVariable_2__(v):
  return __arg_match_Lmosek_4fusion_4LinearPSDVariable_2__(v)
def __arg_match_Lmosek_4fusion_4SymmetricMatrix_2__(v):
  return v is None or isinstance(v,mosek_fusion_SymmetricMatrix)
def __arg_alt_match_Lmosek_4fusion_4SymmetricMatrix_2__(v):
  return __arg_match_Lmosek_4fusion_4SymmetricMatrix_2__(v)
def __arg_match__3D__(v):
  return v is None or (isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(numpy.float64))
def __arg_alt_match__3D__(v):
  return __arg_match__3D__(v) or __arg_match_listof__(v,__arg_alt_match_D__)
def __arg_match_Lmosek_4fusion_4ConicVariable_2__(v):
  return v is None or isinstance(v,mosek_fusion_ConicVariable)
def __arg_alt_match_Lmosek_4fusion_4ConicVariable_2__(v):
  return __arg_match_Lmosek_4fusion_4ConicVariable_2__(v)
def __arg_match__3I__(v):
  return v is None or (isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(numpy.int32))
def __arg_alt_match__3I__(v):
  return __arg_match__3I__(v) or __arg_match_listof__(v,__arg_alt_match_I__) or isinstance(v,range)
def __arg_match__3_5D__(v):
  return v is None or (isinstance(v,numpy.ndarray) and v.ndim == 2 and v.dtype == numpy.dtype(numpy.float64))
def __arg_alt_match__3_5D__(v):
  return _monty.arg_match_sloppy_array(v,__arg_alt_match_D__,2)
def __arg_match_Lmosek_4fusion_4LinearVariable_2__(v):
  return v is None or isinstance(v,mosek_fusion_LinearVariable)
def __arg_alt_match_Lmosek_4fusion_4LinearVariable_2__(v):
  return __arg_match_Lmosek_4fusion_4LinearVariable_2__(v)
def __arg_match__3Lmosek_4fusion_4Model_2__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([isinstance(i,mosek_fusion_Model) for i in v.flatten()])
def __arg_alt_match__3Lmosek_4fusion_4Model_2__(v):
  return __arg_match__3Lmosek_4fusion_4Model_2__(v) or __arg_match_listof__(v,__arg_alt_match_Lmosek_4fusion_4Model_2__)
def __arg_match_Lmosek_4fusion_4RangeDomain_2__(v):
  return v is None or isinstance(v,mosek_fusion_RangeDomain)
def __arg_alt_match_Lmosek_4fusion_4RangeDomain_2__(v):
  return __arg_match_Lmosek_4fusion_4RangeDomain_2__(v)
def __arg_match_LSystem_4StreamWriter_2__(v):
  return v is None or isinstance(v,object)
def __arg_alt_match_LSystem_4StreamWriter_2__(v):
  return __arg_match_LSystem_4StreamWriter_2__(v)
def __arg_match_Lmosek_4fusion_4RowBlockManager_2__(v):
  return v is None or isinstance(v,mosek_fusion_RowBlockManager)
def __arg_alt_match_Lmosek_4fusion_4RowBlockManager_2__(v):
  return __arg_match_Lmosek_4fusion_4RowBlockManager_2__(v)
def __arg_match_I__(v):
  return isinstance(v,numpy.int32) or isinstance(v,numpy.int64) or isinstance(v,int)
def __arg_alt_match_I__(v):
  return __arg_match_I__(v)
def __arg_match_Lmosek_4fusion_4ExprLinearDomain_2__(v):
  return v is None or isinstance(v,mosek_fusion_ExprLinearDomain)
def __arg_alt_match_Lmosek_4fusion_4ExprLinearDomain_2__(v):
  return __arg_match_Lmosek_4fusion_4ExprLinearDomain_2__(v)
def __arg_match__3S__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == object and all([isinstance(i0,str) for i0 in v ])
def __arg_alt_match__3S__(v):
  return __arg_match__3S__(v) or __arg_match_listof__(v,__arg_alt_match_S__)
def __arg_match_Lmosek_4fusion_4ExprConicDomain_2__(v):
  return v is None or isinstance(v,mosek_fusion_ExprConicDomain)
def __arg_alt_match_Lmosek_4fusion_4ExprConicDomain_2__(v):
  return __arg_match_Lmosek_4fusion_4ExprConicDomain_2__(v)
def __arg_match_Lmosek_4fusion_4PSDDomain_2__(v):
  return v is None or isinstance(v,mosek_fusion_PSDDomain)
def __arg_alt_match_Lmosek_4fusion_4PSDDomain_2__(v):
  return __arg_match_Lmosek_4fusion_4PSDDomain_2__(v)
def __arg_match__3_5I__(v):
  return v is None or (isinstance(v,numpy.ndarray) and v.ndim == 2 and v.dtype == numpy.dtype(numpy.int32))
def __arg_alt_match__3_5I__(v):
  return _monty.arg_match_sloppy_array(v,__arg_alt_match_I__,2)
def __arg_match_Lmosek_4fusion_4LinearDomain_2__(v):
  return v is None or isinstance(v,mosek_fusion_LinearDomain)
def __arg_alt_match_Lmosek_4fusion_4LinearDomain_2__(v):
  return __arg_match_Lmosek_4fusion_4LinearDomain_2__(v)
def __arg_match_Lmosek_4fusion_4LinkedInts_2__(v):
  return v is None or isinstance(v,mosek_fusion_LinkedInts)
def __arg_alt_match_Lmosek_4fusion_4LinkedInts_2__(v):
  return __arg_match_Lmosek_4fusion_4LinkedInts_2__(v)
def __arg_match_Emosek_4fusion_4DJCDomainType_2__(v):
  return isinstance(v,mosek_fusion_DJCDomainType)
def __arg_alt_match_Emosek_4fusion_4DJCDomainType_2__(v):
  return isinstance(v,mosek_fusion_DJCDomainType)
def __arg_match_Emosek_4fusion_4SolutionStatus_2__(v):
  return isinstance(v,mosek_fusion_SolutionStatus)
def __arg_alt_match_Emosek_4fusion_4SolutionStatus_2__(v):
  return isinstance(v,mosek_fusion_SolutionStatus)
def __arg_match_LSystem_4CallbackHandler_2__(v):
  return v is None or isinstance(v,object)
def __arg_alt_match_LSystem_4CallbackHandler_2__(v):
  return __arg_match_LSystem_4CallbackHandler_2__(v)
def __arg_match_Lmosek_4fusion_4Matrix_2__(v):
  return v is None or isinstance(v,mosek_fusion_Matrix)
def __arg_alt_match_Lmosek_4fusion_4Matrix_2__(v):
  return __arg_match_Lmosek_4fusion_4Matrix_2__(v)
def __arg_match_Emosek_4fusion_4AccSolutionStatus_2__(v):
  return isinstance(v,mosek_fusion_AccSolutionStatus)
def __arg_alt_match_Emosek_4fusion_4AccSolutionStatus_2__(v):
  return isinstance(v,mosek_fusion_AccSolutionStatus)
def __arg_match__3Lmosek_4fusion_4Constraint_2__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([isinstance(i,mosek_fusion_Constraint) for i in v.flatten()])
def __arg_alt_match__3Lmosek_4fusion_4Constraint_2__(v):
  return __arg_match__3Lmosek_4fusion_4Constraint_2__(v) or __arg_match_listof__(v,__arg_alt_match_Lmosek_4fusion_4Constraint_2__)
def __arg_match_Lmosek_4fusion_4Parameter_2__(v):
  return v is None or isinstance(v,mosek_fusion_Parameter)
def __arg_alt_match_Lmosek_4fusion_4Parameter_2__(v):
  return __arg_match_Lmosek_4fusion_4Parameter_2__(v)
def __arg_match_Lmosek_4fusion_4ModelConstraint_2__(v):
  return v is None or isinstance(v,mosek_fusion_ModelConstraint)
def __arg_alt_match_Lmosek_4fusion_4ModelConstraint_2__(v):
  return __arg_match_Lmosek_4fusion_4ModelConstraint_2__(v)
def __arg_match_Lmosek_4fusion_4PSDVariable_2__(v):
  return v is None or isinstance(v,mosek_fusion_PSDVariable)
def __arg_alt_match_Lmosek_4fusion_4PSDVariable_2__(v):
  return __arg_match_Lmosek_4fusion_4PSDVariable_2__(v)
def __arg_match_Lmosek_4fusion_4Term_2__(v):
  return v is None or isinstance(v,mosek_fusion_Term)
def __arg_alt_match_Lmosek_4fusion_4Term_2__(v):
  return __arg_match_Lmosek_4fusion_4Term_2__(v)
def __arg_match__3_3S__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([__arg_match__3S__(i) for i in v.flatten()])
def __arg_alt_match__3_3S__(v):
  return __arg_match__3_3S__(v) or __arg_match_listof__(v,__arg_alt_match__3S__)
def __arg_match_Lmosek_4fusion_4Utils_4StringBuffer_2__(v):
  return v is None or isinstance(v,mosek_fusion_Utils_StringBuffer)
def __arg_alt_match_Lmosek_4fusion_4Utils_4StringBuffer_2__(v):
  return __arg_match_Lmosek_4fusion_4Utils_4StringBuffer_2__(v)
def __arg_match__3_3I__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([__arg_match__3I__(i) for i in v.flatten()])
def __arg_alt_match__3_3I__(v):
  return __arg_match__3_3I__(v) or __arg_match_listof__(v,__arg_alt_match__3I__)
def __arg_match_Lmosek_4fusion_4BaseVariable_2__(v):
  return v is None or isinstance(v,mosek_fusion_BaseVariable)
def __arg_alt_match_Lmosek_4fusion_4BaseVariable_2__(v):
  return __arg_match_Lmosek_4fusion_4BaseVariable_2__(v)
def __arg_match_Lmosek_4fusion_4Model_2__(v):
  return v is None or isinstance(v,mosek_fusion_Model)
def __arg_alt_match_Lmosek_4fusion_4Model_2__(v):
  return __arg_match_Lmosek_4fusion_4Model_2__(v)
def __arg_match_Lmosek_4fusion_4FusionException_2__(v):
  return v is None or isinstance(v,mosek_fusion_FusionException)
def __arg_alt_match_Lmosek_4fusion_4FusionException_2__(v):
  return __arg_match_Lmosek_4fusion_4FusionException_2__(v)
def __arg_match_Lmosek_4fusion_4ExprDomain_2__(v):
  return v is None or isinstance(v,mosek_fusion_ExprDomain)
def __arg_alt_match_Lmosek_4fusion_4ExprDomain_2__(v):
  return __arg_match_Lmosek_4fusion_4ExprDomain_2__(v)
def __arg_match_Lmosek_4fusion_4ParameterImpl_2__(v):
  return v is None or isinstance(v,mosek_fusion_ParameterImpl)
def __arg_alt_match_Lmosek_4fusion_4ParameterImpl_2__(v):
  return __arg_match_Lmosek_4fusion_4ParameterImpl_2__(v)
def __arg_match_Lmosek_4fusion_4SolutionStruct_2__(v):
  return v is None or isinstance(v,mosek_fusion_SolutionStruct)
def __arg_alt_match_Lmosek_4fusion_4SolutionStruct_2__(v):
  return __arg_match_Lmosek_4fusion_4SolutionStruct_2__(v)
def __arg_match_Emosek_4fusion_4RelationKey_2__(v):
  return isinstance(v,mosek_fusion_RelationKey)
def __arg_alt_match_Emosek_4fusion_4RelationKey_2__(v):
  return isinstance(v,mosek_fusion_RelationKey)
def __arg_match__3_3Lmosek_4fusion_4Expression_2__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([__arg_match__3Lmosek_4fusion_4Expression_2__(i) for i in v.flatten()])
def __arg_alt_match__3_3Lmosek_4fusion_4Expression_2__(v):
  return __arg_match__3_3Lmosek_4fusion_4Expression_2__(v) or __arg_match_listof__(v,__arg_alt_match__3Lmosek_4fusion_4Expression_2__)
def __arg_match__3Lmosek_4fusion_4Parameter_2__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([isinstance(i,mosek_fusion_Parameter) for i in v.flatten()])
def __arg_alt_match__3Lmosek_4fusion_4Parameter_2__(v):
  return __arg_match__3Lmosek_4fusion_4Parameter_2__(v) or __arg_match_listof__(v,__arg_alt_match_Lmosek_4fusion_4Parameter_2__)
def __arg_match__3_3Lmosek_4fusion_4Matrix_2__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([__arg_match__3Lmosek_4fusion_4Matrix_2__(i) for i in v.flatten()])
def __arg_alt_match__3_3Lmosek_4fusion_4Matrix_2__(v):
  return __arg_match__3_3Lmosek_4fusion_4Matrix_2__(v) or __arg_match_listof__(v,__arg_alt_match__3Lmosek_4fusion_4Matrix_2__)
def __arg_match_Lmosek_4fusion_4LinearConstraint_2__(v):
  return v is None or isinstance(v,mosek_fusion_LinearConstraint)
def __arg_alt_match_Lmosek_4fusion_4LinearConstraint_2__(v):
  return __arg_match_Lmosek_4fusion_4LinearConstraint_2__(v)
def __arg_match__3Lmosek_4fusion_4SimpleTerm_2__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([isinstance(i,mosek_fusion_SimpleTerm) for i in v.flatten()])
def __arg_alt_match__3Lmosek_4fusion_4SimpleTerm_2__(v):
  return __arg_match__3Lmosek_4fusion_4SimpleTerm_2__(v) or __arg_match_listof__(v,__arg_alt_match_Lmosek_4fusion_4SimpleTerm_2__)
def __arg_match_Emosek_4fusion_4QConeKey_2__(v):
  return isinstance(v,mosek_fusion_QConeKey)
def __arg_alt_match_Emosek_4fusion_4QConeKey_2__(v):
  return isinstance(v,mosek_fusion_QConeKey)
def __arg_match_Lmosek_4fusion_4SimpleTerm_2__(v):
  return v is None or isinstance(v,mosek_fusion_SimpleTerm)
def __arg_alt_match_Lmosek_4fusion_4SimpleTerm_2__(v):
  return __arg_match_Lmosek_4fusion_4SimpleTerm_2__(v)
def __arg_match_Lmosek_4fusion_4Variable_2__(v):
  return v is None or isinstance(v,mosek_fusion_Variable)
def __arg_alt_match_Lmosek_4fusion_4Variable_2__(v):
  return __arg_match_Lmosek_4fusion_4Variable_2__(v)
def __arg_match_LSystem_4DataCallbackHandler_2__(v):
  return v is None or isinstance(v,object)
def __arg_alt_match_LSystem_4DataCallbackHandler_2__(v):
  return __arg_match_LSystem_4DataCallbackHandler_2__(v)
def __arg_match_Lmosek_4fusion_4Expression_2__(v):
  return v is None or isinstance(v,mosek_fusion_Expression)
def __arg_alt_match_Lmosek_4fusion_4Expression_2__(v):
  return __arg_match_Lmosek_4fusion_4Expression_2__(v)
def __arg_match_Lmosek_4fusion_4WorkStack_2__(v):
  return v is None or isinstance(v,mosek_fusion_WorkStack)
def __arg_alt_match_Lmosek_4fusion_4WorkStack_2__(v):
  return __arg_match_Lmosek_4fusion_4WorkStack_2__(v)
def __arg_match_Emosek_4fusion_4ObjectiveSense_2__(v):
  return isinstance(v,mosek_fusion_ObjectiveSense)
def __arg_alt_match_Emosek_4fusion_4ObjectiveSense_2__(v):
  return isinstance(v,mosek_fusion_ObjectiveSense)
def __arg_match__3_3Lmosek_4fusion_4Variable_2__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([__arg_match__3Lmosek_4fusion_4Variable_2__(i) for i in v.flatten()])
def __arg_alt_match__3_3Lmosek_4fusion_4Variable_2__(v):
  return __arg_match__3_3Lmosek_4fusion_4Variable_2__(v) or __arg_match_listof__(v,__arg_alt_match__3Lmosek_4fusion_4Variable_2__)
def __arg_match_Lmosek_4fusion_4ConicConstraint_2__(v):
  return v is None or isinstance(v,mosek_fusion_ConicConstraint)
def __arg_alt_match_Lmosek_4fusion_4ConicConstraint_2__(v):
  return __arg_match_Lmosek_4fusion_4ConicConstraint_2__(v)
def __arg_match__3Lmosek_4fusion_4Matrix_2__(v):
  return isinstance(v,numpy.ndarray) and v.ndim == 1 and v.dtype == numpy.dtype(object) and all([isinstance(i,mosek_fusion_Matrix) for i in v.flatten()])
def __arg_alt_match__3Lmosek_4fusion_4Matrix_2__(v):
  return __arg_match__3Lmosek_4fusion_4Matrix_2__(v) or __arg_match_listof__(v,__arg_alt_match_Lmosek_4fusion_4Matrix_2__)
def __arg_match_Lmosek_4fusion_4ConeDomain_2__(v):
  return v is None or isinstance(v,mosek_fusion_ConeDomain)
def __arg_alt_match_Lmosek_4fusion_4ConeDomain_2__(v):
  return __arg_match_Lmosek_4fusion_4ConeDomain_2__(v)
def __arg_match_Z__(v):
  return isinstance(v,bool) or isinstance(v,numpy.bool_)
def __arg_alt_match_Z__(v):
  return __arg_match_Z__(v)
def __arg_match_S__(v):
  return isinstance(v,str)
def __arg_alt_match_S__(v):
  return __arg_match_S__(v)
def __arg_match_listof__(v,f): return isinstance(v,list) and all([ f(i) for i in v])
import mosek
import mosek.fusion
import mosek.fusion.Utils
